ページ 11

プログラム問題

Posted: 2017年5月11日(木) 11:29
by mkn
10人の点数を入力しそのなかの最大値最小値をもとめその点数をとった人のナンバーを求めるプログラムを作成しています
最大値と最小値は求めることができたのですがナンバーを求めることができません
プログラムは以下のように作成しました
まったくわからないので助けてくださいm(__)m
#include <stdio.h>

int main(void)
{
int i,max,min,b,d,c=1;
double a[10];
printf("10人の試験の点数:\n");
for(i = 0; i < 10; i++)
{
printf("No.%d: ", i + 1);
scanf("%lf", &a);

}

min = max = a[0];
for(i = 1; i < 10; i++)
{

if (a < min){
min = a ;
b=c;
c++;
}
if (a > max) {
max = a;
d=c;
c++;
}
c++;
}
printf("最高点(No.%d)",b);
printf(" :%d点\n", max);
printf("最低点(No.%d)",d);
printf(" :%d点\n", min);
return 0;
}

Re: プログラム問題

Posted: 2017年5月11日(木) 13:01
by purin52002
こんにちは

ソースが非常に見づらいです^^;
ソースを載せるときはcodeタグを使うと見やすくなります。(っていうか使うルールです。)

bが最高点を取った人ナンバー、dが最低点を取った人のナンバーでいいですかね?
とりあえずその仮定で話をすすめます。

・最低点のナンバー
minを更新するif文の中でdを更新すればいいと思います。
aというのは「i番目の点数」ということでいいでしょうか?
だとしたらdは何番目に設定すればいいでしょうか?

最高点のナンバーも同じですね。
cは使わずに済みそうです。

オフトピック
変数をabcde、、、とするのはあまり感心しません。
わかりやすい名前をつけることをおすすめします。

score[10]とかmin_numberとかmax_numberとか、、、

Re: プログラム問題

Posted: 2017年5月11日(木) 13:15
by かずま
入力データを double a[10]; と、浮動小数点数で読み込んでいるのはなぜですか?
83.5 というようなデータを許すためですか?
でも、これが最高点の場合、int の max は 83 になり、最後の結果が正しく
表示されませんよ。

問題文に「double を使用すること」という条件があるのですか?
問題文の原文をそのまま貼り付けてください。