Ошибка из-за слишком большого количества переменных в программировании на C - PullRequest
0 голосов
/ 24 ноября 2018

Я хочу сделать среднее арифметическое из положительных и отрицательных чисел, пользователь дает цифры.Я думал добавить еще 2 переменные, которые подсчитывают, сколько чисел было суммировано в положительную и отрицательную сторону, а затем делают среднее арифметическое.

Но когда я их ставлю int x=0, q=0;, программа перестает работать без каких-либо ошибок компилятора.Почему?

the error I get

int total, i, numere[total], negativeSum = 0, positiveSum = 0;

printf("The number of digits you want to calculate the arithmetic amount: : ");
scanf("%d",&total);

for(i=0; i<total; i++){
    printf("Enter number %d : ",(i+1));
    scanf("%d",&numere[i]);
}

for(i=0; i<total ; i++){
   if(numere[i] < 0){
     negativeSum += numere[i];
            }else{
     positiveSum += numere[i];
   }
}

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Вам нужно знать значение total перед выделением памяти, используя оператор номер [total].

Когда вы запрашиваете у ввода пользовательского значения total, альтернативный подход может использовать malloc.

int total, i, *numere, negativeSum = 0, positiveSum = 0;

printf("The number of digits you want to calculate the arithmetic amount: : ");
scanf("%d",&total);

numere = malloc(sizeof(int) * total);

for(i=0; i<total; i++){
    printf("Enter number %d : ",(i+1));
    scanf("%d",&numere[i]);
}

for(i=0; i<total ; i++){
   if(numere[i] < 0){
     negativeSum += numere[i];
            }else{
     positiveSum += numere[i];
   }
}
0 голосов
/ 24 ноября 2018

В вашей последовательности операторов

int total, i, numere[total], negativeSum = 0, positiveSum = 0;

printf("The number of digits you want to calculate the arithmetic amount: : ");
scanf("%d",&total);

total все еще неинициализировано, поэтому numere[total] не определено.Компилятор может удалить его вообще.Чтобы инициализировать total для определения numere, необходимо объявить его после прочтения total:

int total, i, negativeSum = 0, positiveSum = 0;

printf("The number of digits you want to calculate the arithmetic amount: : ");
scanf("%d",&total);

int numere[total]; // now it is well-defined.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...