已知任意字符串S1和S2,在串的顺序存储结构上实现S1和S2的比较运算,并返回比较结果。
运行不了帮忙改一改或者重新写一个
#include<iostream>
using namespace std;
class Str
{
public:
void push();
int compare(char *s1, char *s2);
int StrLength(char *str);
void get(char *a1, char *a2);
private:
char *s1=new char[100];
char *s2=new char[100];
};
void Str::get(char *a1, char *a2)
{
a1 = s1;
a2 = s2;
}
void Str::push()
{
cout << "请输入第一个字符串:";
cin >> s1;
cout << "请输入第二个字符串:";
cin >> s2;
}
int Str::StrLength(char *str)
{
int i = 0;
while (str[i] !='\0')
{
i++;
}
return i;
}
int Str::compare(char *s1, char*s2)
{
int i = 0,ret1=0,ret2=0;
while (s1[i] != '\0')
{
if ((int)s1[i] > (int)s2[i])
ret1+=(int)s1[i]-(int)s2[i];
else if ((int)s1[i] < (int)s2[i])
ret2+=(int)s2[i]-(int)s1[i];
else
i++;
}
if(ret1>ret2)
return 1;
else if(ret2>ret1)
return -1;
else if(StrLength(s1) ==StrLength(s2))
return 0;
else
return -1;
}
int main()
{
char *a1=new char[100];
char *a2=new char[100];
Str S;
S.push();
S.get(a1,a2);
switch(S.compare(a1,a2))
{
case 1:
cout << "第一个字符串比第二个字符串大";
break;
case -1:
cout << "第二个字符串比第一个字符串大";
break;
case 0:
cout << "两个字符串相等";
break;
}
return 0;
}