По заданному числу и месяцу определить, какая дата (число и месяц) будут послезавтра - PascalABC.NET
Формулировка задачи:
По заданному числу и месяцу определить, какая дата (число и месяц) будут послезавтра.
Входные данные:
Вводятся через пробел два целых числа, обозначающих число и месяц невисокосного года.
Выходные данные:
Вывести два числа - послезавтрашние число и месяц
Пример:
9 10 11 10
Решение задачи: «По заданному числу и месяцу определить, какая дата (число и месяц) будут послезавтра»
textual
Листинг программы
var
d,m:integer;
t:array[1..12] of integer=(31,28,31,30,31,30,31,31,30,31,30,31);
begin
repeat
write('введите день и месяц:');readln(d,m);
until (m in [1..12]) and (d in [1..t[m]]);
d:=d+2;
if d>t[m] then begin d:=d-t[m];m:=m+1;end;
if m>12 then m:=1;
writeln('послезавтра:',d,' ',m);
end.
Объяснение кода листинга программы
В этом коде определен тип данных и переменные:
d,m: integer;— переменныеdиmтипаinteger(целое число).t: array[1..12] of integer;— массивtразмером 12, содержащий числа от 31 до 28 (количество дней в каждом месяце). Затем следует повторяющийся блок, который продолжается до тех пор, пока пользователь не введет корректную дату (день и месяц).repeat— начало цикла.write('введите день и месяц:');readln(d,m);— запрос на ввод даты.until (m in [1..12]) and (d in [1..t[m]]);— условие цикла, которое выполняется, пока месяц в диапазоне от 1 до 12 и день в диапазоне от 1 до количества дней в месяце. Затем следует код, который определяет следующую дату:d := d + 2;— увеличение дня на 2.if d > t[m] then begin d := d — t[m]; m := m + 1; end;— проверка, не превышает ли день количество дней в месяце, если превышает, то уменьшение дня на количество дней в месяце и увеличение месяца на 1.if m > 12 then m := 1;— проверка, не превышает ли месяц 12, если превышает, то уменьшение месяца на 1. В конце выводится следующая дата:writeln('послезавтра:', d, ' ', m);— вывод датыпослезавтра.