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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2013, 18:00   #1
Малгано
 
Регистрация: 26.06.2013
Сообщений: 6
По умолчанию Ветвление

помогите пожалуйста доделать задачу, вот условие задачи:

Дата некоторого дня определяется двумя натуральными числами m (порядковый номер месяца) и n(число). Принять так же, что год не является високосным. По заданным n и m:
А) дату предыдущего дня(принять, что n и m не определяют 1 января);
Б) дату предыдущего дня(принять, что n и m не определяют 31 декабря);

у меня не получается сделать что год не является високосным, что дата предыдущего дня не определяет 1 января и что дата предыдущего дня не определяет 31 декабря.

вот мой код этой задачи
Код:
procedure TForm5.Button6Click(Sender: TObject);               
var n,m,m1,f,f1,p:integer;
begin
  m:=StrToInt(edit18.text);
  n:=StrToInt(edit19.text);

  if (m=1) then edit31.text:='Январь';     //выводи отдельно месяц словом
  if (m=2) then edit31.text:='Февраль';
  if (m=3) then edit31.text:='март';
  if (m=4) then edit31.text:='Апрель';
  if (m=5) then edit31.text:='Май';
  if (m=6) then edit31.text:='Июнь';
  if (m=7) then edit31.text:='Июль';
  if (m=8) then edit31.text:='Август';
  if (m=9) then edit31.text:='Сентябрь';
  if (m=10) then edit31.text:='Октябрь';
  if (m=11) then edit31.text:='Ноябрь';
  if (m=12) then edit31.text:='Декабрь';

  if (n>31) then Application.MessageBox('месяц ограничен 31 днем','ERROR!',MB_OK);
  if (m>12) then Application.MessageBox('год ограничен 12 месяцами','ERROR!',MB_OK);

  if (f>0) then f:=n+1;
  if (f>0) then f1:=n-1;

  if (f>31) then  f:=1 else f:=n+1;
  if (f1<=1) then  f1:=31 else f1:=n-1;

  Edit20.text:=IntToStr(f1);          //вывод предыдущего дня
  edit21.text:=IntToStr(f);           //вывод следующего дня
end;
Малгано вне форума Ответить с цитированием
Старый 27.06.2013, 18:20   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
const
    mday : array [1..12] of Integer = (31, 29, 31, 30, 31, 30, 31, 31,
                     30, 31, 30, 31);

function IsLeapYear (y : Integer) : Boolean;
begin
    IsLeapYear := (y mod 400 = 0) or ((y mod 4 = 0) and (y mod 100 <> 0));
end;

procedure NextDay (var d, m, y : Integer);

begin
    Inc (d);

        if (d > mday[m]) or not(IsLeapYear(y)) and (m=2) and (d=29) then begin
            d := 1;
                Inc (m);
            if m > 12 then begin
                    m := 1;
                           Inc (y)
                end
        end;
end;
Poma][a вне форума Ответить с цитированием
Старый 27.06.2013, 18:37   #3
Малгано
 
Регистрация: 26.06.2013
Сообщений: 6
По умолчанию

спасибо за помощь, не подскажешь еще куда это вписывать надо?
Малгано вне форума Ответить с цитированием
Старый 27.06.2013, 18:44   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
ReadLn (d, m, y);
NextDay;
WriteLn (d, ' ', m, ' ', y)
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ветвление Raphael Помощь студентам 2 13.10.2010 23:03
ветвление Rfn.if Помощь студентам 4 13.10.2010 14:26
Ветвление Woxx Паскаль, Turbo Pascal, PascalABC.NET 6 07.09.2010 17:26
ветвление beygul Помощь студентам 11 25.08.2010 13:20
Ветвление cerega87 Паскаль, Turbo Pascal, PascalABC.NET 5 07.06.2010 22:43