Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычисление Юлианской даты, Помогите новичку. 
:(
    Опции темы
Artemis
Дата 12.9.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.9.2007

Репутация: нет
Всего: нет



Всем привет.

Вот взялся за обучение Паскаля, решил написать маленькую програмку вычисления Юлианской даты. Но что то не получается у меня  :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
PM MAIL   Вверх
volvo877
Дата 13.9.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



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

Ну, и третье: подсветка синтаксиса не просто так на форуме придумана... 
PM MAIL   Вверх
Artemis
  Дата 18.9.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.9.2007

Репутация: нет
Всего: нет



Вот Решил всё это дело оформить в виде процедуры, но что то неполучается поможите 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;



Это сообщение отредактировал(а) Artemis - 18.9.2007, 16:18
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0726 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.