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

Тема в разделе "Delphi - FAQ", создана пользователем -, 16 ноя 2007.

  1. Гость

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


    Код (Text):
    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.


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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Всё тоже саоме тока кейсов будет больше :) ))))
     
  3. Гость

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

    root Гость

    да до нас ее уже составили это так называемая формула Зеллера
    Код (Text):
    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.
    Почему?
     
  6. root

    root Гость

    Для: ЖэКЫЧ
    код приведи
    Код Паскаля
    Код (Text):
    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. Гость

    Код (Text):
    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.
     
  8. root

    root Гость

    Для: ЖэКЫЧ
    UP
     
  9. Гость

    Спасибо!
     
  10. root

    root Гость

    Для: ЖэКЫЧ
    + в репу если что :)
     
Загрузка...

Поделиться этой страницей