#pascal
Вопрос:
Мне нужно создать программу, которая получает минимальное количество градусов, записанных за день, в какой час я создал программу, я получаю правильный час, в который было записано минимальное количество градусов, но я не получаю правильное количество градусов
Program P1;
Type
Hour = 0..23;
Degrees = -40..40;
Temperature = array [Hour] of Degrees;
var
t : Temperature;
i, min_t, max_t, hour_t_min, hour_t_max : integer;
procedure test;
begin
for i := 0 to 23 do
begin
writeln('Enter the temperature at hour ', i);
readln(t[i]);
min_t := t[0];
if min_t > t[i] then
begin
min_t := t[i];
ora_t_min := i;
end;
if max_t < t[i] then
begin
max_t := t[i];
ora_t_max := i;
end;
end;
writeln('temp min ', min_t, ' at hour ', hour_t_min);
writeln('temp max ', max_t, ' at hour ', hour_t_max);
end; {procedure}
begin { main }
test;
end.
Ответ №1:
Min_t (и max_t) должны быть инициализированы снаружи и перед циклом. Вы назначаете min_t:=t[0] в каждом цикле, это неправильно, и max_t не инициализируется. Кроме того, я думаю, что это опечатка, ora_t_min и ora_t_max следует изменить на hour_t_min и hour_t_max:
Что-то вроде этого:
min_t := 40;
max_t := -40;
for i := 0 to 23 do
begin
writeln('Enter the temperature at hour ', i);
readln(t[i]);
if min_t > t[i] then begin min_t := t[i]; hour_t_min := i; end;
if max_t < t[i] then begin max_t := t[i]; hour_t_max := i; end;
end;
writeln('temp min ', min_t, ' at hour ', hour_t_min);
writeln('temp max ', max_t, ' at hour ', hour_t_max);
end;