Почему мое первое значение не печатается правильно, но каждое следующее значение печатает правильно - PullRequest
0 голосов
/ 07 апреля 2019

Моя цель состоит в том, чтобы получить самые низкие значения температуры в 6 разных озерах. Я могу получить каждое значение, кроме первого (превосходное озеро), как мне получить это значение для печати?

Iпопытался установить начальные значения самой холодной температуры в качестве первой строки массива, чтобы он мог сравнить ее со значением больше 0 (никакие значения в файле не будут меньше 0)

вот файлДанные, которые я использовал для этого вопроса, формат его год / день / затем каждое озеро в порядке https://drive.google.com/file/d/1ADaYffIlMjsZbGMA-85adDg2uXLydshY/view?usp=sharing

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
/* variables */
    double alltemps[365][8], coldest[6], coldestday[6], coldestmonth[6];
    int i, j;

/* j = rows, i = columns */

/* open file and assign values to the array */
    FILE*WaterTemperatureData;

    WaterTemperatureData=fopen("WaterTemperatureData.txt", "r");

    for(j=0;j<365;++j)
    {
        for(i=0;i<8;++i)
        {
            fscanf(WaterTemperatureData, "%lf", &alltemps[j][i]);
        }

    }

/* determine coldest temps for each lake */
for(i=2; i<8; ++i)
    {    
        for(j=0; j<365; ++j)
        {
            coldest[i-1] = alltemps[0][i];

            if (alltemps[j][i] < coldest[i-2])
            {
                coldest[i-2] = alltemps[j][i];
                coldestday[i-2] = alltemps[j][1];
            }
        }
    }

/* output statements */
    printf("Coldest Temperature of Lake Superior is %2.2lf on %0.0lf\n", coldest[0],coldestday[0]);
    printf("Coldest Temperature of Lake Michigan is %2.2lf on %0.0lf\n", coldest [1],coldestday[1]);
    printf("Coldest Temperature of Lake Huron is %2.2lf on %0.0lf\n", coldest [2],coldestday[2]);
    printf("Coldest Temperature of Lake Erie is %2.2lf on %0.0lf\n", coldest [3],coldestday[3]);
    printf("Coldest Temperature of Lake Ontario is %2.2lf on %0.0lf\n", coldest [4],coldestday[4]);
    printf("Coldest Temperature of Lake St. Clair is %2.2lf on %0.0lf\n", coldest [5],coldestday[5]);    

return(0);
}

Для озера Верхнее я ожидаю получить 1,33 в день 72 вместо 0 в день0

1 Ответ

0 голосов
/ 07 апреля 2019

Почему мое первое значение не печатается правильно (?)

coldest[i-2] используется до назначения -> неопределенное поведение (UB).

for(i=2; i<8; ++i)
  // coldest[2-2] never  assigned
  if (alltemps[j][i] < coldest[i-2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...