Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
DeMit
0 / 0 / 1
Регистрация: 24.04.2016
Сообщений: 12
#1

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

11.06.2016, 16:58. Просмотров 857. Ответов 4
Метки нет (Все метки)

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

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type 
      date=record
      dyear : integer;
      dmonth  :integer;
      dday    : integer;
     end;
 
  {процедура проверяет предшествует ли время t t1}
 procedure past(d1,d2:date);
begin
 {if d1.dyear < d2.dyear then writeln('предшествует')
  else d1.dyear = d2.dyear then 
    if d1.dmonth < d2.dmonth then writeln ('предшествует')
     else d1.dmonth = d2.dmonth then 
     if d1.dday < d2.dday then writeln ('предшествует')
     else d1.dday = d2.dday then
     else writeln('net')}
   
  end;
  
  
  
  
{процедура перевода строкового типа в тип date}
Procedure stringDate(s:string; var p: date);
var s1:string;
k,r:integer;
begin 
s1:=copy(s,1,2); val(s1,p.dday,r);
s1:=copy(s,4,2); val(s1,p.dmonth,r);
s1:=copy(s,7,4); val(s1,p.dyear,r);
  end;
 
  {Основная программа}
 Var t,t1:string;
 sday1,sday2:date;
 begin 
 Writeln ('введите дату t вида  дд.мм.гггг'); readln(t);
 Writeln ('введите дату t1 вида  дд.мм.гггг'); readln(t1);
 stringDate(t,sday1);
 stringDate(t1,sday2);
 past(sday1,sday2)
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2016, 16:58
Ответы с готовыми решениями:

Логическая функцая для проверки, предшествует ли время t1 времени t2
Дано время, описанное следующим образом: Type time=Record h:0..23; m,s:0..59...

Описать логическую функцию before (t1,t2) для проверки, предшествует ли время t1 времени t2
Вообщем задание было такое: Описать логическую функцию before (t1,t2) для...

Выяснить, предшествует ли одна дата другой
type mes = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec); ...

Написать программу,вычисляющую время,прошедшее от времени Т1 до времени Т2,считая Т2>Т1.
Написать программу,вычисляющую время,прошедшее от времени Т1 до времени...

Графика: Нарисовать подводную лодку, которая плывет и время от времени поднимает перископ
Нарисовать подводную лодку которая плывет и времья от времени поднимает и...

4
Puporev
Модератор
54361 / 41950 / 28980
Регистрация: 18.05.2008
Сообщений: 98,815
11.06.2016, 17:35 #2
Лучший ответ Сообщение было отмечено DeMit как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3803 / 2487 / 2052
Регистрация: 22.11.2013
Сообщений: 6,918
11.06.2016, 18:07 #3
Другой вариант:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function Julian(y, m, d: Integer): Longint;
begin
  if m>2 then Dec(m,3)
  else begin
    Inc(m,9); Dec(y);
  end;
  Julian:=
    146097*(y div 100) div 4 +
    1461  *(y mod 100) div 4 +
    (153*m+2) div 5+d+1721119;
end;
function past(d1,d2:date):boolean;
begin
  past:=Julian(d1.dyear,d1.dmonth,d1.dday)<Julian(d2.dyear,d2.dmonth,d2.dday);
end;
1
DeMit
0 / 0 / 1
Регистрация: 24.04.2016
Сообщений: 12
11.06.2016, 18:07  [ТС] #4
Спасибо
0
ФедосеевПавел
Модератор
3597 / 1981 / 825
Регистрация: 01.02.2015
Сообщений: 6,593
12.06.2016, 02:21 #5
Можно ещё упрощённое подобие юлианской даты: d+100*m+10000*y.
Но с юлианскими датами нужно ознакомиться - рано или поздно понадобятся.
1
12.06.2016, 02:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2016, 02:21

Определить время приземления самолета в часах, минутах и секундах по времени вылета и длительности полета
1. Определить время приземления самолета в часах X, минутах Y и секундах Z....

За сколько времени фермер обработает поле, если известно время, затраченное на 1 квадратный метр
Фермер Иван Петрович содержал в полном порядке поле в форме круга радиусом R....

Проверить, предшествует ли время t1 времени t2
Прога вот такая: Программа вводит 2ва значения времени при помощи логической...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru