Pascal. Школьная задачка. Перевод из номера дня в году в название месяца и дня в месяце

Опять про старое, изжитое, но очень хорошо известное старое. Ко мне когда-то обращались за помощью с такой задачей:

Напишите программу, которая принимает номер дня в году а выводит название месяца и номер дня в этом месяце. Использовать циклы. Реализация на Pascal.

Оформлена как программа.

program perevod;
var
num : integer; {номер дня в году}
month : integer; {номер месяца}
day : integer; {номер дня}
i: integer;
begin
month := 1;
writeln('Enter Integer Value: ');
readln(num);
if num <= 365 then
begin
for i:= 1 to num do
begin
if (month = 2) and (day = 28) then
begin
inc(month);
day:= 0;
end;
if ((month = 4)
or (month = 6)
or (month = 9)
or (month = 11)) and (day = 30) then
begin
inc(month);
day:= 0;
end;
if ((month = 1)
or (month = 3)
or (month = 5)
or (month = 7)
or (month = 8)
or (month = 10)
or (month = 12)) and (day = 31) then
begin
inc(month);
day:= 0;
end;
inc(day);
end;
if (month = 1) then writeln(day, ' Января');
if (month = 2) then writeln(day, ' Февраля');
if (month = 3) then writeln(day, ' Марта');
if (month = 4) then writeln(day, ' Апреля');
if (month = 5) then writeln(day, ' Мая');
if (month = 6) then writeln(day, ' Июня');
if (month = 7) then writeln(day, ' Июля');
if (month = 8) then writeln(day, ' Августа');
if (month = 9) then writeln(day, ' Сентября');
if (month = 10) then writeln(day, ' Октября');
if (month = 11) then writeln(day, ' Ноября');
if (month = 12) then writeln(day, ' Декабря');
end
else
writeln('incorrect Value');
readln;
end.

Что тут происходит:

  1. Начинаем с первого месяца
  2. выводим сообщение пользователю и считываем в переменную, что он ввел.
  3. после этого проверяем, какое число он ввел? 400 дней в году не бывает :) Так что если число нормальное, то работа продолжится, иначе-выдача сообщения о том, что мол данные кривые
  4. Дальше самое интересное. Цикл, который перебирает дни и раз в определенное количество дней прибавляет количество месяцев и обнуляет количество дней в этом месяце.
  5. И последнее. Перевод численного представления месяца в его название и приписывание числа в этом месяце. Всё просто

1 Response

Добавить комментарий