Задан номер дня в году и год. Определить календарную дату года - Free Pascal
Формулировка задачи:
Здравствуйте!
Задан порядковый номер дня в году и год. Напишите программу, определяющую соответствующую календарную дату года ( число, месяц).
Решение задачи: «Задан номер дня в году и год. Определить календарную дату года»
textual
Листинг программы
Const mas:array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31); Var d:integer; g:1800..2012; i:integer; Begin Repeat write('Введите порядковый номер дня в году: ');readln(d); Until (d>=1)and(d<=365); write('Введите год: ');readln(g); i:=0; While (d>0)and(i<12) do Begin inc(i); d:=d-mas[i]; End; if d<=0 then d:=d+mas[i]; writeln('Месяц: ',i,' День: ',d); readln; End.
Объяснение кода листинга программы
- Объявлены константа массива
mas
размером 12 байтов, предназначенная для хранения количества дней в каждом месяце от 1900 до 2012 года. - Объявлены переменные
d
иg
типа integer, первая для хранения номера дня в году, вторая для хранения года. - Введен цикл, который будет повторяться до тех пор, пока не будет введено корректное значение номера дня в году.
- Выводится запрос на ввод номера дня в году.
- Введен цикл, который будет повторяться до тех пор, пока не будет введен корректный год.
- Выводится запрос на ввод года.
- Инициализируется переменная
i
для хранения номера месяца. - Задается условие для цикла, который будет выполняться до тех пор, пока день в месяце не станет равным или меньше нуля или не будет достигнут 12-й месяц.
- Увеличивается значение переменной
i
на единицу. - Значение переменной
d
уменьшается на значение ячейки массиваmas
, соответствующей текущему месяцу. - Если значение переменной
d
стало меньше или равно нулю, то оно увеличивается на значение ячейки массиваmas
, соответствующей текущему месяцу. - Выводится текущий месяц и день.
- Запрос на чтение ввода с клавиатуры.
- Цикл завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д