- 締切済み
c言語配列拡張
c言語配列拡張 20個の要素からなる実数配列 x[ ] から、小さい添え字からn個の要素までの 最大値を取り出すプログラムを作成する。計算する要素の数nはキーボード から入力するか乱数で決定するかは乱数により得る。 a. 乱数が奇数の場合はキーボードから入力する。 b.乱数が偶数の場合この乱数の数を用いる。 誰が知ったら教えてください!
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- okormazd
- ベストアンサー率50% (1224/2412)
「小さい添え字からn個の要素まで」 という意味がよくわからない。 #1への補足のコードだと,「0」から「n」までの最大値を採るようになっている。 それでいいなら,このコードは基本的には正しいでしょう。 ただ,stdio.hとstdlib.hをインクルードしなければだめだ。 下記,参考。 #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 20 int main() { int hairetsu[N],soeji,max,i, n; srand((unsigned)time(NULL)); for(i=0;i<20;i++){ hairetsu[i] = rand()%100; printf("hairetsu[%d]=%d \n",i,hairetsu[i]); } soeji = rand(); if( (soeji% 2) == 0){ n = soeji % 20; printf("soeji=%d n=%d\n",soeji,n); } else{ printf("nを入力してください\n "); scanf("%d", &n); n = n % 20; printf("n=%d\n",n); } max=hairetsu[0]; for(i=0;i<=n;i++){ if(hairetsu[i] > max){ max = hairetsu[i]; printf("max=%d hairetsu[%d]=%d\n",max,i,hairetsu[i]); } } printf("n=%dのMax: %d\n", n,max); }
- asuncion
- ベストアンサー率33% (2127/6289)
ちょっと確認します。 タイトルの「配列拡張」と、本文との関係が少しもわからないのですが、 教えていただけないでしょうか?
- kmee
- ベストアンサー率55% (1857/3366)
問題を分解して考えましょう。 ・20個の要素からなる実数配列 x[ ] →配列はどう宣言しますか? ・小さい添え字からn個の要素までの最大値を取り出す →以下の入力云々のことは一旦横へ置いといて。 既に値が入っていたとするなら、「n個までの最大値」はどうしたらよいでしょう? 例えば、トランプを並べて、そのなかの最大を探すには、どうやったらいいでしょう? 実際にやってみて、それをプログラムにするにはどうやればいいか考えてみましょう。 ・ 乱数 →いろんな乱数発生器がありますが、とりあえずは、 標準の関数を使えばよいのでは。 ・a. 乱数が奇数の場合はキーボードから入力する。 b.乱数が偶数の場合この乱数の数を用いる。 → 条件によって処理を分けるには、何を使えばよいでしょうか? また、奇数/偶数というのはどんな値だか、式で表現できますか?
補足
#include <time.h> #define N (20) int main() { int hairetsu[N],soeji,max,i, n; srand(time(NULL)); for(i=0;i<20;i++) hairetsu[i] = rand()%100; soeji = rand(); if( (soeji% 2) == 0){ n = soeji % 20; } else { printf("nを入力してください\n "); scanf("%d", &n); n = n % 20; } max=hairetsu[0]; for(i=0;i<=n;i++){ if(hairetsu[i] > max){max = hairetsu[i];} } printf("n=%dのMax: %d\n", n,max); } これでいいでしょうか?
補足
関係ないのです