Номер дня с начала года
Заданы три числа, которые обозначают число, месяц, год. Найти порядковый номер даты, начиная отсчет с начала года.
Описание переменных:
- M - количество дней в месяцах невисокосного года;
- day, month, year - день, месяц, год;
- qty - количество дней от начала года.
Алгоритм решения задачи:
- Находим суммарное количество дней за месяцы, предшествующие указанному. Так, если месяц равен 3-м, то надо сложить количество дней за первый и второй месяц.
- Добавляем к найденной сумме количество дней в указанном месяце. Так, если было указан 10-й день 3-го месяца, то надо к сумме дней первых двух месяцев прибавить 10.
- Если год високосный, то надо добавить один день, если месяц больше 2-го. Високосный год - это год, который делится на 4, но если он делится на 100, то должен делиться и на 400. Например, 1900 год - невисокосный, а 2000 - високосный, все года между ними, делящиеся на 4, - високосные.
Программа на языке Паскаль:
const M: array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31);
var
day,month: byte;
year, qty: word;
i: byte;
begin
write('День: '); readln(day);
write('Месяц: '); readln(month);
write('Год: '); readln(year);
qty := 0;
for i:=1 to month-1 do
qty := qty + M[i];
qty := qty + day;
if month > 2 then
if year mod 4 = 0 then
if (year mod 100 = 0) and (year mod 400 <> 0) then
qty := qty
else
qty := qty + 1;
writeln('Номер дня с начала года: ', qty);
end.
Примеры выполнения программы:
День: 10
Месяц: 3
Год: 2007
Номер дня с начала года: 69
День: 10
Месяц: 3
Год: 2012
Номер дня с начала года: 70