2012-02-27 35 views
1

SRand/Randを使用して乱数の配列を生成しています。配列のサイズは、ユーザーが入力するプロンプトの数に依存します。基本的に、ユーザーが9のサイズを入力する場合、配列は9つの数値にする必要があります。この配列は、配列の値を18以下に保つために、パラメータを指定してrand()を使用して設定する必要があります。問題は、ランダムなサイズの配列が生成されることがあることです。たぶん私はプログラムを実行すると4番目または5番目の時間ごとに配列は12-14番号です。私のコードで問題を見ることができません。私は以下のスニペットを含んでいます。誰もそれに光を当てた?固定サイズの配列が固定されていません

int main(void) 
{ 
    int N; 
    int i; 

    printf("Please enter a number\n"); 
    scanf("%d", &N); 

    srand (time(NULL)); 
    int numarray[N]; 
    for(i=1; i<numarray[N]; i++) 
    { 
     numarray[i]=rand()%21; 
     printf("%d\n", numarray[i]); 
    } 

    return 0; 
} 
+0

ああ私は見る!私はずっとそれを見ていた私は明らかに見えませんでした!みんなありがとう – adohertyd

答えて

5
for(i=1; i<numarray[N]; i++) 

あなたは間違った値をループしています。

  • 配列は、配列内の値だけで、それは一つだので、この場合には未定義されている(インデックスはnumarray[N]の値よりも小さい場合ではない1
  • あなたが停止している、0から始まります配列の終わりの後)。

私はあなたがこれをしたい疑い:このコード行で

for(i = 0; i < N; i++) 
4

for(i=1; i<numarray[N]; i++) 

numarray[N]は初期化されていない変数なので、未知の値を持っています。 ゼロかもしれません、それは60,000かもしれません。

結果はループが不明確な回数だけ実行されます。

2

実際には、Nの代わりにnumarray [N]でforループインデックスを終了させることを意味しましたか?

関連する問題