• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語初心者です。書いたプログラムを採点して下さい)

C言語初心者のための最小値と最大値を表示するプログラムの採点依頼

このQ&Aのポイント
  • C言語初心者の質問です。入力された0~100までの10個の数値から、最小値と最大値を表示するプログラムを書いたのですが、正常に動作しているかどうか確認していただきたいです。
  • プログラムは正常に動作していますが、記述に無駄が多く、わかりづらいと感じています。改善点やアドバイスがあれば教えていただけると幸いです。
  • C言語初心者が書いた最小値と最大値を表示するプログラムを採点してください。動作は正常であり、0~100の範囲で10個の数値を入力し、最小値と最大値が正しく表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

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文にしましょう。

noiman_tensai
質問者

お礼

みなさま様々な回答を下さり、どの方もとても参考になりました。 ですが、ここは僕のレベルに一番合い、なおかつ簡潔に説明してくださった maiko0318様をBAに選ばせて頂きました。 なお、お礼、質問の締切が大変遅くなりまして申し訳ありませんでした。

その他の回答 (5)

回答No.6

// 実際に書いた方が分かりやすいと思って適当に // 記述が多いとか分かりづらいみたいなのを気にする以前なので気にしなくていい // ほとんどコピペ // コンパイルすら通してないので変な書き間違えがあるかも #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; }

回答No.5

人に見せるのなら何をしたいのか、しているのかコメントをつけるべき。

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.4

数字入力が0~100以外を入れても動くのがダメ。 数字入力時の for(i=0;i<10;i++) は whileにしてiの数字は数字が正常なら+1してi<10ならループ。 999を入れるとプログラム終了するとかしたら親切。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.3

追加> while(pvalue[i] > pvalue[j]){i++;} while(pvalue[i] < pvalue[j]){i++;} はデータによっては無限ループしますよ。 昇順データ、降順データを入れてみてください。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

そして「a」とか入れられて頭痛がするわけですね>#1. printf のメッセージは意味が分からない. 例えば #1 のように -1 を入れたりすると 「0~100の範囲です」 と表示してから再入力させてる. でも, -1 は「0~100の範囲」にはないよね.

関連するQ&A