入力した5つの英単語を,辞書順に並べ替えるプログラムを作成せよ
というプログラムの課題が出ました。
一応の完成まで迎えたのですが、プログラムが長すぎて、分かりにくくなってしまいました。
どなたか、綺麗な書いたものを教えてください!
よろしくお願いします。
以下が作ってみたプログラムです。
#include<stdio.h>
#include<string.h>
void input(char str1[],char str2[],char str3[],char str4[],char str5[])
{
printf("単語を入力:");
scanf("%s",str1);
printf("単語を入力:");
scanf("%s",str2);
printf("単語を入力:");
scanf("%s",str3);
printf("単語を入力:");
scanf("%s",str4);
printf("単語を入力:");
scanf("%s",str5);
}
void swap(char s1[],char s2[]) //2つの文字列の交換
{
char p[100];
strncpy(p,s1,100);
strncpy(s1,s2,100);
strncpy(s2,p,100);
}
void bigtomini(char str[])
{
for(int i=0;i<100;i++){
if('A'<=str[i],str[i]<='Z'){
str[i]+0x20;
}
if(str[i]==0){
break;
}
}
}
void exchange(char s1[],char s2[],char s1mini[],char s2mini[])
{
swap(s1mini,s2mini);
swap(s1,s2);
}
void order(char str1[],char str2[],char str3[],char str4[],char str5[])
{
char str1mini[100];
char str2mini[100];
char str3mini[100];
char str4mini[100];
char str5mini[100];
strcpy(str1mini,str1); strcpy(str2mini,str2); strcpy(str3mini,str3); strcpy(str4mini,str4); strcpy(str5mini,str5); bigtomini(str1mini); bigtomini(str2mini); bigtomini(str3mini); bigtomini(str4mini); bigtomini(str5mini); if(strcmp(str1mini,str2mini)>0){ exchange(str1,str2,str1mini,str2mini); //1-2 } if(strcmp(str2mini,str3mini)>0){ exchange(str2,str3,str2mini,str3mini); //2-3 } if(strcmp(str3mini,str4mini)>0){ exchange(str3,str4,str3mini,str4mini); //3-4 } if(strcmp(str4mini,str5mini)>0){ exchange(str4,str5,str4mini,str5mini); //4-5 } if(strcmp(str1mini,str2mini)>0){ exchange(str1,str2,str1mini,str2mini); //戻って1-2 } if(strcmp(str2mini,str3mini)>0){ exchange(str2,str3,str2mini,str3mini); } if(strcmp(str3mini,str4mini)>0){ exchange(str3,str4,str3mini,str4mini); } if(strcmp(str1mini,str2mini)>0){ exchange(str1,str2,str1mini,str2mini); //戻って1-2 } if(strcmp(str2mini,str3mini)>0){ exchange(str2,str3,str2mini,str3mini); } if(strcmp(str1mini,str2mini)>0){ exchange(str1,str2,str1mini,str2mini); //戻って1-2 }
}
int main(void)
{
char str1[100];
char str2[100];
char str3[100];
char str4[100];
char str5[100];
input(str1,str2,str3,str4,str5); printf("%s, %s, %s, %s, %s\n",str1,str2,str3,str4,str5); printf("辞書順に並べ替え\n"); order(str1,str2,str3,str4,str5); printf("%s, %s, %s, %s, %s\n",str1,str2,str3,str4,str5); return 0;
}
回答4件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2015/06/07 14:35