容器类序列 c++

发布于 2024-12-07 11:57:57 字数 5473 浏览 0 评论 0原文

我是 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

感谢您抽出时间,

这是用于对我进行评分的sequence_exam 文件的链接 www-cs.ccny .cuny.edu/~esther/CSC212/HW/sequence_exam.cxx。当我使用 jgrasp 并编译和链接头文件、实现文件和考试代码时,我的所有函数都会得到对 main_savitch_3::sequence 的未定义引用。我编译错了吗?否则我的实现可以完美编译

I am new to programming in c++ so can you please help me out? My code doesn't compile
and I can't figure out the errors. This is the implementation file I wrote :

# 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];}

}

Here is the header file provided for my homework

// 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

These are the mistakes the compiler gives me. How can I fix them and are there any logical errors in my code?
Mistakes

Thank you for your time

this is the link to the sequence_exam file that will be used to grade me www-cs.ccny.cuny.edu/~esther/CSC212/HW/sequence_exam.cxx. when i use jgrasp and compile and link the header file, the implementation file, and the exam code i get undefined reference to main_savitch_3::sequence to all my functions. Am i compiling it wrong? Otherwise my implementation compiles perfectly

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

电影里的梦 2024-12-14 11:57:57

你应该先仔细看看,但这是你的最大错误;)

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 限定符” ,这意味着您不能声明非成员函数 const,因为 const 用于保护数据成员,而非类函数没有数据成员。

You should look around closer first, but here's the top error for you ;)

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

should be

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

Also,

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

should be:

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

the way you had it, it wasn't a member function - so it said "non-member function cannot have cv-qualifier, meaning you cant declare a non-member function const because const is for protecting data members and non-class functions don't have data members.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文