前提・実現したいこと
与えられた関数を使って、5つ英単語を昇順、降順に並び替えるプログラムなんですがどれだけ考えてもわかりません助けてください
発生している問題・エラーメッセージ
該当のソースコード
c言語
試したこと
#include <stdio.h>
int cmp_str(char c1[], char c2[], int sort){
int flag=0,i;
for(int i=0; c1[i] != '\0' && c2[i] != '\0'; i++){
if(sort==1){
if(c1[i]>c2[i]){
flag=1;
break;
}
else if(c1[i]<c2[1]){
break;
}
}
else{
if(c1[i]<c2[i]){
flag=1;
break;
}
else if(c1[i]>c2[i]){
break;
}
}
}
if(sort==1 && c2[i]=='\0'){
flag=1;
}
else if(sort==2 && c1[i]=='\0'){
flag=1;
}
return flag;
}
int main(int argc, const char *argv[]){
int sort,i,j,flag,fga,fgb,fgc,fgd,fge;
char go[5][100],kotae[5][100];
fga=fgb=fgc=fgd=fge=0;
printf("昇順(1)or降順(2)?:");
scanf("%d",&sort);
printf("英単語を入力してください.\n");
for(i=0;i<5;i++){
scanf("%s",go[i]);
}
for(i=0;i<5;i++){
flag=cmp_str(go[i],go[i+1],sort);
if(flag==1){
fga=i;
}
if(flag==0){
fga=i+1;
}
}
for(i=0;i<5;i++){
if(fga==i){
continue;
}
flag=cmp_str(go[i],go[i+1],sort);
if(flag==1){
fgb=i;
}
if(flag==0){
if(fga==i+1){
continue;
}
fgb=i+1;
}
}
for(i=0;i<5;i++){
if(fga==i||fgb==i){
continue;
}
flag=cmp_str(go[i],go[i+1],sort);
if(flag==1){
fgc=i;
}
if(flag==0){
if(fga==i+1||fgb==i+1){
continue;
}
fgc=i+1; } } for(i=0;i<5;i++){ if(fga==i||fgb==i||fgc==i){ continue; } flag=cmp_str(go[i],go[i+1],sort); if(flag==1){ fgd=i; } if(flag==0){ if(fga==i+1||fgb==i+1||fgc==i+1){ continue; } fgd=i+1; } } for(i=0;i<5;i++){ if(fga==i||fgb==i||fgc==i||fgd==i){ continue; } flag=cmp_str(go[i],go[i+1],sort); if(flag==1){ fge=i; } if(flag==0){ if(fga==i+1||fgb==i+1||fgc==i+1||fgd==i+1){ continue; } fge=i+1; } } printf("%s\n %s\n %s\n %s\n %s\n",go[fga],go[fgb],go[fgc],go[fgd],go[fge]); return 0;
}
めちゃめちゃですが一応頑張ってみたつもりです。どうすれば良いでしょうか。
補足情報(FW/ツールのバージョンなど)
これが与えられた関数です
int cmp_str(char c1[], char c2[], int sort){
int flag=0,i;
for(int i=0; c1[i] != '\0' && c2[i] != '\0'; i++){
if(sort==1){
if(c1[i]>c2[i]){
flag=1;
break;
}
else if(c1[i]<c2[1]){
break;
}
}
else{
if(c1[i]<c2[i]){
flag=1;
break;
}
else if(c1[i]>c2[i]){
break;
}
}
}
if(sort==1 && c2[i]=='\0'){
flag=1;
}
else if(sort==2 && c1[i]=='\0'){
flag=1;
}
return flag;
}