ページ 1 / 1
異なる文字の個数
Posted: 2010年6月19日(土) 08:45
by かな
二つの文字列を入力して、異なる文字の個数を求めるプログラムを、文字列の標準関数を使うとどのように書き表せますか。
実行例は以下のようにしたいです。
文字列1を入力してください:ABCDEFGH
文字列2を入力してください:ABDJELGI
文字列 ABCDEFGH と文字列 ABDJELGI の相違は4文字です。
文字列1を入力してください:ABCDEFGH
文字列2を入力してください:ABDJELG
同じ長さの文字列を入力してください。
Re:異なる文字の個数
Posted: 2010年6月19日(土) 08:53
by へろりくしょん
単純に、頭から順番に見ていけばいいだけでは?
文字列の違う箇所の数を返す関数です。
int getUnmatch(const char *str1, const char *str2)
{
int i;
int count = abs(strlen(str1) - strlen(str2));
for(i = 0;str1 && str2;i++){
if(str1 != str2) count++;
}
return count;
}
[追記]
>文字列1を入力してください:ABCDEFGH
>文字列2を入力してください:ABDJELG
>同じ長さの文字列を入力してください。
思いっきり読み飛ばしてました。
でもこのコードでも、問題なく要求通りに動きます。 
Re:異なる文字の個数
Posted: 2010年6月19日(土) 09:11
by シエル
strlenを使って文字数が違えば、「同じ長さの文字列を入力してください。」と表示し、
文字数が一致してれば、一つずつforループなどで見ていく。
Re:異なる文字の個数
Posted: 2010年6月19日(土) 09:59
by シエル
サンプル作ってみました。
時間かかりすぎた…。文字関連はやっぱり苦手です。。
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
char str1[40];
char str2[40];
char str3[40];
int len1,len2,dif,diflen=0;
int i=0;
printf("文字列1を入力して下さい\n");
scanf("%s",str1);
printf("文字列2を入力して下さい\n");
scanf("%s",str2);
len1=strlen(str1);
len2=strlen(str2);
dif=abs(len1-len2);
if(dif==0){
if(len1==0){
printf("一つ目の文字が入力されていません");
return -1;
}else if(len2==0){
printf("2つめの文字が入力されていません");
return -1;
}else{
printf("文字数が一致してるので比較を開始します…\n");
}
}else{
printf("同じ長さの文字列を入力してください。\n");
return -1;
}
for(i=0;i<len1+1;i++){
if(str1==str2){
continue;
}else{
str3[diflen]=str2;
diflen++;
}
}
str3[diflen]='\0';
printf("文字列%sと文字列%sの相違は%d文字です。\n",str1,str2,diflen);
printf("違う文字は「%s」になります\n",str3);
return 0;
}