- ベストアンサー
ヒントをください!
ある課題があるんですが、 「ユーザに好きな整数を10個入力させ、その最小値と最大値を出力するプログラムを書いてください。if文を使ってください。」 このプログラムを作る際のヒントをください。ぜんぜんわからないので。。。 答えは作ってから見たいので。。。 よろしくおねがいします。 10個数字を入力させるプログラムは作りました。 #include <stdio.h> int main(void){ int c,e,r,u,t,v,d,a,p,n; printf("好きな整数を10個入力してください。\n"); printf("整数を入力:"); scanf("%d",&c); printf("整数を入力:"); scanf("%d",&e); printf("整数を入力:"); scanf("%d",&r); printf("整数を入力:"); scanf("%d",&u); printf("整数を入力:"); scanf("%d",&t); printf("整数を入力:"); scanf("%d",&v); printf("整数を入力:"); scanf("%d",&d); printf("整数を入力:"); scanf("%d",&a); printf("整数を入力:"); scanf("%d",&p); printf("整数を入力:"); scanf("%d",&n); return 0; } このようになりました。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No1さんのお礼から >もっとスリムなプログラムはあるのではないのかな、と考えているのです 考えてできないよりかは、膨大になっても実装した方が良いですよ。 スリムなプログラムを入門者がいきなり考えてもしょうがないです。 まずは動くものを書いてから、最適化していくと良いです。 あと答えはNo6さんが書いてくれてますけど、 一応一言・・・(マナー違反かな?) No6さんの回答から if(i==0){ min=a[i]; max=a[i]; } この部分はループの前に0で初期化していれば無用です。 毎回余分な条件判定が入ってしまうので・・・ 余計なお世話ならすいません。
その他の回答 (6)
- eliteyoshi
- ベストアンサー率42% (76/178)
#include <stdio.h> int main(){ int i,a[10],min,max; for(i=0;i<10;i++){ printf("%d番目の整数: ",i+1); scanf("%d",&a[i]); if(i==0){ min=a[i]; max=a[i]; } else{ if(min>a[i]){ min=a[i]; } else if(max<a[i]){ max=a[i]; } } } printf("最小値: %d, 最大値: %d\n",min,max); return 0; }
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 んっと。プログラムを書くときは、まず「コメント」を書く癖をつけると大変によろしいかと思います。 今回ですと /* ユーザに好きな整数を10個入力 */ /* その最小値と最大値を出力する */ こんな感じです。 で、 /* その最小値と最大値を出力する */ はさらに /* 最小値と最大値を求める */ /* 最小値と最大値を出力する */ になり、さらにそれは /* 最小値を求める */ /* 最大値を求める */ /* 最小値と最大値を出力する */ になります。 整理すると /* ユーザに好きな整数を10個入力 */ /* 最小値を求める */ /* 最大値を求める */ /* 最小値と最大値を出力する */ ですね。 あとは、各コメントごとにプログラムをしていくと、少しだけ、楽になるかと思います。
- bnosuke-x
- ベストアンサー率39% (43/110)
じゃあ、本当にヒントだけ。 数の入力は、ループで配列に入れる 最小値と最大値を入れるための変数を準備しておく。 配列に入れておいた数をループしながら一つずつ見ていき、新しい最小/最大値が見つかったら更新する。 これでどうでしょう。 あとは、他の皆さんの言うとおりにして下さい。
お礼
回答ありがとうございました。 もう一度基礎から見直してこのヒントを参考に作っていこうと思います。 ありがとうございました。
- kabaokaba
- ベストアンサー率51% (724/1416)
とりあえず,簡単なCの本を一冊通読しましょう. きちんと自分で環境を構築して実験しながらしましょう. #これはもうCとかの問題ではなくて #アルゴリズムそのものの問題だな・・・ まず一番大事なのは「質問の仕方を学ぶ」こと. あなたの質問の仕方はかなり悪い部類に入ります (a)タイトルは内容を反映したものにする (b)質問内容は漠然としたものではなく整理すること (a)(b)に注意すると質問しようとすると問題が整理されて 解決してしまうこともままあります. ヒントだけ. (1)「繰り返しは悪」for文,while文を勉強する (2)入力した数を全部変数にいれて覚えることはない. 新しい値が入力された時点での最大と最小だけ記憶すればよい. 結果,10個でも何個でもよくなる.
お礼
すべて独学です。やはり参考書は必要になりますか。 すみませんでした。ちゃんとfor文やwhile文を理解していませんでした。 なのでせっかくヒントをいただいても意味がわかりませんでした。 プログラミングを勉強するのは早かったのかなと思いました。 もう少し年をとってから勉強することにします。 ありがとうございました。
1000個入力する場合でも、そのパターンで作りますか? 配列を用意して、ループの中で入力するのが正攻法でありましょう。
お礼
ループですか・・・いろいろやってみます! ありがとうございました!
- jacta
- ベストアンサー率26% (845/3158)
> このプログラムを作る際のヒントをください。ぜんぜんわからないので。。。 全然分からないというのであれば、最初にすべきことは、何が分かって何が分からないかを明確にすることです。 それができないのであれば、C言語の入門書を買ってきて勉強するのが正攻法です。 それでも全然分からないのであれば、まずは日本語を勉強しましょう。あるいは英語を勉強するのもよいでしょう。
お礼
ifをつかって a > b a < b などの条件をつければいいのかな?と考えています。 しかし、今の私の知識では膨大なプログラムになるので、もっとスリムなプログラムはあるのではないのかな、と考えているのです。 ありがとうございました。
お礼
そういえばコメント文は書いたことがありませんでした・・・。 参考にさせていただきます。