2011-09-30 6 views
0

저는 C++ 프로그래밍에 익숙하지 않으므로 도와주십시오. 내 코드는 으로 컴파일되지 않으며 오류를 파악할 수 없습니다. 이 컴파일러는 나에게주는 실수 있습니다컨테이너 클래스 시퀀스 C++

# include <algorithm> 
#include <cassert> 
#include "sequence1.h" // See below 
using namespace std; 

namespace main_savitch_3{ 
const sequence::size_type sequence:: CAPACITY; 

sequence::sequence(){ 
    current_index = 0; 
    used = 0; 
} 
void sequence::start(){ 
    current_index= 0; 

} 
void sequence::advance(){ 
    if (is_item()== true) 
    {current_index++; 
    } 
} 
void sequence::insert(const value_type& entry){ 
    int i; 
    assert (size()< CAPACITY); 
    if (is_item() == false){ 
     current_index=0;} 
    for (i= used, i>current_index,i--){ 
     data[i] = data [i-1];} 
    data[current_index]= entry; 
    used++; 
} 
void sequence:: attach(const value_type& entry){ 
    int i; 
    assert (size()< CAPACITY); 
    if (is_item() == false){ 
     data[used-1]= entry;} 
    for (i= used, i> current_index, i--){ 
     data[i]= data[i+1]; 
    } 
    data[current_index]= entry; 
    used++; 
} 
void sequence::remove_current(){ 
    int i; 
    assert(is_item()== true); 
    for (i= current_index + 1, i< used - 1, i++){ 
     data [i]= data[i+1]; 
     used--; 
    } 

} 
sequence::size_type sequence::size() const{ 
    return used;} 
bool is_item() const { 
    if(current_index< used){ 
     return true;} 
} 
sequence::value_type sequence:: current() const{ 
    return data[current_index];} 

} 

여기 숙제

// FILE: sequence1.h 
/* 
CLASS PROVIDED: sequence (part of the namespace main_savitch_3) 
There is no implementation file provided for this class since it is 
an exercise from Section 3.2 of "Data Structures and Other Objects Using C++" 

TYPEDEFS and MEMBER CONSTANTS for the sequence class: 
typedef ____ value_type 
sequence::value_type is the data type of the items in the sequence. It 
may be any of the C++ built-in types (int, char, etc.), or a class with a 
default constructor, an assignment operator, and a copy constructor. 

typedef ____ size_type 
sequence::size_type is the data type of any variable that keeps track of 
how many items are in a sequence. 

static const size_type CAPACITY = _____ 
sequence::CAPACITY is the maximum number of items that a sequence can hold. 

CONSTRUCTOR for the sequence class: 
sequence() 
Postcondition: The sequence has been initialized as an empty sequence. 

MODIFICATION MEMBER FUNCTIONS for the sequence class: 
void start() 
Postcondition: The first item on the sequence becomes the current item 
(but if the sequence is empty, then there is no current item). 

void advance() 
Precondition: is_item returns true. 
Postcondition: If the current item was already the last item in the 
sequence, then there is no longer any current item. Otherwise, the new 
current item is the item immediately after the original current item. 

void insert(const value_type& entry) 
Precondition: size() < CAPACITY. 
Postcondition: A new copy of entry has been inserted in the sequence 
before the current item. If there was no current item, then the new entry 
has been inserted at the front of the sequence. In either case, the newly 
inserted item is now the current item of the sequence. 

void attach(const value_type& entry) 
Precondition: size() < CAPACITY. 
Postcondition: A new copy of entry has been inserted in the sequence after 
the current item. If there was no current item, then the new entry has 
been attached to the end of the sequence. In either case, the newly 
inserted item is now the current item of the sequence. 

void remove_current() 
Precondition: is_item returns true. 
Postcondition: The current item has been removed from the sequence, and the 
item after this (if there is one) is now the new current item. 

CONSTANT MEMBER FUNCTIONS for the sequence class: 
size_type size() const 
Postcondition: The return value is the number of items in the sequence. 

bool is_item() const 
Postcondition: A true return value indicates that there is a valid 
"current" item that may be retrieved by activating the current 
member function (listed below). A false return value indicates that 
there is no valid current item. 

value_type current() const 
Precondition: is_item() returns true. 
Postcondition: The item returned is the current item in the sequence. 

VALUE SEMANTICS for the sequence class: 
Assignments and the copy constructor may be used with sequence objects. 
*/ 

#ifndef MAIN_SAVITCH_SEQUENCE_H 
#define MAIN_SAVITCH_SEQUENCE_H 
#include <cstdlib> // Provides size_t 

namespace main_savitch_3 
{ 
class sequence 
{ 
public: 
    // TYPEDEFS and MEMBER CONSTANTS 
    typedef double value_type; 
    typedef std::size_t size_type; 
    static const size_type CAPACITY = 30; 
    // CONSTRUCTOR 
    sequence(); 
    // MODIFICATION MEMBER FUNCTIONS 
    void start(); 
    void advance(); 
    void insert(const value_type& entry); 
    void attach(const value_type& entry); 
    void remove_current(); 
    // CONSTANT MEMBER FUNCTIONS 
    size_type size() const; 
    bool is_item() const; 
    value_type current() const; 
private: 
    value_type data[CAPACITY]; 
    size_type used; 
    size_type current_index; 
    }; 
} 

#endif 

에 제공되는 헤더 파일 : 이것은 내가 쓴 구현 파일입니다. 어떻게 해결할 수 있으며 내 코드에 논리적 오류가 있습니까? Mistakes

이이 www-cs.ccny.cuny.edu/~esther/CSC212/HW/sequence_exam.cxx 학년 나에게 사용되는 sequence_exam 파일에 대한 링크가

시간 내 주셔서 감사 . jgrasp를 사용하고 헤더 파일, 구현 파일 및 시험 코드를 컴파일하고 링크하면 main_savitch_3 :: sequence에 대한 정의되지 않은 참조가 모든 내 기능에 적용됩니다. 나는 그것을 잘못 컴파일하고 있는가? 그렇지 않으면 내 구현은 먼저 가까운 주위를 둘러해야 완벽하게

+2

언어의 구문과 형식을 배우는 것으로 시작해야합니다. 좋은 시작이 될 것입니다. – Mansuro

+1

실제로 관련 코드를 입력 한 사람이 내가 본 유일한 사람이라는 점을 +1 할 것입니다. 컴파일러 오류 스크린 샷 : p 실제로 수정 한 내용을 한 번 확인하는 것이 좋습니다. :) –

+1

실제로 나는이 질문이 4 downvotes를 가치가 있다고 생각하지 않는다. OP는 그가 C++의 초보자이며 숙제 (심지어 태그가 지정되지 않았 음)이며 코드와 오류를 모두 제공했다고 썼습니다. 확실히 OP는 언어 구문을 선택해야하지만, 그 자체가 나쁘지 않은 질문입니다. 내 2 센트 .. –

답변

5

컴파일하지만 여기 당신을 위해 가기 오류입니다;

for (i= used, i>current_index,i--){ 

는 또한

for (i = used; i > current_index; i--) 

이어야한다)

bool is_item() const { 
    if(current_index< used){ 
     return true; 
    } 
} 

다음과 같아야합니다.

bool sequence::is_item() const { 
    if(current_index< used){ 
     return true; 
    } 
} 

그런데 멤버 함수가 아니기 때문에 "비 멤버 함수는 cv-qualifier를 가질 수 없다. const는 비 멤버 함수 const를 선언 할 수 없다는 것을 의미한다. const는 데이터 멤버를 보호하기위한 것이다. 비 클래스 함수에는 데이터 멤버가 없습니다.

+0

그래서 다른 논리 오류가 있습니까? – Ivan

+2

컴파일러 오류를 수정하고 얻은 결과를 확인하십시오 - 새로운 질문을 게시하고 결과를 표시하고 문제의 원인을 알려면 이유를 알아낼 수 있습니다. 한 번에 한 가지 문제가 있습니다. 논리적 오류는 런타임이므로 걱정할 필요없이 실행할 수 있습니다. –

+0

이것은 나를 등급 화하기 위해 사용될 sequence_exam 파일의 링크입니다. http://www-cs.ccny.cuny.edu/~esther/CSC212/HW/sequence_exam.cxx. jgrasp를 사용하고 헤더 파일, 구현 파일 및 시험 코드를 컴파일하고 링크하면 main_savitch_3 :: sequence에 대한 정의되지 않은 참조가 모든 내 기능에 적용됩니다. 나는 그것을 잘못 컴파일하고 있는가? 그렇지 않으면 내 구현이 완벽하게 컴파일됩니다. – Ivan

관련 문제