Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2009, 11:44   #1
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
Восклицание Pascal-Формирование сл дня.

Добрый день ребята, помогите решить задачу по паскалю.
Условие.
Пользователь вводит дату (день месяц год), сначала надо проверить чтобы год был не високосным, и если это правда,а то вывести на экран сл. день.
Например

Вводим 01.1.2009, а на экран выводим 02.1.2009.
Айдар вне форума Ответить с цитированием
Старый 06.09.2009, 11:52   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Напишу кусками:
If (year mod 4 <> 0) then//Если год не високосный
inc(day);//То прибавляем один к дню
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 06.09.2009, 12:05   #3
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

russian-stalker
Слушай а можешь написать целиком программу, буду очень благодарен.
Айдар вне форума Ответить с цитированием
Старый 06.09.2009, 14:29   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Во-первых вы не дописали условие, т.е. надо ли учитывать кол-во дней в месяце и переносить их в следующий (31+1=32)? Обязательно ли нужно считывать по формату ДД.ММ.ГГГГ или можно через пробел?
Во-вторых, у вас нету даже заготовок, так что вам прямиком во фриланс.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 06.09.2009, 14:39   #5
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

russian-stalker уже решил вам задачу, осталось только прикрутить ввод
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
year,day,month:integer;
begin
writeln('BBEDITE CHISLO');
readln(day);
if day>31 then writeln('HET CHISLA');
writeln('BBEDITE MECYAC');
readln(month);
if month>12 then writeln('HET MECYACA');
writeln('BBEDITE GOD');
readln(year);
  { TODO -oUser -cConsole Main : Insert code here }
  If (year mod 4 <> 0) then
inc(day);
writeln(day,'.',month,'.',year);
readln
end.
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 06.09.2009, 14:56   #6
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

учитывать кол-во дней в месяце и переносить их в следующий
например 31 день т.е. следующий день, 1 день следующего месяца
Учитывать да

Вот это наверно самое сложное ведь где-то 30 дней а где-то 31

Последний раз редактировалось Stilet; 07.09.2009 в 09:58.
Айдар вне форума Ответить с цитированием
Старый 06.09.2009, 15:26   #7
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Типа того
Код:
....
if day=32 then
begin
day:=1;
month:=month+1;
end;
...
Только дней в месяце может быть и 30, а прога только для 31 дня. Тут главное идея, а остальное сами доделаете
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 06.09.2009, 15:30   #8
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Тогда где-то так:
Код:
program ex1;
var
year,day,m:integer;
db,mb:boolean;
month: array[1..12] of integer;
begin
writeln('BBEDITE GOD');
readln(year);
month[1]:=31;
If (year mod 4 = 0) then
month[2]:=28 else
month[2]:=29;
month[3]:=31;
month[4]:=30;
month[5]:=31;
month[6]:=30;
month[7]:=31;
month[8]:=31;
month[9]:=30;
month[10]:=31;
month[11]:=30;
month[12]:=31;
while mb=false do
begin
writeln('BBEDITE MECYAC');
readln(m);
if m>12 then writeln('HET MECYACA') else mb:=true;
end;
while db=false do
begin
writeln('BBEDITE CHISLO');
readln(day);
if day>month[m] then writeln('HET CHISLA') else db:=true;
end;
If (year mod 4 <> 0) then
inc(day);
if day>month[m] then
begin
  day:=1;
  inc(m);
end;
if m>12 then
begin
  m:=1;
  inc(year);
end;
writeln(day,'.',m,'.',year);
readln
end.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 06.09.2009, 15:48   #9
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию

Насчет високосного года:
Цитата из Вики: "Иными словами, год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400. Год не является високосным, если он не кратен 4, либо кратен 4, но при этом кратен 100 и не кратен 400."
Так что, условие будет
Код:
If (year mod 4 <> 0) and (year mod 100 = 0) or (year mod 400 <> 0) then ...
anGeee вне форума Ответить с цитированием
Старый 06.09.2009, 15:54   #10
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Бред, разве 2000 год не високосный?
Високосным считается каждый кратный 4 год
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование и обработка массивов (pascal) deceiver Помощь студентам 5 17.03.2009 17:38
Смена дня UnChanter Общие вопросы Delphi 13 03.02.2009 16:56
Pascal. Формирование меню. Arizonec Помощь студентам 0 10.12.2008 00:45
Help!!! диплом через 2 дня!!!! WinD Помощь студентам 3 23.06.2007 20:21