アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++で疑似乱数を発生させてサイコロをつくったのですが,
サイコロを5回転がしたときのそれぞれの値をソートしたいと思い,配列に入れれば簡単だと考えてとりあえず配列に入れるプログラムを書いてみました.
しかし,int array[i] = Dice(); のところでエラーが出てしまいます.
ローベルのC++入門講座という本を使って独学で勉強している初心者なため,配列の使い方がいまいちよくわかりません.
ご教授よろしくお願いします.
以下ソースコード

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void InitRand(){
srand((unsigned int) time (NULL));
}


int Dice(){
return rand() % 6 + 1;
}

int main(void){
int n = 0; //nはサイコロを転がす回数
cout <<"サイコロを何回転がしますか?" << flush;
cin >> n;
cout << "回転がします" << endl;

InitRand();
for(int i = 0; i < n; ++i){
cout << Dice() << endl;
int array[i] = Dice(); //エラーが発生する.i回目のサイコロの値をi番目の配列に入れたい.
}
}

A 回答 (3件)

配列の定義の仕方と初期化の仕方を勉強してください。


少なくとも入門書には書いてあると思います。

あとエラーを「エラー」という一言で済まさない。
エラーメッセージを読めばエラーの原因がわかるんですから。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
配列はまだまだ先の項目だったのですが、サイコロのプログラムができてソートしてみようと思いついたものの、なかなかできずに気になって質問してしまいました。そのためエラー内容もあまりよくわかりませんでした。

お礼日時:2012/06/03 03:04

int array[i] = Dice(); から int を消して,


ループの前後に int *array = new int[n];
と delete[] array; を入れましょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
コンパイルできました。
まだなんとなくしか回答の意味がわからないので、これから勉強していきたいと思います。

お礼日時:2012/06/03 03:07

int型のarray[]という配列を、それにアクセスするより前に


1度だけ定義しておく必要がありそうな気がします。
それから、

>cout << Dice() << endl;
>int array[i] = Dice();

2回のDice()の結果は通常異なるはずです。乱数を使ってますからね。
coutで出力した値とは通常異なるであろう値を
array[i]に格納しようとすることに何か意味があるのでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>2回のDice()の結果は通常異なるはずです。乱数を使ってますからね。
>coutで出力した値とは通常異なるであろう値を
>array[i]に格納しようとすることに何か意味があるのでしょうか。

確かにそうですね・・・。
cout << Dice() << endl; を消して、
array[i] = Dice();の後に
cout << array[i] << endl; に書き換えました。 なんか二度手間な気がしますね。

お礼日時:2012/06/03 03:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!