Консультация № 174167
12.11.2009, 22:14
35.00 руб.
0 2 2
Доброго времени суток.
Паскаль когда-то помнил, но в данной ситуации(просил помочь друг, а я на гулянке), не могу ему предоставить разумный ответ. Товарисчи, напишите код, пожалуйста, для этой задачи.


Требуется по введенному числу n 1<=n<=365 определить на какое число каждого месяца и на какой день недели выпадает n-ый день невисокосного года,начинающегося с понедельника

Обсуждение

Неизвестный
12.11.2009, 23:30
общий
это ответ
Здравствуйте, Третьяков Алексей Михайлович.
Программа в приложении
В массив записана продолжительность каждого месяца.
Для определения дня недели - находим остаток от деления на 7 и в зависимости от его значения выводим день недели.
Чтобы определить число и месяц - начинаем складывать количества дней в каждом месяце до тех пор пока число n не станет меньше либо =
Это означает, что в этом месяце (i) находится данное число.
Чтобы определить данное число, мы из суммы количества дней вычитаем число дней в месяце i (таким образом находим сколько дней прошло в уже завершившихся месяцах) и эту разницу вычитаем из числа n

Приложение:
Program p1;
var data: array [1..12] of integer;
i:integer;
n:integer;
s:integer;
d:integer;
begin

data[1]:=31; data[2]:=28; data[3]:=31; data[4]:=30; data[5]:=31; data[6]:=30;
data[7]:=31; data[8]:=31; data[9]:=30; data[10]:=31; data[11]:=30; data[12]:=31;
write('n='); readln(n);
if (n<1) or (n>365) then exit;
s:=0; i:=0;
repeat
inc(i);
s:=s+data[i];
until n<=s;
d:=n-s+data[i];
write(d);
case i of

1: writeln('Янв');
2: writeln('Фев');
3: writeln('Мар');
4: writeln('Апр');
5: writeln('Май');
6: writeln('Июн');
7: writeln('Июл');
8: writeln('Авг');
9: writeln('Сен');
10: writeln('Окт');
11: writeln('Ноя');
12: writeln('Дек');
end;
case n mod 7 of

1: writeln('Пон');
2: writeln('Вто');
3: writeln('Сре');
4: writeln('Чет');
5: writeln('Пят');
6: writeln('Суб');
0: writeln('Вос');

end;
readln;
end.
Неизвестный
12.11.2009, 23:59
общий
13.11.2009, 00:00
это ответ
Здравствуйте, Третьяков Алексей Михайлович.
Код ниже, все очень просто и интуитивно понятно (к тому же если раньше сами программировали). Удачи


Приложение:
uses crt;
var
n,i,r :integer;
day:array [1..12] of integer;
begin
day[1]:=31;
day[2]:=28;
day[3]:=31;
day[4]:=30;
day[5]:=31;
day[6]:=30;
day[7]:=31;
day[8]:=31;
day[9]:=30;
day[10]:=31;
day[11]:=30;
day[12]:=31;
i:=0;
clrscr;
readln(n);
repeat
i:=i+1;
n:=n-day[i];
until n<0;
n:=n+day[i];
i:=i-1;
r:= n mod 7;
write(n,' ');
case i of
0:write('Yanvar ');
1:write('Fevral ');
2:write('Mart ');
3:write('Aprel ');
4:write('May ');
5:write('Iun ');
6:write('Iul ');
7:write('Avdust ');
8:write('Sentabr ');
9:write('Oktabr ');
10:write('Noyabr ');
11:write('Dekabr ');
end;
case r of
1:writeln('Ponedelnik');
2:writeln('Vtornik');
3:writeln('Sreda');
4:writeln('Chetverg');
5:writeln('Patnica');
6:writeln('Sybbota');
7:writeln('Voskresenie');
end;

readln;

end.
Форма ответа