<質問>整列の処理をしていない表は表示されるのですが、整列した表が表示されません。なぜでしょうか?エラーは表示されません。
<お願い>下のように整列してない表を表示してから、整列した表を表示させたいです。
ファイル名を入力してください
file1.dat
番号 得点
1001 96
1002 60
1003 87
<途中省略>
4019 87
4020 87
4021 92
レコード件数=92
整列結果 <--結果の見出し
3001 100
3009 99
3007 96
2018 95
2007 93
1020 86
3018 86
3016 85
<途中省略>
2015 34
3015 28
1021 26
1012 26
1023 24
4016 21
3004 12
2013 12
1010 6
2008 5
交換回数=1532 <--最後に交換回数を表示
#include<stdio.h> #include<stdlib.h> int main(void) { char filename[21]; FILE *fp; struct seisekiA{ int bango, tokuten; }; struct seisekiA seiseki[100]; int n=0; int j,i,work; printf("ファイル名を入力してください\n"); scanf("%s",filename); if((fp=fopen(filename,"r"))==NULL) { printf("FILE OPEN ERROR\n"); exit(1); } printf("番号 得点\n"); while(fscanf(fp,"%d%d",&seiseki[n].bango,&seiseki[n].tokuten)!=EOF) { printf("%4d %4d\n",seiseki[n].bango,seiseki[n].tokuten); n++; } printf("レコード件数=%d\n",n); printf("整列結果\n"); for(i=0; i<n-1 ;i++) { for(j=i+1; j<n; j++) { if(seiseki[i].tokuten > seiseki[j].tokuten) { work = seiseki[i].tokuten; seiseki[i].tokuten = seiseki[j].tokuten; seiseki[j].tokuten = work; } } } while(fscanf(fp,"%d%d",&seiseki[i].bango,&seiseki[i].tokuten)!=EOF) { printf("%4d %4d\n",seiseki[i].bango,seiseki[i].tokuten); i++; } fclose(fp); printf("交換回数=%d",j-1); return 0; }
以上よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/02 08:24