文字コード for文

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sim
記事: 48
登録日時: 10年前

文字コード for文

#1

投稿記事 by sim » 10年前

入力された文字が同じでなかった場合、文字コード順で先に来る方を出力するプログラム。
プログラムを作りましたが、正しくありません。指摘をお願いします。

コード:

#include <stdio.h>
#define NUM 50

int main(void)
{
	char str1[NUM];
    char str2[NUM];
    int i,j,count=0;
	
	printf("2つの文字列を入力してください。\n");
	printf("1つ目を入力してください。\n");
	scanf("%s",str1);
	printf("2つ目を入力してください。\n");
	scanf("%s",str2);

	/*入力された二つの文字を比較する処理*/
	for(i=0;i<NUM && str1[i]!='\0' || str2[i]!='\0';i++)
	{
		if(str1[i]==str2[i])
		{
			count++;
		}
		else
		{
			count=0;
		}
	}
	if(count>0)
	{
		printf("同じ文字列です。\n");
	}
	else
	{
		i=0;
		count=0;
		while(count==0)
		{
			if(str1[i]<str2[i])
			{
				count=1;
			}
			else if(str2[i]<str1[i])
			{
				count=2;
			}
			i++;
		}
	}
	/*二つの文字を比較して小さいほうを出力する処理*/
	if(count==1)
	{
		printf("小さい方は%sです。\n", str1);
	}
	else 
	{
		printf("小さい方は%sです。\n", str2);
	}
	return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 文字コード for文

#2

投稿記事 by みけCAT » 10年前

  • 最後の文字が一致する場合、途中までが違っていなくても「同じ文字列です」が出力されてしまいます。
  • 同じ文字列であった場合でも、必ず「小さい方は○○です。」が出力されてしまいます。
二度手間をかけずに、素直に書けばいいでしょう。

コード:

#include <stdio.h>
#define NUM 50

int main(void)
{
	char str1[NUM];
    char str2[NUM];
    int i,count=0;
	
	printf("2つの文字列を入力してください。\n");
	printf("1つ目を入力してください。\n");
	scanf("%s",str1);
	printf("2つ目を入力してください。\n");
	scanf("%s",str2);

	/*入力された二つの文字を比較する処理*/
	for(i=0;i<NUM && (str1[i]!='\0' || str2[i]!='\0');i++)
	{
		if(str1[i]<str2[i])
		{
			count=1;
			break;
		}
		else if(str2[i]<str1[i])
		{
			count=2;
			break;
		}
	}
	if(count==0)
	{
		printf("同じ文字列です。\n");
	}
	else if(count==1)
	{
		printf("小さい方は%sです。\n", str1);
	}
	else if(count==2)
	{
		printf("小さい方は%sです。\n", str2);
	}
	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

sim
記事: 48
登録日時: 10年前

Re: 文字コード for文

#3

投稿記事 by sim » 10年前

手間をかけて逆に難しいことをしていたんですね。
ありがとうございます。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 文字コード for文

#4

投稿記事 by みけCAT » 10年前

解決したら、解決チェックをお願いします。
解決チェックをするには、投稿画面の「送信」ボタンの右にある「解決!」にチェックを入れた状態で返信を投稿してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

sim
記事: 48
登録日時: 10年前

Re: 文字コード for文

#5

投稿記事 by sim » 10年前

ありがとうございます

閉鎖

“C言語何でも質問掲示板” へ戻る