Какое время будут показывать часы через р ч q мин r с? - Pascal ABC
Формулировка задачи:
Помогите написать программу
Текущее показание электронных часов: t ч (0 ≤ т ≤ 23) n мин (0 ≤ n ≤ 59) k с (0≤ k ≤ 59). Какое время будут показывать часы через р ч q мин r с?
Решение задачи: «Какое время будут показывать часы через р ч q мин r с?»
textual
Листинг программы
var
t,n,k,p,q,r,i: integer;
begin
i:=0;
write('Введите t: ');
readln(t);
while (t<0) or (t>23) do begin
write('Ошибка! "t" Введено некорректно! Введите "t" повторно: ');
readln(t);
end;
write('Введите n: ');
readln(n);
while (n<0) or (n>59) do begin
write('Ошибка! "n" Введено некорректно! Введите "n" повторно: ');
readln(n);
end;
write('Введите k: ');
readln(k);
while (k<0) or (k>59) do begin
write('Ошибка! "k" Введено некорректно! Введите "k" повторно: ');
readln(k);
end;
write('Введите p: ');
readln(p);
while p<0 do begin
write('Ошибка! Отрицательное "p"! Введите "p" повторно: ');
readln(p);
end;
write('Введите q: ');
readln(q);
while q<0 do begin
write('Ошибка! Отрицательное "q"! Введите "q" повторно: ');
readln(q);
end;
write('Введите r: ');
readln(r);
while r<0 do begin
write('Ошибка! Отрицательное "r"! Введите "r" повторно: ');
readln(r);
end;
while r>=60 do begin
r:=r-60;
i:=i+1;
end;
if r+k>=60 then begin
k:=r+k-60;
q:=q+i+1;
i:=0;
end
else begin
k:=k+r;
q:=q+i;
i:=0;
end;
while q>=60 do begin
q:=q-60;
i:=i+1;
end;
if q+n>=60 then begin
n:=q+n-60;
p:=p+i+1;
i:=0;
end
else begin
n:=q+n;
p:=p+i;
i:=0;
end;
while p>=24 do p:=p-24;
if p+t>=24 then t:=p+t-24
else t:=p+t;
writeln('Конечное время: ',t,' ч ',n,' мин ',k,' сек');
end.
Объяснение кода листинга программы
- Создается переменная
tтипаintegerдля хранения времени в часах. - Выводится сообщение с запросом ввести значение
t. - Проверяется, что введенное значение
tнаходится в диапазоне от 0 до 23. Если нет, то происходит повторный запрос и повторное чтение значенияt. - Создается переменная
nтипаintegerдля хранения времени в минутах. - Выводится сообщение с запросом ввести значение
n. - Проверяется, что введенное значение
nнаходится в диапазоне от 0 до 59. Если нет, то происходит повторный запрос и повторное чтение значенияn. - Создается переменная
kтипаintegerдля хранения времени в секундах. - Выводится сообщение с запросом ввести значение
k. - Проверяется, что введенное значение
kнаходится в диапазоне от 0 до 59. Если нет, то происходит повторный запрос и повторное чтение значенияk. - Создается переменная
rтипаintegerдля хранения времени в секундах. - Выводится сообщение с запросом ввести значение
r. - Проверяется, что введенное значение
rнаходится в диапазоне от 0 до 59. Если нет, то происходит повторный запрос и повторное чтение значенияr. - Если
rбольше или равно 60, то значениеrуменьшается на 60, переменнаяiустанавливается в 1, и цикл продолжается. - Если
rменьше 60, то значениеrувеличивается наi, и цикл продолжается. - Если
qбольше или равно 60, то значениеqуменьшается на 60, переменнаяiустанавливается в 1, и цикл продолжается. - Если
qменьше 60, то значениеqувеличивается наi, и цикл продолжается. - Если
pбольше или равно 24, то значениеpуменьшается на 24, переменнаяiустанавливается в 1, и цикл продолжается. - Если
pменьше 24, то значениеpувеличивается наi, и цикл продолжается. - Если
tбольше или равно 24, то значениеtуменьшается на 24, и цикл продолжается. - Если
tменьше 24, то значениеtувеличивается наi, и цикл продолжается. - Выводится сообщение с конечным временем в формате
часы:минуты:секунды.