Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с датами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Людмила
Необходимо решить задачу:
Определить k - порядковый номер дня года по дате d, m, y (день, месяц, год).
Пыталась решить сама, считает правильно до 8 месяца, потом выдает ерунду.
вот код программы, может кто подскажет в чем дело...
Код

program god;
uses CRT;
var k: 1..366;
   d: 1..31;
   m: 1..12;
   y: 0..5000;
   yy: 1..100;
   tmp:integer;
begin
   ClrScr;
   TextColor(LightBlue);
   writeln('wwedite god');
   TextColor(LightGray);
   readln(y);
   TextColor(LightBlue);
   writeln('wwedite mesyac');
   TextColor(LightGray);
   readln(m);
   TextColor(LightBlue);
   writeln('wwedite den');
   TextColor(LightGray);
   readln(d);
   yy:=y mod 100;
   tmp:=(m+10) div 13;
   k:=3055*(m+2) div 100-tmp*2-91+
   (1-(yy-yy div 4*4+3) div 4+
   (yy-yy div 100*100+99) div 100-
   (yy-yy div 400*400+399) div 400)*tmp+d;

      TextColor(LightRed);
     writeln('poryadkovyi nomer dnya goda ', k);
     ReadKey;
end.
volvo
В следующий раз пользуйтесь поиском, пожалуйста... Я думаю, вот это Вам поможет: http://forum.pascal.net.ru/index.php?showt...indpost&p=34965
Людмила
Цитата(volvo @ 12.02.05 16:31)
В следующий раз пользуйтесь поиском, пожалуйста... Я думаю, вот это Вам поможет: http://forum.pascal.net.ru/index.php?showt...indpost&p=34965

Я смотрела эти задачи, у них совсем другой алгоритм, хотелось бы узнать что не правильно в моём, по идеи должен идти, да и до 8 месяца считает без отказно. Помогите если не трудно. unsure.gif
volvo
Ну если Вам хочется изобретать велосипед - пожалуйста, только вот в вышеприведенной программе я не увидел никакого алгоритма. Ведь в году все-таки 12 месяцев, следовательно это какой-то цикл, покажите мне у Вас в программе хоть один оператор, связанный с циклом... А выписать все операторы в одну строчку, это - извините, не алгоритм, а подгонка под ответ... Да и преподаватель (или пользователь), наверняка не станет разбираться с такой программой...

Мне, например, расхотелось вникать в логику работы программы, как только я увидел число "k:=3055*(m+2) div ..." А почему, собственно, 3055? А не 5424? или 6405? Так что, делайте выводы...
Людмила
Цитата(volvo @ 13.02.05 14:22)
Ну если Вам хочется изобретать велосипед - пожалуйста, только вот в вышеприведенной программе я не увидел никакого алгоритма. Ведь в году все-таки 12 месяцев, следовательно это какой-то цикл, покажите мне у Вас в программе хоть один оператор, связанный с циклом... А выписать все операторы в одны строчку, это - извините, не алгоритм, а подгонка под ответ... Да и преподаватель (или пользователь), наверняка не станет разбиралься с такой программой...

Мне, например, расхотелось вникать в логику работы программы, как только я увидел число "k:=3055*(m+2) div ..." А почему, собственно, 3055? А не 5424? или 6405? Так что, делайте выводы...


Спасибо. Попробую пересмотреть полностью. Извиняюсь, я только начала учиться ещё и заочно, очень трудно мне даётся Паскаль с нулевым опытом программирования. sad.gif
Людмила
Огромное спасибо у меня получилось с Вашей помощью. :rose:
Я ВАМ очень благодарна.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.