用C++编译,先要求用户输入两个字符串,再判断是不是一样字母,求高手们出手相助~~重酬!

这个题目真不容易读懂,应该是要求用户输入两个字符串,长度都是50,可以是ACSII表格里的任何字符。然后判断这两个字符串是否用相同的字母。但是在做判断时候,必须要忽略除了... 这个题目真不容易读懂,应该是要求用户输入两个字符串,长度都是50,可以是ACS II表格里的任何字符。然后判断这两个字符串是否用相同的字母。但是在做判断时候,必须要忽略除了字母和数字以外的其他字符,并且把所有字母都转换成小写。如果这两个字符串包含了一样的字母数字,而且这些字母数字出现的次数一样,他们就是可以互相转换的。
打个比方:“Mary”可以转换成“Army”,“Doctor Who"可以转换成”Torchwood“.其他例题看下图1。
一共要求写3个function,一个main,已经写好,如图2。第二个是bool isAnagram(string str1, string str2),第三个是bool isAlphaNumeric(char& c),这个function是用来判断输入的是否是字母和数字,不能用isalpha()这个函数。

图1

图2
展开
 我来答 举报
White_MouseYBZ
推荐于2016-02-06 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6592万
展开全部
//#include "stdafx.h"//vc++6.0加上这一行.
#include "ctype.h"
#include <iostream>
#include <string>
using namespace std;
int mycmp(const void *a,const void *b){
return *(char *)a-*(char *)b;
}
bool isAlphaNumeric(char& c){
return c>='1' && c<='9' || c>='a' && c<='z' || c>='A' && c<='Z';
}
bool isAnagram(string str1, string str2){
char s1[51],s2[51];
int ln=str1.length();
if(ln!=(int)str2.length())
return false;
for(int i=0,j=0,k=0;i<ln;i++){
if(isAlphaNumeric(s1[j]=str1.c_str()[i])){
if(s1[j]>='A' && s1[i]<='Z')
s1[j]|=0x20;
j++;
}
if(isAlphaNumeric(s2[k]=str2.c_str()[i])){
if(s2[k]>='A' && s2[k]<='Z')
s2[k]|=0x20;
k++;
}
}
s1[j]=s2[k]='\0';
if((ln=strlen(s1))!=(int)strlen(s2))
return false;
qsort(s1,ln,sizeof(char),mycmp);
qsort(s2,ln,sizeof(char),mycmp);
return (bool)!strcmp(s1,s2);
}
void main(void){
string str1,str2;
cout << "Please enter the first string:";
getline(cin,str1);
cout << "Please enter the second string:";
getline(cin,str2);
cout << "The two strings are anagrams: " << isAnagram(str1,str2) << endl;
}
本回答被提问者和网友采纳
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
Q我Q739318644
2014-11-09
知道答主
回答量:17
采纳率:0%
帮助的人:4.2万
展开全部
把工程保存发到我邮箱帮你
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式