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

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

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

 
 Ответить  Открыть новую тему 
> Задача на вычисление даты, по вводимому номеру дня
сообщение
Сообщение #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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

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

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


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


Гость






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

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

 





- Текстовая версия 30.10.2020 23:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name