首页 > 解决方案 > 获取一天内记录的最低度数

问题描述

我需要制作一个程序,在一天中的什么时间记录最少的学位,我制作了这个程序,我得到了记录最小学位的正确时间,但我没有得到正确的度数

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.

标签: pascal

解决方案


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; 

推荐阅读