Задать вопрос
28 ноября, 14:28

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

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

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

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

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

+5
Ответы (1)
  1. 28 ноября, 15:26
    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
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Язык Паскаль! Введите с клавиатуры - -две календарные даты (день, месяц) -название дня недели Напишите программу определяющая количество ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Ввести слово и число раз (Ввод; паскаль, 3). Вывести это слово так: паскаль паскаль паскаль паскаль паскаль паскаль
Ответы (1)
Помогите: Практическая работа №3. Ветвления Уровень A. Напишите программу, которая получает с клавиатуры два целых числа и находит наибольшее и наименьшее из них. Пример: Введите два числа: 1 5 Наименьшее число 1 Наибольшее число 5 Уровень B.
Ответы (1)
Задание 1. Ввести номер месяца и вывести количество дней в нем, а также число ошибок при вводе. Пример: Введите номер месяца: -2 Введите номер месяца: 11 В этом месяце 30 дней. Вы вводили неверно 1 раз. Задание 2.
Ответы (1)
Автомобиль движется по дороге со скоростью х км/ч (x введите с клавиатуры). Он должен проехать 2000 километров. За сколько часов он сможет преодолеть это расстояние и сколько он проедет за первые t часов (t - введите с клавиатуры).
Ответы (1)
Помогите решить задачи на паскаль. 1) Дан массив случайных чисел (количество элементов вводите с клавиатуры). Найти произведение всех элементов массива. 2) Дан массив случайных чисел (количество элементов вводите с клавиатуры).
Ответы (1)