Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Вычисление Юлианской даты


Автор: Artemis 12.9.2007, 16:34
Всем привет.

Вот взялся за обучение Паскаля, решил написать маленькую програмку вычисления Юлианской даты. Но что то не получается у меня  :unsure: Вот алгоритм.

Условимся обозначать:

YYYY - год
ММ - номер месяца
ДД - число месяца(дата)

Если ММ>2, то Y=YYYY и m=ММ
Если ММ=1 или ММ=2, то Y=YYYY-1 и m=MM+12

Находим:
А=INT(Y/100)    B=2-A+INT(A/4)       

Находим юлианскую дату:
JD=INT(365.25*Y)+INT(30.6001*(m+1))+ДД+1720994.5+B  (2)

Вот что я намудрил, не до конца но где начинается оператор else if выдаёт ошибку....

Код

Program JDay;
Var
    YYYY,MM,DD, y,m: real;
Begin
    Write('Year'); Readln(YYYY);
    Write('Month'); Readln(MM);
    Write('Day'); Readln(DD);
If MM>2 then
   begin
      y:=YYYY;
      m:=Month;
    end
else if MM:=1 or MM:=2 then
     begin
        y:=YYYY-1;
        m:=MM+!12;
End 


Помогите Please разобраться почему там ошибка.

Автор: volvo877 13.9.2007, 10:06
Тебе на другом форуме уже объяснили, почему там ошибка: во-первых - не путай операции сравнения и присваивания, а во-вторых - приоритет OR выше приоритета операции сравнения, следовательно оба сравнения надо брать в скобки...

Ну, и третье: подсветка синтаксиса не просто так на форуме придумана... 

Автор: Artemis 18.9.2007, 16:16
Вот Решил всё это дело оформить в виде процедуры, но что то неполучается поможите PLS.
Код

Program Sun;
{-------------Входные параметры---------}
procedure VJD (YYYY,Y:word; MM,m,DD:byte; JD,A,B: real);
 begin
     
     Write('Год', 'Месяц', 'День'); Readln(YYYY, MM, DD);
IF MM>2 then
   begin
        Y:=YYYY;
        m:=MM;
   end
Else if (MM=1) or (MM=2) then
     begin
     Y:=YYYY-1;
     m:=MM+12;
     end
end
begin
   A:=Int(Y/100);
   B:=2-A+int(A/4);
   {-------------Вычисляем Юлианскую дату-------------}
   JD:=int(365.25*Y)+int(30.6001*(m+1))+DD+1720994.5+B;
   WriteLn(' JD = ',JD);
   end
end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)