- ベストアンサー
C言語初心者のための最小値と最大値を表示するプログラムの採点依頼
- C言語初心者の質問です。入力された0~100までの10個の数値から、最小値と最大値を表示するプログラムを書いたのですが、正常に動作しているかどうか確認していただきたいです。
- プログラムは正常に動作していますが、記述に無駄が多く、わかりづらいと感じています。改善点やアドバイスがあれば教えていただけると幸いです。
- C言語初心者が書いた最小値と最大値を表示するプログラムを採点してください。動作は正常であり、0~100の範囲で10個の数値を入力し、最小値と最大値が正しく表示されます。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
0から100の範囲外の数字を2回続けて入力したらどうなりますか? 1,2,3,4,ー1,ー1,5,6,7,8,9というふうに。 while(pvalue[i] > pvalue[j]){i++;} ここはループでなくてif文でいいですよ。 while(pvalue[i] < pvalue[j]){i++;} ここもif文にしましょう。
その他の回答 (5)
- syampoooooooooo
- ベストアンサー率44% (4/9)
// 実際に書いた方が分かりやすいと思って適当に // 記述が多いとか分かりづらいみたいなのを気にする以前なので気にしなくていい // ほとんどコピペ // コンパイルすら通してないので変な書き間違えがあるかも #include <stdio.h> #define HOWMANY 10 // いくつ数値を入力させるか ;複数の箇所で使われる同じ意味の定数は定義しておくべき int getmin(int * pvalue); int getmax(int * pvalue); int main(void) { int i, value[HOWMANY]; int minimum, maximum; printf("0~100の範囲で%d個の数値を入力してください:\n", HOWMANY); // 0~100でなかったら何度でも駄目だしを食らうようにした for(i=0;i<HOWMANY; ) { scanf("%d",&value[i]); if( value[i] < 0 || value[i] > 100 ) { printf("0~100の範囲です:\n"); continue; } ++i; } minimum = getmin(value); maximum = getmax(value); printf("最小値は%d\n", minimum); printf("最大値は%d\n", maximum); return 0; } // なんかよく分かんなかったので分かりやすくした int getmin(int * pvalue) { int j = 0; int min = pvalue[j]; for(j=1;j<HOWMANY;j++) { if(pvalue[j] < min) min = pvalue[j]; } return min; } int getmax(int * pvalue) { int j = 0; int max = pvalue[j]; for(j=1;j<HOWMANY;j++) { if(pvalue[j] > max) max = pvalue[j]; } return max; }
- TooManyBugs
- ベストアンサー率27% (1472/5321)
人に見せるのなら何をしたいのか、しているのかコメントをつけるべき。
- tsunji
- ベストアンサー率20% (196/958)
数字入力が0~100以外を入れても動くのがダメ。 数字入力時の for(i=0;i<10;i++) は whileにしてiの数字は数字が正常なら+1してi<10ならループ。 999を入れるとプログラム終了するとかしたら親切。
- maiko0318
- ベストアンサー率21% (1483/6969)
追加> while(pvalue[i] > pvalue[j]){i++;} while(pvalue[i] < pvalue[j]){i++;} はデータによっては無限ループしますよ。 昇順データ、降順データを入れてみてください。
- Tacosan
- ベストアンサー率23% (3656/15482)
そして「a」とか入れられて頭痛がするわけですね>#1. printf のメッセージは意味が分からない. 例えば #1 のように -1 を入れたりすると 「0~100の範囲です」 と表示してから再入力させてる. でも, -1 は「0~100の範囲」にはないよね.
お礼
みなさま様々な回答を下さり、どの方もとても参考になりました。 ですが、ここは僕のレベルに一番合い、なおかつ簡潔に説明してくださった maiko0318様をBAに選ばせて頂きました。 なお、お礼、質問の締切が大変遅くなりまして申し訳ありませんでした。