Невозможно назначить приращение для l oop переменной int - PullRequest
0 голосов
/ 28 марта 2020

Я пишу программу, которая берет наибольшие / минимальные значения из 2 списков и записывает их, а также с приращением l oop они появились.

Это часть мой код, который вызывает проблему. Все переменные, которые вы видите здесь, были объявлены ранее:

for(int i = 0; i < days; i++){
    highest_temp = high_temp[i];
    lowest_temp = low_temp[i];

    while (high_temp[i] > highest_temp){
        highest_temp = high_temp[i];
        highest_temp_day = i+1;
    }

    while  (low_temp[i] < lowest_temp){
        lowest_temp = low_temp[i];
        lowest_temp_day = i+1;
    }
}

printf("\n\nThe highest temperature was %d, on day %d", highest_temp, highest_temp_day);
printf("\nThe lowest temperature was %d on day %d", lowest_temp, lowest_temp_day);

Это мой вывод:

The highest temperature was 9, on day 0
The lowest temperature was -4 on day 0

Переменные highest_temp_day и lowest_temp_day были оба инициализированы в 0, но они не обновляется внутри циклов while.

1 Ответ

3 голосов
/ 28 марта 2020

Ваш код должен быть реструктурирован:

// these need to be outside so they don't get redefined constantly
int highest_temp = high_temp[0];
int lowest_temp = low_temp[0];
// initialize these to the first day
int highest_temp_day = 0;
int lowest_temp_day = 0;
// iterate through the array
for (int i = 0; i < days; i++) {
    // change whiles to ifs
    if (high_temp[i] > highest_temp) {
        // update vars
        highest_temp = high_temp[i];
        highest_temp_day = i + 1;
    }
    if (low_temp[i] < lowest_temp) {
        lowest_temp = low_temp[i];
        lowest_temp_day = i + 1;
    }
}

printf("\n\nThe highest temperature was %d, on day %d", highest_temp, highest_temp_day);
printf("\nThe lowest temperature was %d on day %d", lowest_temp, lowest_temp_day);
...