22.10.2011, 14:22 | #1 (permalink) |
Member
Регистрация: 22.10.2011
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Паскаль. Задача о сторожах
В картинной галерее работают сторожа. Для кадого сторожа известно время прихода на работу и время ухода. Определить всегда ли галерея охраняется? Пример: 4 __________время прихода___время ухода 1 сторож--8.00__________---12.00 2 сторож--11.00_________---16.00 3 сторож--15.00 ________---19.30 4 сторож--20.00 ________---23.50 Написать программу на Паскале, которая вычисляла бы всегда охраняется галлерея или нет?? |
22.10.2011, 14:22 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Эти посты имеют что то общее с вашей темой Задача про стоки, Паскаль Паскаль. Задача об элементах вектора Задача, Паскаль |
22.10.2011, 17:34 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Прежде всего - у нас не принято цепляться к чужим темам, поэтому Ваш запрос выделен в отдельную тему.
Теперь по задаче. Ниже - одно из возможных решений. Суть алгоритма: Начала и окончания дежурств сторожей переведены в формат абсолютных минут, начиная с полуночи. Далее построен цикл по всем минутам в сутках (их 1440), который прерывается, если текущей минуте не соответствует вахта ни одного из сторожей, либо по исчерпании полного количества минут в сутках (1440). Важно! Отрабатывается ситуация, когда дежурство сторожа проходит через полночь, т.е., например, начало - 23.00, окончание - 3.30. Пути к файлам поставьте, естественно, свои. Код:
CONST Max_Number_Of_Guards=10; VAR f:Text; Time_Table:Array[1..Max_Number_Of_Guards, 1..2] of Integer; Number_Of_Guards:Byte; i:Byte; j:Word; Start,Finish:Real; b:Array[1..Max_Number_Of_Guards] of boolean; b_sum:boolean; BEGIN Assign(f,'D:\Input.txt'); Reset(f); Readln(f,Number_Of_Guards); If Number_Of_Guards>Max_Number_Of_Guards then begin writeln('Too many guards! Edit the Input file or change Max_Number_Of_Guards'); readln; HALT; end; For i:=1 to Number_Of_Guards do begin Readln(f,Start,Finish); Time_Table[i,1]:=(Round(Start*100) div 100)*60+(Round(Start*100) mod 100); Time_Table[i,2]:=(Round(Finish*100) div 100)*60+(Round(Finish*100) mod 100); end; Close(f); j:=0; Repeat b_sum:=false; For i:=1 to Number_Of_Guards do begin b[i]:=false; If ((Time_Table[i,1]<Time_Table[i,2]) and (j>=Time_Table[i,1]) and (j<=Time_Table[i,2])) OR ((Time_Table[i,1]>Time_Table[i,2]) and (((j>=Time_Table[i,1]-1440) and (j<=Time_Table[i,2])) or ((j>=Time_Table[i,1]) and (j<=Time_Table[i,2]+1440)))) then b[i]:=true; b_sum:=b_sum or b[i]; end; Inc(j); Until (Not(b_sum)) or (j=1441); Assign(f,'D:\Output.txt'); Rewrite(f); If b_sum then writeln(f,'YES!') else writeln(f,'NO!'); Close(f); END. |
22.10.2011, 19:10 | #4 (permalink) |
Member
Регистрация: 22.10.2011
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Vladimir_S
Спасибо, вам большое за то, что откликнулись на мою задачу!!! я вбил этот код в паскале пути к файлам поменял на input.dat, output.dat(делаю на паскаль abc) почему то выдает ошибку....( пишет, что неверный числовой формат при вводе) я как то не так записал? (6.00 12.00 12.00 16.00 16.00 20.00 20.00 6.00) Пробовал и так(6.00 12.00 12.00 16.00 16.00 20.00 20.00 6.00) все равно выдаёт ошибку |
22.10.2011, 19:11 | #5 (permalink) |
Хозяин Медной Горы
Регистрация: 01.08.2011
Адрес: Армавир
Сообщений: 12,159
Записей в дневнике: 8
Сказал(а) спасибо: 751
Поблагодарили 88 раз(а) в 27 сообщениях
Репутация: 57416
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
22.10.2011, 20:11 | #10 (permalink) |
Member
Регистрация: 22.10.2011
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
попробовал установить Turbo Pascal, Borland Pascal...установил, но не работает с 64 разрядной операционной системой
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|