主题:第一次使用运算符重载,出现大量错误,希望大家可以帮帮忙修改。
编写一个程序,使用类存储字符集合,可以用运算符添加删除字符,也可以用运算符将两个集合相加、相减。
下面为我自己编写的程序,出现了24个错误。
#include<iostream>
#include<cstring>
using namespace std;
class Set{
char len[10];
public:
bool isMember(char word);
Set operator+(Set set2);
Set operator-(Set set2);
Set operator+(char word);
Set operator-(char word);
void show(){
int i;
for(i=0;len[i];i++)cout<<len[i];
cout<<"\n";
}
};
bool Set::isMember(char word){
int i;
for(i=0;len[i];i++){
if(word==len[i]){
cout<<"字符集合中已含有此字符。"<<"\n";
return false;
}
}
cout<<"字符集合中没含有此字符。"<<"\n";
return true;
}
Set::operator+(char word){
int i;
i=strlen(len);
if(isMember(word))len[i]=word;
return *this;
}
Set::operator-(char word){
int i,t[10],n=0;
if(!isMember(word)){
for(i=0;len[i];i++){
if(len[i]==word){
t[n]=i;
n++;
}
}
for(n;n>=0;n--){
for(t[n];len[t[n]];t[n]++)len[t[n]]=len[t[n]+1];
}
}
return *this;
}
Set::operator+(Set set2){
Set set3;
int i,t;
for(i=0;len[i];i++)set3.len[i]=len[i];
for(t=0;set2.len[t];t++)set3+set2.len[t];
return set3;
}
Set::operator-(Set set2){
Set set3;
int i,t;
for(i=0;len[i];i++)set3.len[i]=len[i];
for(i=0;set2.len[i];i++)set3-set2.len[i];
return set3;
}
int main(){
Set set1,set2,set3,set4;
set1+'a'+'b'+'c'+'d';
set1.show();
set2+'c'+'d'+'e'+'f';
set2.show();
set1-'a';
set1.show();
set2-'c';
set2.show();
set3=set1+set2;
set3.show();
set4=set1-set2;
set4.show();
return 0;
}
下面为我自己编写的程序,出现了24个错误。
#include<iostream>
#include<cstring>
using namespace std;
class Set{
char len[10];
public:
bool isMember(char word);
Set operator+(Set set2);
Set operator-(Set set2);
Set operator+(char word);
Set operator-(char word);
void show(){
int i;
for(i=0;len[i];i++)cout<<len[i];
cout<<"\n";
}
};
bool Set::isMember(char word){
int i;
for(i=0;len[i];i++){
if(word==len[i]){
cout<<"字符集合中已含有此字符。"<<"\n";
return false;
}
}
cout<<"字符集合中没含有此字符。"<<"\n";
return true;
}
Set::operator+(char word){
int i;
i=strlen(len);
if(isMember(word))len[i]=word;
return *this;
}
Set::operator-(char word){
int i,t[10],n=0;
if(!isMember(word)){
for(i=0;len[i];i++){
if(len[i]==word){
t[n]=i;
n++;
}
}
for(n;n>=0;n--){
for(t[n];len[t[n]];t[n]++)len[t[n]]=len[t[n]+1];
}
}
return *this;
}
Set::operator+(Set set2){
Set set3;
int i,t;
for(i=0;len[i];i++)set3.len[i]=len[i];
for(t=0;set2.len[t];t++)set3+set2.len[t];
return set3;
}
Set::operator-(Set set2){
Set set3;
int i,t;
for(i=0;len[i];i++)set3.len[i]=len[i];
for(i=0;set2.len[i];i++)set3-set2.len[i];
return set3;
}
int main(){
Set set1,set2,set3,set4;
set1+'a'+'b'+'c'+'d';
set1.show();
set2+'c'+'d'+'e'+'f';
set2.show();
set1-'a';
set1.show();
set2-'c';
set2.show();
set3=set1+set2;
set3.show();
set4=set1-set2;
set4.show();
return 0;
}