- C言語なら俺に聞け! Part 135©2ch.net
244 :デフォルトの名無しさん[]:2016/05/25(水) 16:59:51.98 ID:grsxbFu1 - 以下のようなプログラムを作成せよ。
5名分の数学の点数と英語の点数を入力する。 以下の計算式に基づいて合計点数を計算する。 (合計点数)=(数学の点数)×1.2 + (英語の点数)×0.8 上位2名を「合格(A)」とする。 上記合格者以外について、以下の計算式に基づいて合計点を再計算する。 (合計点数)=(数学の点数)×0.8 + (英語の点数)×1.2 上位2名を「合格(B)」とする。 つまり、不合格者は1名のみとなる。 同じ合計点数はないと仮定してよい。 こういう課題なんだけど、とりあえず1.2とかの計算はおいといて、入力した点数の最高点の人を合格にしようとしたんだけど 合格が0人目になってしまう 途中までのプログラム下に貼るんでアドバイスください
| - C言語なら俺に聞け! Part 135©2ch.net
245 :デフォルトの名無しさん[]:2016/05/25(水) 17:00:51.35 ID:grsxbFu1 - >>244の続き
#include<stdio.h> void main() { int i=0; int a[5]; int b[5]; int c[5]; double tempmax; printf("5人分の数学の点数を入力してください\n"); for( i=0; i<5; i++) { printf("%d人目の数学の点数:",i+1); scanf_s("%d",&a[i]); } printf("英語の点数を入力してください\n"); for( i=0; i<5; i++) { printf("%d人目の英語の点数:",i+1); scanf_s("%d",&b[i]); }
| - C言語なら俺に聞け! Part 135©2ch.net
246 :デフォルトの名無しさん[]:2016/05/25(水) 17:02:05.60 ID:grsxbFu1 - 連投すいません さらに続き
for( i=0; i<5; i++) { c[i] = a[i] + b[i]; } printf("%d,%d,%d,%d,%d",c[0],c[1],c[2],c[3],c[4]); tempmax = c[0]; for( i=0; i<4; i++) { if(c[i]>tempmax) { tempmax = c[i]; } } printf("合格(A):%d人目 ",tempmax); }
| - C言語なら俺に聞け! Part 135©2ch.net
251 :デフォルトの名無しさん[]:2016/05/25(水) 18:46:25.87 ID:grsxbFu1 - >>249-250を参考にしたら数学英語の得点の最高合計点取った人が出るようになった ありがとう
でも、数学英語の両方とも上から5,4,3,2,1て入力したら-858993459人目って出るようになった どっかforの範囲間違えたかな?
| - C言語なら俺に聞け! Part 135©2ch.net
253 :デフォルトの名無しさん[]:2016/05/25(水) 20:09:18.71 ID:grsxbFu1 - >>251
自己解決しました また質問なんだけど上から二番目の点数のデータ、もしくは、一番目のデータを除いた最高点数のデータ ってどう表現すればいいの?
| - C言語なら俺に聞け! Part 135©2ch.net
260 :デフォルトの名無しさん[]:2016/05/25(水) 22:38:48.23 ID:grsxbFu1 - >>259
参考にさせてもらって合格(A)はうまく出力できた 後半の合格(B)を出力するときにc[i]<tempmax1のtemomax1の値が計算が変わって 変わってしまってるからif(c[i]>tempmax2 && c[i]<tempmax1) こういうふうにできない #include<stdio.h> void main() { int i = 0; int a[5]; int b[5]; int c[5]; int no1=0,no2=0,no3=0,no4=0,no5=0; double MAX,MAx,Max,max; int min; printf("5人分の数学の点数を入力してください\n"); for (i = 0; i<5; i++) { printf("%d人目の数学の点数:", i + 1); scanf_s("%d", &a[i]); } printf("英語の点数を入力してください\n"); for (i = 0; i<5; i++) { printf("%d人目の英語の点数:", i + 1); scanf_s("%d", &b[i]); }
| - C言語なら俺に聞け! Part 135©2ch.net
261 :デフォルトの名無しさん[]:2016/05/25(水) 22:39:39.72 ID:grsxbFu1 - >>260続き
for (i = 0; i<5; i++) { c[i] = (double)1.2*a[i] + (double)0.8*b[i]; } MAX = c[0]; for( i=0; i<5; i++) { if(c[i]>MAX) { MAX = c[i]; no1=i; } } printf("合格(A):%d人目 ",no1+1,(int)MAX); MAx = c[0]; for (i = 0; i<5; i++) { if (c[i] > MAx && c[i] < MAX) { MAx = c[i]; no2 = i; } } printf("%d人目\n", no2 + 1, (int)MAx); Max = c[0];
| - C言語なら俺に聞け! Part 135©2ch.net
262 :デフォルトの名無しさん[]:2016/05/25(水) 22:42:35.41 ID:grsxbFu1 - >>261続き
for (i = 0; i<5; i++) { c[i] = (double)0.8*a[i] + (double)1.2*b[i]; } for (i = 0; i < 5; i++) { if (c[i] > Max && c[i]<MAx) { Max = c[i]; no3 = i; } } printf("合格(B):%d人目 ", no3 + 1, (int)Max); max = c[0]; for (i = 0; i < 5; i++) { if (c[i] > max && c[i]<Max) { max = c[i]; no4 = i; } }
| - C言語なら俺に聞け! Part 135©2ch.net
263 :デフォルトの名無しさん[]:2016/05/25(水) 22:43:25.22 ID:grsxbFu1 - <<262続き
連投すいません printf("%d人目\n", no4 + 1, (int)max); min = c[0]; for (i = 0; i < 5; i++) { if (c[i] >min && c[i]<max) { min = c[i]; no5 = i; } } printf("不合格:%d人目", no5 + 1, min); }
|
|