Давалась задача: Иван уже давно занимается карате и мечтает попасть на Олимпийские игры. И тут он узнаёт, что в программу Олимпийских игр в Токио впервые включено карате. Иван задумался — а как же нужно проводить тренировки спортсменам, живущим в разных часовых поясах, чтобы «подстроить» биоритмы под токийское время?
Напишите программу, которая запрашивает у пользователя время начала соревнований в Токио и номер часового пояса, в котором проживает спортсмен.
Время соревнований — число t от 1 часа до 12 часов (в стране «восходящего солнца» все соревнования начинаются до полудня :) и часовой пояс — число N от -11 до +12. Часовой пояс Японии принято считать +9.
В результате программа должна вывести одно число Х — начало тренировки спортсмена по своему местному времени, соответствующему времени начала соревнований в Токио.
Входные данные.
Во входных данных в первой строке вводят два целых числа, разделенные одним пробелом: t (1<= t <=12) и N (-11<= N <= +12).
Выходные данные.
В выходных данных вывести одно целое число X (1<= X <=24) — начало тренировки по местному времени.
Я новичок в программировании, поэтому не обессудьте. Написала такую программу:
var
t, N: integer;
X, c: real;
begin
writeln ('Введите Ваше местное время и через пробел Ваш часовой пояс');
readln (t, N);
while (t>=1)and(t<=12) do
while (N>=1)and(N<=12) do
c:= (t -(9 - N));
if c > 0 then X:=(c)
else
if c < 0 then X:= 24 - abs(c);
writeln (X)
end.
Программа запускается, но решения не даёт. Скажите, пожалуйста, в чём проблема?
В листинге программы присутствует бесконечный цикл “while (t>=1)and(t<=12) do“, т.к. над переменной t не выполняется никаких действий внутри цикла. Т.е. в данном случае, при вводе значения t в диапазоне 1<=t<=12 гарантировано получаем бесконечное выполнение цикла. На мой взгляд, использование циклов для решения этой задачи совершенно не оправдано, можно и нужно сделать без них. Идея использования abs модуля правильная, так же стоит учесть что часовой пояс, в котором живет спортсмен, может быть равен 0.