###実現したいこと
合格基準はすべての試験科目の点数が60点以上かつその人の平均点が70点以上。
合格者を表示したい。
###問題点
ご指摘いただいたところを治しましたところ満たしていないはずの2番さんが表示されてしまいました。
学籍番号1 70 60 80 学籍番号2 75 58 90 学籍番号3 75 80 90 学籍番号4 65 80 60 学籍番号5 60 100 60 合格者一覧 1番 210点 平均70.00 2番 223点 平均74.33 3番 245点 平均81.67 5番 220点 平均73.33
条件分岐が間違っているとおもうのですがどう変えればいいのかわかりません。ご指摘お願いします。
###コード
C
1/*2次元配列を用いた項目別成績の集計プログラム*/ 2#include<stdio.h> 3#define NUMBER 5 //学籍番号 4#define SUBJECT 3 //教科数 5int main(void) 6{ 7 int i,j; 8 int ssum=0; //合格者の人数 9 int tensu[NUMBER][SUBJECT+1]={0}; //項目別の点数 10 int succs[NUMBER]; //合格者のリスト 11 double avg[5]; 12 for(i=0;i<NUMBER;i++){ 13 printf("学籍番号%d\n",i+1); 14 for(j=1;j<=SUBJECT;j++){ 15 //printf("項目%d:",j); 16 scanf("%d",&tensu[i][j]); 17 tensu[i][0]+=tensu[i][j]; 18 avg[i]=(double)tensu[i][0]/SUBJECT; 19 /*printf("平均点:%.2f\n",avg[i]); //デバック用 20 printf("合計点:%2d\n",tensu[i][0]);*/ 21 if(tensu[i][j]>=60 && avg[i]>=70){ //すべてが60点以上かつ平均70点以上 22 succs[ssum++]=i; 23 } 24 } 25 } 26 printf("合格者一覧\n"); 27 for(i=0;i<ssum;i++){ 28 printf("%2d番 %3d点 平均%.2f\n",succs[i]+1,tensu[succs[i]][0],(double)tensu[succs[i]][0]/SUBJECT); 29 } 30 return 0; 31}
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13226565128
teratailでは「マルチポスト」は推奨されていません。https://teratail.com/help#posted-otherservice 「禁止」ではありませんが、それでもやるんだ、というなら書かれているように「やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。」
回答3件
あなたの回答
tips
プレビュー