0

500から600までの乱数をポインターを使用して配列に格納し、それらの数値を出力する必要があります。セグメンテーションエラーが発生します...コアダンプ、それが何を意味するのかよくわかりません。このエラーは、printfステートメント( "%15d \ n"、aPtr [i])の後に発生します。

int main(){
    int size;
    int j, i;
    int temp;
    int sum = 0;


    printf("Enter size of array");
    scanf("%d", &size);


    int array[size];
    int *aPtr = malloc(sizeof(int) * size);

    for (i = 0; i <= size; i++){
         srand(time(NULL));
         aPtr[i] = rand() % 500 + 100;
         printf("%15d\n", aPtr[i]);
4

3 に答える 3

4

i <= size;する必要がありますi < size;

50個のアイテムの配列がある場合、有効なインデックスは[0,49]です。

于 2012-09-23T21:12:23.750 に答える
1

ループに入るsrand に電話する必要があります。

現在のところ、乱数ジェネレーターを毎回同じシードにリセットしているため、同じ番号の長いシーケンスが得られます(時間が変わらないと仮定すると、おそらくそうです)。さらに、500から600までの数値が必要な場合は、数式が間違っています。このスニペットを試してください:

srand(time(NULL));
for (i = 0; i < size; i++){
    aPtr[i] = (rand() % 101) + 500;
    printf("%d\n", aPtr[i]);
}
于 2012-09-23T21:21:19.253 に答える
1

srand (乱数ジェネレーターを初期化する) を 1 回だけ呼び出す必要があります。for の外に移動します。また、500 から 600 の間の乱数が必要な場合は、0 から 100 の間で乱数を生成し ( rand() % 101)、500 を追加する必要があります。

于 2012-09-23T21:21:37.413 に答える