Допустим, мы ведем счет дней недели с воскресенья и присваиваем дням такие номера:  0- вс, 1- пн, 2- вт, 3- ср, 4- чт, 5- пт, 6- сб. определим, когда в январе было первое вс. если 31 был пн, то 4 недели назад, т.е. 31-28=3 числа тоже был пн. а вс было перед пн, т.е. 2 января. числа от 0 до 6 - это остатки целочисленного деления на 7. получается, что остаток деления числа 2 на 7, должен  нас к нулю. а он равен двум.  идея:  вычтем из остатка 2, чтобы получился ноль. идея хороша для остатка 2, 3, 4, 5, и 6. она даст нам значения 0, 1, 2, 3 и 4. а вот для остатков 0 и 1, она даст -2 и -1, что нехорошо. внесем корректировку. если получилось отрицательное значение, увеличим его на 7.  проверим ,будет ли это работать. 1 января - сб (номер дня 6) алгоритм дает 1-2 = -1 и +7 = 6 - верно 2 января - вс (номер дня 0) алгоритм дает 2-2 = 0 - верно 3 января - пн (номер дня 1) алгоритм дает 3-2 = 1 - верно 4 января - вт (номер дня 2) алгоритм дает 4-2 = 2 - верно 5 января - ср (номер дня 3) алгоритм дает 5-2 - 3 - верно 6 января - чт (номер дня 4) алгоритм дает 6-2 = 4 - верно 7 января - пт (номер дня 5) алгоритм дает 0-2 = -2 и +7 = 5 - верно 8 января - сб (номер дня 6) алгоритм дает 1-2 = -1 и +7 = 6 - верно 9 января - вс (номер дня 0) алгоритм дает 2-2 = 0 - верно  все работает.   // pascalabc.net 3.3, сборка 1625 от 17.01.2018  // внимание!  если программа не работает, обновите версию!   begin    var chislo: =readinteger('номер дня в январе 2011 года: ');     chislo: =chislo mod 7-2;     if chislo< 0 then chislo: =chislo+7;     var y: string;     case chislo of    0: y: ='воскресенье';     1: y: ='понедельник';     2: y: ='вторник';     3: y: ='среда';     4: y: ='четверг';     5: y: ='пятница';     6: y: ='суббота'    end;     writeln('это ',y) end.   примеры номер дня в январе 2011 года:  31 это понедельник  номер дня в январе 2011 года:  13 это четверг  номер дня в январе 2011 года:  23 это воскресенье
Спасибо
						                     
						                  
Популярные вопросы