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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2008, 11:28   #1
|v||v|<<IpShot
Пользователь
 
Регистрация: 21.08.2008
Сообщений: 40
По умолчанию задача с записью

Мне нужно решить задачу через запись,но я не знаю что отнести к записи
Задача:определить дату завтрашнего дня если известна сегодняшняя дата.
заранее огромное спасибо =)
|v||v|<<IpShot вне форума Ответить с цитированием
Старый 21.08.2008, 12:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну в запись ты можешь вставить дату:
Типа
Код:
Dates=record
 Year,Month,Day:byte;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2008, 13:36   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, и могут потребоваться функции (выдернул из Turbo Professional (c) TurboPower Software)
Код:
  function IsLeapYear(Year : Integer) : Boolean;
    {-Return True if Year is a leap year}
  begin
    IsLeapYear := (Year mod 4 = 0) and (Year mod 4000 <> 0) and
      ((Year mod 100 <> 0) or (Year mod 400 = 0));
  end;

  function DaysInMonth(Month, Year : Integer) : Integer;
    {-Return the number of days in the specified month of a given year}
  begin
    if Word(Year) < 100 then
      Inc(Year, 1900);
    case Month of
      1, 3, 5, 7, 8, 10, 12 :
        DaysInMonth := 31;
      4, 6, 9, 11 :
        DaysInMonth := 30;
      2 :
        DaysInMonth := 28+Ord(IsLeapYear(Year));
    else
      DaysInMonth := 0;
    end;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.08.2008, 14:30   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Year,Month,Day:byte;
Для Year тип byte не пойдет, нужно Word.
puporev вне форума Ответить с цитированием
Старый 21.08.2008, 14:38   #5
|v||v|<<IpShot
Пользователь
 
Регистрация: 21.08.2008
Сообщений: 40
По умолчанию

спс большое попробую
|v||v|<<IpShot вне форума Ответить с цитированием
Старый 21.08.2008, 14:42   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нужно Word.
Логично, просто я от 2000 отталкивался
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2008, 21:38   #7
|v||v|<<IpShot
Пользователь
 
Регистрация: 21.08.2008
Сообщений: 40
По умолчанию

еще 1 вопросик что делает Ord?

DaysInMonth := 28+Ord(IsLeapYear(Year));

stilet если можешь оставь номер аси плз так удобней спрашивать =)

Последний раз редактировалось Alex21; 24.08.2008 в 15:01.
|v||v|<<IpShot вне форума Ответить с цитированием
Старый 21.08.2008, 22:32   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
DaysInMonth := 28+Ord(IsLeapYear(Year));
ну, не понимаете как это написано - так Вы же логику понимаете - по русски тут написано так
в феврале месяце к 28 дням прибавить 1, если год високосный.
Как это работает.
Функция IsLeapYear возращает логическое значение (тип boolean) - т.е. она может быть True (год Year високосный) или False (не високосный)/
функция ORD - возращает порядковый номер.
Для логической переменной будет 0 или 1.
попробуйте запустить программу:
Код:
  WriteLn( Ord(True) );
  WriteLn( Ord(False) );
получите:
1
0

всё равно непонятно? :-)
Тогда данный оператор можно не выпендриваться и заменить так:
Код:
if IsLeapYear(Year) then  DaysInMonth := 29
 else DaysInMonth := 28;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.08.2008, 06:43   #9
|v||v|<<IpShot
Пользователь
 
Регистрация: 21.08.2008
Сообщений: 40
По умолчанию

спс разжевал и в ротик положил прям =)
|v||v|<<IpShot вне форума Ответить с цитированием
Старый 23.08.2008, 16:10   #10
|v||v|<<IpShot
Пользователь
 
Регистрация: 21.08.2008
Сообщений: 40
По умолчанию

здравствуйте.
напомните пожалуйста как исполняется переход на нужную строку с помощью label и еще gosub вроде или goto я за лето все забыл=).
P.S. желательно показать на примере.
зарание большое спс.
|v||v|<<IpShot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с записью большого файла Rembo Свободное общение 17 17.06.2008 12:47
В Edit - Inicial и Year в соответствии с выбранной записью в комбобоксе Колян12 БД в Delphi 2 26.05.2008 03:49
Проблема с записью в реест eks-s Общие вопросы Delphi 4 02.02.2008 13:42
Истинный объём памяти занимаемый записью, record Мессир Общие вопросы Delphi 35 28.01.2008 08:52
Проблема с записью в файл...( Regloger Помощь студентам 10 15.11.2007 17:49