Другие языки программирования и технологии

Напишите программу для pascal, пожалуйста. Введена дата, определить дату следующего воскресенья.

var i, day: byte;
begin
write ('Введите дату (от 1 до 20) = ');
readln (i);
writeln ('Выберите день недели для введенной даты:');
writeln ('1) Понедельник ...');
writeln ('2) Вторник ...');
writeln ('... ');
writeln ('6) Суббота ...');
writeln ('7) Воскресенье ...');
readln (day);
writeln ('Воскресенье будет = ', 7-day + i );
end.
Юрий Федулов
Юрий Федулов
20 124
Лучший ответ
W = d + [ (13m - 1) / 5 ] + y + [ y / 4 ] + [ c / 4 ] - 2c

где d - число месяца;
m - номер месяца, начиная с марта (март=1, апрель=2, ..февраль=12);
y - номер года в столетии (например, для 1965 года y=65. Для января и февраля 1965 года, т. е. для m=11 или m=12 номер года надо брать предыдущий, т. е. y=64);
c - количество столетий (например, для 2000 года c=20. И здесь для января и февраля 2000 года надо брать предыдущее столетие с=19);
квадратные скобки означают целую часть полученного числа (отбрасываем дробную) .

Результат W делите на 7 и модуль остатка от деления даст день недели (воскресенье=0, понедельник=1, ..суббота=6)

Пример: для 31 декабря 2008 года определяем:
d=31, m=10, y=8, c=20

По формуле находим:
W = 31 + [ ( 13 * 10 - 1 ) / 5 ] + 8 + [ 8 / 4 ] + [ 20 / 4 ] - 2 * 20 =
= 31 + 25 + 8 + 2 + 5 - 40 = 31

Теперь делим W на 7 и находим остаток от деления: 31 / 7 = 4 и 3 в остатке.
Тройка соответствует дню недели СРЕДА.
получаешь день недели
рассчитываешь кол-во дней до понедельника
и прибавляешь к текущей дате
. профит .
ЮВ
Юрий Власов
93 414