Выяснить, предшествует ли время t времени t1 - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Помогите с функцией past,вроде должно быть что то простое, но как только не крутил не получается

Решение задачи: «Выяснить, предшествует ли время t времени t1»

textual
Листинг программы
type  date=record
      dyear : integer;
      dmonth  :integer;
      dday    : integer;
     end;
{процедура проверяет предшествует ли время t t1}
function past(d1,d2:date):boolean;
begin
past:=(d1.dyear<d2.dyear)or((d1.dyear=d2.dyear)and(d1.dmonth<d2.dmonth))
or((d1.dyear=d2.dyear)and(d1.dmonth=d2.dmonth)and(d1.dday<d2.dday));
end;
 
{процедура перевода строкового типа в тип date}
Procedure stringDate(t:string;var p:date);
var s:string;
    i,k:integer;
begin
repeat
writeln ('введите дату ',t,' вида  дд.мм.гггг');
readln(s);
k:=0;
if length(s)<>10 then k:=1
else
 begin
  for i:=1 to 10 do
  if ((i in [1,2,4,5,7..10])and not (s[i] in ['0'..'9']))
  or not(strtoint(copy(s,1,2))in[1..31])or not(strtoint(copy(s,4,2))in[1..12])
  or ((i in [3,6])and(s[i]<>'.')) then k:=1;
 end;
if k=1 then writeln('Неверно введена дата ',t);
until k=0;
p.dday:=strtoint(copy(s,1,2));
p.dmonth:=strtoint(copy(s,4,2));
p.dyear:=strtoint(copy(s,7,4));
end;
 
{Основная программа}
var t,t1:string;
    sday1,sday2:date;
begin
stringDate('T',sday1);
stringDate('T1',sday2);
if past(sday1,sday2) then write('Предшествует')
else write('Не предшествует')
end.

Объяснение кода листинга программы

  1. В коде определен тип данных date, который представляет собой запись с полями dyear (год), dmonth (месяц) и dday (день).
  2. Функция past принимает два объекта типа date и возвращает логическое значение true, если время t предшествует времени t1, и false в противном случае.
  3. Процедура stringDate принимает строку t типа string и переменную p типа date. Она повторяет несколько раз запрос ввода даты, пока не будет введено корректное значение. Затем она преобразует строку в объект типа date, устанавливая поля dday, dmonth и dyear.
  4. Основная программа создает две переменные типа string - t и t1, и вызывает процедуру stringDate для обеих переменных. Затем она проверяет результат функции past и выводит соответствующее сообщение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.6 из 5
Похожие ответы