Язык Паскаль!!!Введите с клавиатуры --две календарные даты(денек, месяц)-заглавие денька
Язык Паскаль!!!
Введите с клавиатуры -
-две календарные даты(денек, месяц)
-название денька недели
Напишите программку определяющая количество дней обозначенного наименования,которые оказались в данном промежутке медли!
Пузанкова
Эмилия
Есть неувязка: так как год не указан, неизвестно с какого дня недели начинается интервал, как следует, невероятно найти денек недели ни для одной даты из этого промежутка. Следует либо указать год (это сложнее), или название денька недели для начала промежутка.
Лилия Лекчинова
скорее всего денек недели для начала промежутка.
Ополченцева
Эльвира
Также надо знать, високосный ли год, если в интервал попадает переход с февраля на март
Тимур Кагыркин
помогите пожалуйста))
Антонина Фондымакина
Либо тогда все же указать год и воткнуть метод "постоянного календаря", можно в упрощенном виде для 20-21 веков....
Руслан Кошталев
В целом выходит теснее монстровито...(((
1 ответ
Амзель
Виктория
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 (d1gt;=28) and (m1=2) then найти, високосный ли год
if ((y mod 4)=0) and ((y mod 100)lt;gt;0) or ((y mod 400)=0)
then days:=days+1;
установлено количество дней в промежутке
i:=days mod 7;
days:=days div 7;
if (dwgt;=dow) and ((dw-dow)lt; i) then days:= days +1;
Writeln('Количество '+cdw,': ',days)
end
end.
Тестовое решение:
Введите начало промежутка (денек месяц год):
12 5 2015
Введите номера денька и месяца конца интервала:
24 6
Укажите, какой денек недели подсчитать (Вс/Пн/Вт/Ср,Чт/Пт/Сб):
Ср
Количество Ср: 7
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 (d1gt;=28) and (m1=2) then найти, високосный ли год
if ((y mod 4)=0) and ((y mod 100)lt;gt;0) or ((y mod 400)=0)
then days:=days+1;
установлено количество дней в промежутке
i:=days mod 7;
days:=days div 7;
if (dwgt;=dow) and ((dw-dow)lt; i) then days:= days +1;
Writeln('Количество '+cdw,': ',days)
end
end.
Тестовое решение:
Введите начало промежутка (денек месяц год):
12 5 2015
Введите номера денька и месяца конца интервала:
24 6
Укажите, какой денек недели подсчитать (Вс/Пн/Вт/Ср,Чт/Пт/Сб):
Ср
Количество Ср: 7
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Составить монолог от имени дневника двоечника 7-10 предложений
Русский язык.
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо
Разные вопросы.
Облако тегов