Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Задачка про самолёты, их количество 
:(
    Опции темы
AligatorV
Дата 22.11.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Авиа компания желает осуществлять пассажирские перевозки на ряду рейсов вида Хмельницкий -- некоторый город -- Хмельницкий. Вылет самолета на каждый из рейсов осуществляется ежедневно. Для каждого рейсу известная необходима час выхода самолета на рейс тот час освобождения самолета из рейсу после его возвращения в аэропорт города Хмельницкого. Например, Хмельницкий -- Одесса -- Хмельницкий 15:35 - 18:20, Хмельницкий -- Стамбул -- Хмельницкий 12:50 -- 17:45. Если промежутки времени, необходимые для обслуживания рейсов не пересекаются, то эти рейсы может обслуживать один самолет.
 
 Задача. По данному списку рейсов, которые определены временами начала и окончания обслуживания рейсу, определить наименьшее количество самолетов, которое сможет обслуживать все эти рейсы. Количество рейсов не превышает 1000.
 
 Входные данные. В первой ленте входного потока содержится одно число -- количество рейсов. В следующих лентах содержится описание рейсов, по одному в каждой ленте, в виде: время начала - время завершения. Например, 13:20 - 18:10. Значения часов и минут всегда содержат две цифры. Значение времени и знак "-" могут быть отделены некоторым количеством пропусков. Входные данные гарантированно содержат корректное значение часов и минут.
 
 Выходные даны. В первую ленту исходного потока вывести единственное число -- наименьшее количество самолетов, которые могут обслуживать все данные рейсы.
 
 Пример входных данных:
 
 5
 03:50 - 09:10
 05:15 - 08:45
 08:55 - 12:20
 10:15 - 15:35
 23:10 - 03:30
 Пример выходных данных, которые отвечают входным:
 
 2
PM MAIL ICQ   Вверх
anwe
Дата 22.11.2006, 03:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 9
Всего: 23



AligatorV, ты уже поднимаешь темы второй раз.
Сделай так. Если у тебя между цифрами и "знаком -" и между цифрами и знаком ":" могут быть пробелы, то берешь первую строку и с ее конца идешь влево пока, не встретишь знак "-". Если между цифрами и ":" нет пробелов, то ищешь до первого пробела. Далее удаляешь лишние пробелы уже во времени (если они есть) функцией delete и преобразовываешь полученное функцией StrToTime во время. Потом переходишь на вторую строку, но только сначала и идешь вправо. Если полученное время больше первого (я думаю в пределах разумного, ну то есть больше нескольких минут и если это учтено задачей smile ) то эту "строку"  smile  можно обработать одним самолетом. Саму строку помечаешь, как пройденную.
И так далее 2-я - 3-я, 3-я - 4-я.
PM MAIL   Вверх
AligatorV
Дата 22.11.2006, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Цитата(anwe @  22.11.2006,  03:01 Найти цитируемый пост)
Сделай так. Если у тебя между цифрами и "знаком -" и между цифрами и знаком ":" могут быть пробелы, то берешь первую строку и с ее конца идешь влево пока, не встретишь знак "-". Если между цифрами и ":" нет пробелов, то ищешь до первого пробела. Далее удаляешь лишние пробелы уже во времени (если они есть) функцией delete


 smile Пробовал писать код, но так и не получилась... в чём ошибка в коде??

var j,i,n:integer; 
st:string; 
k:word; 
god,hv:array[1..1000] of byte; 
function vvod(st1:string):string; 
var s,st2,st3,st4:string; 
g,h:integer; 
begin 
st2:=''; 
st3:=''; 
st4:=''; 
for k:=1 to length(st1) do if st1[k]<>' ' then st2:=st2+st1[k]; 
for k:=1 to length(st2) do 
begin 
s:=copy(st2,k,1); 
if s<>' ' then 
begin st3:=st3+s; break; end; 
end; 
writeln(st3); 
for k:=1 to length(st3) do if st3[k]<>':' then 
begin st4:=st4+st3[k]; delete(st3,1,1); break; break end; 
val(st4,god[i],g); delete(st3,1,1); 
val(st3,hv[i],h); 
????чё дальше тут нада????
end; 
begin 
readln(n); 
for i:=1 to n do 
readln(st); 
................ 
end.

Это сообщение отредактировал(а) AligatorV - 25.11.2006, 01:20
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0777 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.