C++初心者で全くわかりません.
Posted: 2010年5月13日(木) 01:08
0 からa-1 までの整数の乱数をn 個発生させ、発生した整数のヒストグラムを
プリントアウトして下さい。
a とnはコマンドラインから引き渡します。
この問題では、乱数および配列の使い方を勉強します。特にヒストグラムに使う配列につ
いては、本を見て、よく理解して下しさい。
ヒント:0 からa-1 までの整数を発生する乱数の書き方は
(int)((double)rand()/((double)RAND_MAX+1) *a);
です。
プログラム内で
printf(“%d\n”, RAND_MAX);
とすれば、RAND_MAX の値が分かります。皆さんのPC では、RAND_MAX がいくつに
なっているかも調べて報告して下さい。
たとえば、プログラムをRandHist としたとき
RnadHist 10 1000
と入力すれば
0 982
1 1035
2 956
3 1102
・
・
9 971
などと。出力されるようなプログラムを作る問題です。a とn は、任意に変えられるように
して下さい。
配列に関する解説を追加します。説明はshort の配列になっていますが、他のタイプ(char,
int, float)でも同じ事です。
一般に、領域(配列)の確保には2つの方法があります。short で先頭番地b から10 個の
要素(20 バイト)を確保する場合を例にとって説明します。
1 コンパイル時に確保する。
short b[10];
要素数が少ないとき(大体2000 個くらいまで)に主に使います。
2 実行時に確保する。
short *b;
b を使う前に、
b=new short[10];
を実行します。
new 関数で、[/url]の中に書かれた要素数だけ領域を確保し、この時、領域の先頭番地がb の中
に代入されます。画像では、この方法を使います。また、実行してみなければ、配列の要
素数が確定しない場合などは、必須の方法です。
方法1でも2でも、確保した後の使用法は全く同じです。たとえば、
b[5]=200;
などと使います。
この問題には、1と2 の両方のプログラムを作って下さい。ただし、1 の方法を使えば、a
の最大値に制限が付きます。
というものです.お願いします.
プリントアウトして下さい。
a とnはコマンドラインから引き渡します。
この問題では、乱数および配列の使い方を勉強します。特にヒストグラムに使う配列につ
いては、本を見て、よく理解して下しさい。
ヒント:0 からa-1 までの整数を発生する乱数の書き方は
(int)((double)rand()/((double)RAND_MAX+1) *a);
です。
プログラム内で
printf(“%d\n”, RAND_MAX);
とすれば、RAND_MAX の値が分かります。皆さんのPC では、RAND_MAX がいくつに
なっているかも調べて報告して下さい。
たとえば、プログラムをRandHist としたとき
RnadHist 10 1000
と入力すれば
0 982
1 1035
2 956
3 1102
・
・
9 971
などと。出力されるようなプログラムを作る問題です。a とn は、任意に変えられるように
して下さい。
配列に関する解説を追加します。説明はshort の配列になっていますが、他のタイプ(char,
int, float)でも同じ事です。
一般に、領域(配列)の確保には2つの方法があります。short で先頭番地b から10 個の
要素(20 バイト)を確保する場合を例にとって説明します。
1 コンパイル時に確保する。
short b[10];
要素数が少ないとき(大体2000 個くらいまで)に主に使います。
2 実行時に確保する。
short *b;
b を使う前に、
b=new short[10];
を実行します。
new 関数で、[/url]の中に書かれた要素数だけ領域を確保し、この時、領域の先頭番地がb の中
に代入されます。画像では、この方法を使います。また、実行してみなければ、配列の要
素数が確定しない場合などは、必須の方法です。
方法1でも2でも、確保した後の使用法は全く同じです。たとえば、
b[5]=200;
などと使います。
この問題には、1と2 の両方のプログラムを作って下さい。ただし、1 の方法を使えば、a
の最大値に制限が付きます。
というものです.お願いします.