前提・実現したいこと
こんにちは!
structureを使って
生徒番号 数学の成績 物理の成績
を入力して、そのあと平均点を出して平均点の高い順に並べ替えたいです。
(平均点が同じ時は数学の天数が高い方優先、それも同じ場合は生徒番号の小さい方優先)
発生している問題・エラーメッセージ
並べ替えた後に出力すると平均点ががちゃんと表示されません
該当のソースコード
c言語
1 2#include<stdio.h> 3 4struct student{ 5 char id[10]; 6 double math; 7 double sci; 8 double avr; 9}; 10int main(void) { 11 int a,i,j; 12 scanf("%d",&a); 13 //printf("%d\n",a); 14 struct student yo[256]; 15 for(i=0;i<a;i++){ 16 scanf("%s",yo[i].id); 17 // printf("%s",yo[i].id); 18 scanf("%lf",&yo[i].math); 19 //printf("%8.3f",yo[i].math); 20 scanf("%lf",&yo[i].sci); 21 //printf("%8.3f ",yo[i].sci); 22 yo[i].avr = (yo[i].math+yo[i].sci)/2; 23 //printf("%f\n",yo[i].avr); 24 } 25 struct student temp; 26 int y,z; 27 for(y=0;y<a;y++){ 28 for(z=y+1;z<a;z++){ 29 if(yo[y].avr<yo[z].avr){ 30 temp = yo[y]; 31 yo[y] = yo[z]; 32 yo[z] = temp; 33 } 34 if(yo[y].avr=yo[z].avr){ 35 if(yo[y].id<yo[z].id){ 36 temp = yo[y]; 37 yo[y] = yo[z]; 38 yo[z] = temp; 39 } 40 if(yo[y].math<yo[z].math){ 41 temp = yo[y]; 42 yo[y] = yo[z]; 43 yo[z] = temp; 44 } 45 } 46 } 47 } 48 for(i=0;i<a;i++){ 49 printf("%s ",yo[i].id); 50 printf("%7.3f",yo[i].math); 51 printf("%7.3f ",yo[i].sci); 52 printf("%8.3f\n",yo[i].avr); 53 } 54} 55
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
ちゃんと表示されないとはどうなるんでしょうか
回答1件
あなたの回答
tips
プレビュー