IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на вычисление даты, по вводимому номеру дня
Максим
сообщение 6.11.2007 18:13
Сообщение #1


Гость






Добрый вечер smile.gif . У меня такая история: в универе задали задачу на Паскале. Я её сделал, но преподаватель поставил диагноз- "программа страшно неоптимальна". А, и ещё в ней у меня не учитывается високосность годов. Дамы и господа, ПОМОГИТЕ, ПОЖАЛУЙСТА!!!
Задача: эра Скалигера отсчитывает даты в днях, начиная с 1 января 4713 года до нашей эры. Вычислить дату (год,месяц,число) по вводимому номеру дня эры Скалигера. Необходимо использовать григорианское летоисчисление. Учесть отсутствие нулевого года.
Вот что у меня имеется:

program Zadacha;
uses crt;
var
a,n,n1,n2,p:longint;
day,year,yearv,v,t:integer;
month,year1:string;
function konec:boolean;
var
k:char;
begin
writeln;
writeln('Prodolgit programmu? [Y/N]');
k:=readkey;
if upcase(k)='Y'
then konec:=true
else konec:=false;
end;
begin
repeat
clrscr;
writeln('Vvedite nomer dnya ');
readln(n);
if n<1721424 then
begin
t:=0;
year1:=' do nashej ery';
end;
if n>1721423 then
begin
n:=n-1721424;
t:=1;
year1:=' nashej ery';
end;
n1:=n mod 1461;
n2:=n div 1461;
p:=4*n2;
if (n1<366) and (t=0) then
begin
year:=4713-p;
a:=n1;
end;
if (n1>731) and (n1<1097) and (t=0) then
begin
year:=4711-p;
n1:=n1+1;
a:=n1 mod 366;
end;
if (n1>1096) and (t=0) then
begin
year:=4710-p;
n1:=n1+2;
a:=n1 mod 366;
end;
if (n1>365) and (n1<732) and (t=0) then
begin
yearv:=4712-p;
year:=yearv;
v:=1;
n1:=n1+2;
a:=n1 mod 367;
end;
if (n1>364) and (n1<730) and (t=1) then
begin
year:=p+2;
n1:=n1+2;
a:=n1 mod 366;
end;
if (n1<365) and (t=1) then
begin
year:=p+1;
n1:=n1+1;
a:=n1 mod 366;
end;
if (n1>729) and (n1<1095) and (t=1) then
begin
year:=p+3;
n1:=n1+3;
a:=n1 mod 366;
end;
if (n1>1094) and (t=1) then
begin
yearv:=p+4;
year:=yearv;
v:=1;
n1:=n1+6;
a:=n1 mod 367;
end;
if a<60 then
begin
if a<32 then
begin
month:='Yanvar';
day:=a;
end;
if (a>31) and (a<60) then
begin
month:='Fevral';
a:=a-1;
day:=a mod 30;
end;
end;
if (a=60) and (v=1) then
begin
day:=29;
month:='Fevral';
end;
if (a>60) and (v=1) then a:=a-1;
if (a>59) and (a<91) then
begin
month:='Mart';
a:=a+5;
day:=a mod 32;
end;
if (a>90) and (a<121) then
begin
month:='Aprel';
a:=a+3;
day:=a mod 31;
end;
if (a>120) and (a<152) then
begin
month:='May';
a:=a+8;
day:=a mod 32;
end;
if (a>151) and (a<182) then
begin
month:='Iun';
a:=a+4;
day:=a mod 31;
end;
if (a>181) and (a<213) then
begin
month:='Iul';
a:=a+11;
day:=a mod 32;
end;
if (a>212) and (a<244) then
begin
month:='Avgust';
a:=a+12;
day:=a mod 32;
end;
if (a>243) and (a<274) then
begin
month:='Sentyabr';
a:=a+5;
day:=a mod 31;
end;
if (a>273) and (a<305) then
begin
month:='Oktyabr';
a:=a+15;
day:=a mod 32;
end;
if (a>304) and (a<335) then
begin
month:='Noyabr';
a:=a+6;
day:=a mod 31;
end;
if a>334 then
begin
month:='Dekabr';
a:=a-14;
day:=a mod 32;
end;
writeln('Den - ',day);
writeln('Mesyaz - ',month);
writeln('God - ', year, year1);
readln;
until konec=false;
end.

 К началу страницы 
+ Ответить 
Ozzя
сообщение 7.11.2007 10:02
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Задачи связанные с календарем.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Максим
сообщение 7.11.2007 15:15
Сообщение #3


Гость






Спасиоб. good.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.04.2024 6:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"