Язык Паскаль!!!Введите с клавиатуры --две календарные даты(денек, месяц)-заглавие денька
Язык Паскаль!!!
Введите с клавиатуры -
-две календарные даты(денек, месяц)
-название денька недели
Напишите программку определяющая количество дней обозначенного наименования,которые оказались в данном промежутке медли!
Пузанкова
Эмилия
Есть неувязка: так как год не указан, неизвестно с какого дня недели начинается интервал, как следует, невероятно найти денек недели ни для одной даты из этого промежутка. Следует либо указать год (это сложнее), или название денька недели для начала промежутка.
Лилия Лекчинова
скорее всего денек недели для начала промежутка.
Ополченцева
Эльвира
Также надо знать, високосный ли год, если в интервал попадает переход с февраля на март
Тимур Кагыркин
помогите пожалуйста))
Антонина Фондымакина
Либо тогда все же указать год и воткнуть метод "постоянного календаря", можно в упрощенном виде для 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
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов