已知任意字符串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;
}
你题目的解答代码如下:
#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;
while (s1[i] != '\0' && s2[i] != '\0')
{
if ((int)s1[i] > (int)s2[i])
return 1;
else if ((int)s1[i] < (int)s2[i])
return -1;
i++;
}
if(StrLength(s1)==StrLength(s2))
return 0;
else if(StrLength(s1)>StrLength(s2))
return 1;
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;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
#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
return 0;
}
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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!