Задать вопрос
21 апреля, 11:15

Язык Паскаль!

Введите с клавиатуры -

-две календарные даты (день, месяц)

-название дня недели

Напишите программу определяющая количество дней указанного названия, которые оказались в заданном интервале времени!

+3
Ответы (1)
  1. 21 апреля, 12:58
    0
    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
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Язык Паскаль! Введите с клавиатуры - -две календарные даты (день, месяц) -название дня недели Напишите программу определяющая количество ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы