/*设计一个类,用于对字符串进行管理。要求:
(1)在定义对象时,能够确定字符串的最大长度并清空字符串。
(2)定义成员函数input, 用于从键盘为字符串输入数据。
(3)定义运算符重载函数,用于判断两个对象中的字符串是否相同。
(4)定义成员函数exchange,用于互换字符串中ASCII码最大和最小的字符(需考虑字符串中存在多个最大和最小字符的情况)。
(5)定义成员函数disp,用于显示字符串。
(6)定义main函数,合理地调用上述每个函数。*/
#include<iostream>
#include<string.h>
#include<Windows.h>
using namespace std;
class Cstring
{
private:
char *p;
int num;
public:
Cstring(int n);
~Cstring();
void input();
bool operator==(const Cstring &str);
void exchange();
void disp();
};
Cstring::Cstring(int n)
{
num=n>0?n:0;
p=new char[num+1];
memset(p,0,sizeof(num+1));
}
Cstring::~Cstring()
{
delete []p;
}
void Cstring::input()
{
cout<<"请输入"<<num<<"个长度的字符串:"<<endl;
for(int i=0;i<num;i++)
{
cin>>p[i];
}
}
bool Cstring::operator==(const Cstring &str)
{
int flag=1;
for(int i=0;i<num;i++)
{
if(p[i]!=str.p[i])
flag=0;
}
if(flag==1)
cout<<"两个对象中的字符串相同!"<<endl;
else
cout<<"两个对象中的字符串不同!"<<endl;
}
void Cstring::exchange()
{
char min_c=p[0];
char max_c=p[0];
for(int i=1;i<num;i++)
{
if(p[i]>max_c)
max_c=p[i];
else if(p[i]<min_c)
min_c=p[i];
}
if(max_c==min_c)
{
cout<<"该字符串字符完全相同,没有最大和最小!"<<endl;
}
else
{
for(int j=0;j<num;j++)
{
if(p[j]==max_c)
p[j]=min_c;
else if(p[j]==min_c)
p[j]=max_c;
}
}
}
void Cstring::disp()
{
for(int i=0;i<num&&p[i]!='\0';i++)
cout<<p[i];
cout<<endl;
}
int main()
{
int n=0;
cout<<"请输入字符串的长度:"<<endl;
cin>>n;
Cstring str1(n);
str1.input();
cout<<"请输入字符串的长度:"<<endl;
cin>>n;
Cstring str2(n);
str2.input();
Cstring str3=str1;
cout<<"str1=str2?"<<endl;
str1==str2;
cout<<"str1=str3?"<<endl;
str1==str3;
cout<<"最大、最小字符调换后的结果为:"<<endl;
str3.exchange();
str3.disp();
}
2019面向对象程序设计 作业3
最新推荐文章于 2019-12-23 14:56:41 发布