По счёту дня високосного года определяет какой идёт месяц

  • Автор темы -
  • Дата начала

Гость
#1
Вопрос Таков:
Есть задача, которая по счёту дня високосного года определяет какой идёт месяц, а надо что бы она определяла ещё и день недели, помогите составить такую формулу!


Код:
program m5;
uses crt;
var a:integer;
begin
clrscr;
writeln('vvedite ');
readln(a);
case a of
1..31:writeln('Январь);
31..60:writeln('Февраль');
60..91:writeln('Март');
91..121:writeln('Апрель');
121..152:writeln('Май');
152..182:writeln('Июнь');
182..213:writeln('Июль');
213..243:writeln('Август');
243..274:writeln('Сентябрь');
274..304:writeln('Октябрь');
304..335:writeln('Ноябрь');
335..366:Writeln('Декабрь');
else writeln('error');
end;
readln;
end.
end;
readln;
end.


Заранее благодарю!
 

Гость
#3
Делал я эту задачу со всеми 366 кейсами, а мне на неё ещё блок схему составит надо, так что это не раельно(вообще конечно реально, на несколько листов, но мне так нельзя), мне надо как нибуть в формулу запихнуть это! :)
 
R

root

Гость
#4
помогите составить такую формулу
да до нас ее уже составили это так называемая формула Зеллера
формула:
h=(q+[((m+1)*26)/10]+K+[k/4]+[j/4]+2j) mod 7
где:
h= это день недели 0 субота
q= день в месяце
m= месяц
J = век [год/100]
K= год в веке [год mod 100]
Код:
function DayOfWeek(Day, Month, Year: Integer) : Integer;
var
century, yr, dw: Integer;
begin
if Month < 3 then
begin
Inc(Month, 10);
Dec(Year);
end
else
Dec(Month, 2);
century := Year div 100;
yr := year mod 100;
dw := (((26 * month - 2) div 10) + day + yr + (yr div 4) +
(century div 4) - (2 * century)) mod 7;
if dw < 0 then DayOfWeek := dw + 7
else DayOfWeek := dw;
if (dw = 0) or ((dw+7)=0) then DayOfWeek:=7
end;
осталось только год придумать :)
 

Гость
#5
Спасибо за формулу, но мне почему то она постоянно выдаёт ошибку:
Error 36: begin expected.
Почему?
 
R

root

Гость
#6
Для: ЖэКЫЧ
код приведи
Код Паскаля
Код:
function DayOfWeek(Day, Month, Year: Integer) : Integer;
var
century, yr, dw: Integer;
begin
if Month < 3 then
begin
Month:=Month+10;
Year:=Year-1;
end
else
Month:=Month-2;
century := Year div 100;
yr := year mod 100;
dw := (((26 * month - 2) div 10) + day + yr + (yr div 4) +
(century div 4) - (2 * century)) mod 7;
if dw < 0 then DayOfWeek := dw + 7
else DayOfWeek := dw;
if (dw = 0) or ((dw+7)=0) then DayOfWeek:=7
end;

begin
writeln('DayOf=',DayOfWeek(17,11,2007) );
readln;
end.
 

Гость
#7
Код:
Program m93;
uses crt;
function DayOfWeek(Day, Month, Year: Integer) : Integer;
var century, yr, dw: Integer;
begin
if Month < 3 then
begin
Inc(Month, 10);
Dec(Year);
end
else
Dec(Month, 2);
century := Year div 100;
yr := year mod 100;
dw := (((26 * month - 2) div 10) + day + yr + (yr div 4) +
(century div 4) - (2 * century)) mod 7;
if dw < 0 then DayOfWeek := dw + 7
else DayOfWeek := dw;
if (dw = 0) or ((dw+7)=0) then DayOfWeek:=7;
end;
end.