C++ 找错啊!!!高手来,简单的!!

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:07:59
这个程序就是个序列,就是输入字符,然后输入插入的位子,保存到文件,有删除的功能,唉,很简单的,编译能通过,就时运行时不对,真是的,不知道那儿错了,高手帮忙。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

class Sequence
{
public:
bool adds(int,const string&);
bool del(int);
void output() const;
Sequence():last(-1){}
Sequence(const char*);
~Sequence();
protected:
enum{MaxStr=50};
string s[MaxStr];
int last;
private:
string filename;
ifstream in;
ofstream out;
};

bool Sequence::adds(int pos,const string& entry)
{
if(last==MaxStr-1||pos<0||pos>last+1)
return false;
for(int i=last;i>=pos;i--)
s[i+1]=s[i];
s[pos]=entry;
last++;
return true;
}

bool Sequence::del(int pos)
{
if(pos<0||pos>last)
return false;
for(int i=pos;i<last;i++)
s[i]=s[i+1];
last-

我修改了你的输入方式,建议不要使用getline(2次回车,一次结束,一次显示),用cin.getline获取行,cin.getc获取'\n',这样就符合正常的操作了。

另外你的功能只能按顺序插入这个我就不修改了。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

class Sequence
{
public:
bool adds(int,const string&);
bool del(int);
void output() const;
Sequence():last(-1){}
Sequence(const char*);
~Sequence();
protected:
enum{MaxStr=50};
string s[MaxStr];
int last;
private:
string filename;
ifstream in;
ofstream out;
};

bool Sequence::adds(int pos,const string& entry)
{
if(last==MaxStr-1||pos<0||pos>last+1)
return false;
for(int i=last;i>=pos;i--)
s[i+1]=s[i];
s[pos]=entry;
last++;
return true;
}

bool Sequence::del(int pos)
{
if(pos<0||pos>last)
return false;
for