• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Задача о сторожах

Вива

Новые
Регистрация
22 Окт 2011
Сообщения
14
Реакции
0
Баллы
0
Паскаль. Задача о сторожах

ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ!!!

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

Пример:

4
__________время прихода___время ухода
1 сторож--8.00__________---12.00
2 сторож--11.00_________---16.00
3 сторож--15.00 ________---19.30
4 сторож--20.00 ________---23.50

Написать программу на Паскале, которая вычисляла бы всегда охраняется галлерея или нет??
 
Вот сфотографировал пример
 

Вложения

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

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

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

Код:
4
 8.00 12.00
11.00 16.00
15.00 19.00
20.00 23.50
А вообще - за "задвиги" этого изделия №2, именуемого "PascalABC" - не отвечаю.
 
попробовал установить Turbo Pascal, Borland Pascal...установил, но не работает с 64 разрядной операционной системой:tehnari_ru_117:
 
Назад
Сверху