Язык ! введите с клавиатуры - -две календарные даты(день, месяц) -название дня недели напишите программу определяющая количество дней указанного названия,которые оказались в заданном интервале времени!
181
188
Ответы на вопрос:
Const cdow='вспнвтсрчтптсб'; mdays: array[1..12] of integer=(31,28,31,30,31,30,31,31,30,31,30,31); var d1,m1,y,d2,m2,a,y1,m,dow,dw,i,days: integer; cdw: string; begin writeln('введите начало интервала (день месяц год): '); readln(d1,m1,y); writeln('введите номера дня и месяца конца интервала: '); readln(d2,m2); writeln('укажите, какой день недели подсчитать (вс/пн/вт/ср,чт/пт/сб): '); readln(cdw); { определить номер дня недели для начальной даты } i: =pos(cdw,cdow); if i=0 then writeln('неверно указан день недели! ') else begin dw: =(i-1) div 2; if m1=m2 then days: =d2-d1+1 else begin days: =days+mdays[m1]-d1+1; { до конца месяца первой даты} days: =days+d2; {плюс от начала месяца последней даты} for i: =m1+1 to m2-1 do days: =days+mdays[i] { плюс полные месяцы } end; a: =(14-m1) div 12; y1: =y-a; m: =m1+12*a-2; dow: =(7000+(d1+y1+y1 div 4-y1 div 100+y1 div 400+(31*m) div 12)) mod 7; if (d1> =28) and (m1=2) then { определить, високосный ли год } if ((y mod 4)=0) and ((y mod 100)< > 0) or ((y mod 400)=0) then days: =days+1; { установлено количество дней в интервале } i: =days mod 7; days: =days div 7; if (dw> =dow) and ((dw-dow)< i) then days: = days +1; writeln('количество '+cdw,': ',days) end end. тестовое решение: введите начало интервала (день месяц год): 12 5 2015 введите номера дня и месяца конца интервала: 24 6 укажите, какой день недели подсчитать (вс/пн/вт/ср,чт/пт/сб): ср количество ср: 7
Популярно: Информатика
-
СергейПеро02.03.2023 22:42
-
6Мицуки610.04.2023 18:33
-
школьник81422.07.2021 08:07
-
Alina1234561110927.08.2020 14:40
-
Mondy22817.06.2022 11:12
-
Геймеr22802.12.2021 18:06
-
лис23931.03.2023 12:03
-
SashkaFlavki03.09.2020 07:29
-
камилла73126.08.2022 08:27
-
margogalaxowa09.07.2022 09:31