• 締切済み

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

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

みんなの回答

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

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

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答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/6970)
回答No.6

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

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

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

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答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/6970)
回答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|****** です。お願いします。

関連するQ&A

  • プログラミングC言語 サイコロ問題

    プログラミングC言語の問題でC言語のrand関数を利用して33回のサイコロ型乱数を出力するプログラムを書きなさい。という問題が出ました。ソースコードを教えてください。

  • プログラミングの乱数

    c言語、c++の乱数rand()の使い方がよくわかりません。わかりやすい説明をお願いします。 あと、プログラミングが得意な方にお願いです。 [0,1]乱数で平均と分散を求めるプログラムを配列なしで作ってください。

  • プログラミング言語Cとプログラミング言語C++

    プログラミング言語Cとプログラミング言語C++の違いって何ですか? あと、プログラミング言語C++についていくつか質問があります。 #include <iostream> using namespace std; void main(){ cout << "Hello world!" << endl; } このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか? using namespace stdって何ですか? あと、 cout <<"Hello world!"って何ですか?

  • C言語のプログラミングについてです。

    C言語のプログラミングについて教えて欲しいです。 scanf関数を用いて、キーボードから文字列(最大30文字)を読み込み、これをchar型配列に格納します。最大10個までの文字列が入力された場合か、「END」が入力された時、入力された逆順で画面に表示するプログラム。作成しなさい。 〈完成例〉 adjm 10mdjp jpd-4 njad' END njad jpd-4 10mdjp adjm

  • C言語のプログラミング

    C言語がなかなか上手く勉強できません。お力添えお願いします。 問題:log10の2を求めるプログラミングを作れ。 回答いただけると助かります。

  • c言語乱数について

    トランプのシャッフルと同様な操作をコンピュータで行いたい。52枚のトランプを配列に置き換え、1~52の乱数を割り当てる。ただし発生した乱数はすでに割り当て済みの数である場合は、まだ割り当てていない乱数が出るまで繰り返すものとする。 というプログラムをC言語でつくりたいのですがまったくわからないので誰か教えてください。お願いします。

  • C言語プログラミングについて

    「要素数10の配列を準備する。 配列の各要素に0.0~1.0の乱数を入れる。 各配列に入力された乱数を出力する。 配列をオリジナル関数hanteiに渡す。 数hantei内において,各要素の値が0.5以上であれば1 , 0.5未満であれば0を出力する。」 C言語でこのような問題があるのですがどのように作ればよろしいのでしょうか? ちなみに以下のように作ってみて、「argcは一度も使用されていない」「argvは一度も使用されていない」とエラー(警告)が出てしまいました。修正、もしくは正しいプログラムを教えてくれませんか? #include <stdio.h> #include <time.h> #include <stdlib.h> #define SIZE 10 int hantei(double num) { return num>=0.5; } int main(int argc,char *argv[]) { double number[SIZE]; int i; srand((unsigned)time(NULL)); for(i=0;i<SIZE;i++) number[i]=(double)rand() / RAND_MAX; //手抜き乱数 for(i=0;i<SIZE;i++) { printf("%f %d\n",number[i], hantei(number[i])); } return 0; }

  • プログラミング言語 rubyを用いて、

    プログラミング言語 rubyを用いて、 画像処理プログラミングを書こうとしていますが、以下の点が分かりません。 1・メモリの動的確保はどうするの?(C言語でいうmalloc) 2・ファイルから配列に展開するにはどうしたらいいの? 以上が分かればわかるきがするのですが・・ 当方 C言語での画像処理プログラミングはそれなりに経験があるのですが rubyで実現できるのかわからなくて・・

    • ベストアンサー
    • Ruby
  • C言語のプログラミングの関数と配列を用いてそんなに

    C言語のプログラミングの関数と配列を用いてそんなに難しくないプログラムを考えているのですが、何かいいプログラムはないでしょうか?簡単なゲームや、簡単な貯金計算など種類は問いません。 そこまで難しくない何かいいプログラムを教えてください。

  • C言語 プログラミング

    C言語プログラミングで分からない問題があるのですが、 nを入力して、0~nまでの数値のうち、 (1)偶数のみ足しなさい (2)3の倍数のみ足しなさい の2つのプログラムがわからいのですがどなたか教しえていただけませんか?