Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль. Задача о сторожах (http://www.tehnari.ru/f41/t58807/)

Вива 22.10.2011 14:22

Паскаль. Задача о сторожах
 
ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ!!!

В картинной галерее работают сторожа. Для кадого сторожа известно время прихода на работу и время ухода. Определить всегда ли галерея охраняется?

Пример:

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:25

Вложений: 2
Вот сфотографировал пример

Vladimir_S 22.10.2011 17:34

Прежде всего - у нас не принято цепляться к чужим темам, поэтому Ваш запрос выделен в отдельную тему.
Теперь по задаче. Ниже - одно из возможных решений. Суть алгоритма:
Начала и окончания дежурств сторожей переведены в формат абсолютных минут, начиная с полуночи. Далее построен цикл по всем минутам в сутках (их 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

Vladimir_S

Спасибо, вам большое за то, что откликнулись на мою задачу!!! я вбил этот код в паскале пути к файлам поменял на input.dat, output.dat(делаю на паскаль abc) почему то выдает ошибку....:tehnari_ru_117:( пишет, что неверный числовой формат при вводе) я как то не так записал?
(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) все равно выдаёт ошибку

Daniellos 22.10.2011 19:11

Цитата:

Сообщение от Вива (Сообщение 605313)
(делаю на паскаль abc)

А нормального BP или TP нет??

Вива 22.10.2011 19:14

Daniellos

Да привык к нему....да там и как то легче(лично для меня), все ошибки выдаёт на русском...

Daniellos 22.10.2011 19:17

По мне лучше без ошибок на английском, чем ошибки на русском :)

Вива 22.10.2011 19:19

Daniellos

кому как:tehnari_ru_674:

Vladimir_S 22.10.2011 19:48

Цитата:

Сообщение от Вива (Сообщение 605313)
я как то не так записал?

Я исходил из Вашего образца, а потому в первой строке должно быть число сторожей. Вид файла:

Код:

4
 8.00 12.00
11.00 16.00
15.00 19.00
20.00 23.50

А вообще - за "задвиги" этого изделия №2, именуемого "PascalABC" - не отвечаю.

Вива 22.10.2011 20:11

попробовал установить Turbo Pascal, Borland Pascal...установил, но не работает с 64 разрядной операционной системой:tehnari_ru_117:


Часовой пояс GMT +4, время: 06:31.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.