• 締切済み

C言語のプログラミング作成なのですが....

C言語の問題なのですが、大きさ100の配列に1から10の一様乱数を格納しヒストグラムを*を使ってプログラミングするというものなのですがさっぱりわかりません。わかる方どうかよろしくお願いします。

みんなの回答

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.9

>大きさ100の配列に1から10の一様乱数を格納し とありますから、まず乱数を配列に格納してから、集計は別途行うんでしょう。 なので、配列は2つ必要になりますね。

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

設問では「大きさ100の配列」となっていますので、 大きさ100の配列を使ってくださいね。

noname#240995
noname#240995
回答No.7

#include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { int cnt[ 10 ]; int i, j; srand( ( unsigned )time( NULL ) ); // Initialize for( i = 0; i < 10; i++ ) { cnt[ i ] = 0; } // Calclate for( i = 0; i < 100; i++ ) { cnt[ rand() % 10 ]++; } // Output for( i = 0; i < 10; i++ ) { printf( "%2d|", i + 1 ); for( j = 0; j < cnt[ i ]; j++ ) { printf( "*" ); } printf( "(%d)\n", cnt[ i ] ); } return 0; }

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

配列の添え字は0からスタートです。 が、使うか使わないかはあなた次第。

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.5

#4の方のご回答をすごーく分かりやすく言い換えると、  「配列の添え字は1からスタート」と習ったのですか? ということです。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.4

>int x[10]={0}; で、使える添え字ってどこからどこまででしたっけ????? >for(r=1;r<11;r++) で、rの値はどこからどこまでの値になりますかね???? >for(j=1;j<x[r];j++) で、x[r]は安全な(保証されている)範囲で済みますか??

handonha09
質問者

補足

どのように変えればよいのか具体的にお教えいただければ幸いです。勉強不足ですみません。 少し変えました。 #include <stdlib.h> #include <stdio.h> #include <time.h> main() { int x[100]={0}; int r,j,n; srand((unsigned)time(NULL)); for(n=1;n<=100;n++) { r=rand()%10+1; x[r]=x[r]+1; } printf("値|度数\n"); printf("-----------\n"); for(r=1;r<11;r++) { printf(" %d|",r); for(j=1;j<x[r];j++) { printf("*"); } printf("\n"); } }

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

大きさ100の配列がない。 大きさ100の配列にいったん格納してから集計することになります。

  • honor
  • ベストアンサー率35% (25/71)
回答No.2

r=rand()%10; 1から10の乱数を作りたいとのことですが、ある数を10で割ったときの余りは0~9です。

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

質問文を見ても、どこが分からないのかさっぱり分かりません。 (「ヒストグラムを*を使ってプログラミングする」という表現もいまいち意味が分かりません……) ・何がしたいか ・どんなコードを書いたか ・そのコードを実行してどんな結果になったか をはっきり書いてくださいな。

handonha09
質問者

補足

すみません... 自分が作ったのは #include <stdlib.h> #include <stdio.h> #include <time.h> main() { int x[10]={0}; int r,j,n; srand((unsigned)time(NULL)); for(n=1;n<=100;n++) { r=rand()%10; x[r]=x[r]+1; } printf("値|度数\n"); printf("-----------\n"); for(r=1;r<11;r++) { printf("%d|",r); for(j=1;j<x[r];j++) { printf("*"); } printf("\n"); } } 実行結果は 値|度数 ----------- 1|*********** 2|*********** 3|********** 4|********** 5|****** 6|********* 7|******* 8|******** 9|******** 10| になってしまいます。 やりたいことは 値|度数 ----------- 1|************ 2|******** 3|********** 4|*********** 5|********** 6|******** 7|********** 8|************* 9|************ 10|****** です。お願いします。