IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Очередь, Задача с тремя конвейерами
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


Задача такая:

Имеются три конвейера. Конвейеры работают независимо друг от друга. Изначально на первом конвейере располагаются детали N типов, а второй и третий – пусты. Время обработки детали каждого типа с каждого конвейера задается матрицей Time[1..N, 1..3]. После обработки детали с конвейера k она поступает на конвейер k+1. Деталь после третьего конвейера считается изготовленной. Требуется по начальному расположению деталей на первом конвейере определить время, через которое все детали будут изготовлены.

Помогите, пожалуйста, понять хотя бы алгоритм решения: вообще не могу разобраться wacko.gif , где здесь используется очередь и как, собственно, высчитывается само время обработки.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


Цитата
По очень простой причине: у меня было 4 часа ночи..
Ну что же Вы так? huh.gif Конвейеры могли бы и подождать, полноценный сон важнее... blush.gif
Цитата
Первый кажется эффективнее - попробуй его реализовать.
Как только полностью разберусь со вторым, попытаюсь это сделать smile.gif

Lapp, вот за это отдельное огромное спасибо! Правда, очень помогло... yes2.gif
Код
T=  47.000
aaabbccccceeeeehhhhhhhhffffaaagggggg
---aab----cc---ee------hhhhhf-aa----gg
-----aaab---c----e----------hhhhhfffffaaag
--------aabbbcc---eee------------hhhh-f--aagg
----------a--bbbbbc--eeee------------h-f---a-gg


Прогресс на лицо: процентов 90 уже понятно applause.gif. Но есть еще вопросы:

Здесь используются элементы d[i] массива d... но чем он у нас заполнен? он же пустой... или я туплю blink.gif
for i:=1 to Nk do begin      //цикл по конвеерам в каждой КТ
//если время совпадает с КТ, значит на этом конвеере
//закончилась обработка текущей детали.
//для всех, кроме последнего, перекладываем деталь в очередь следующего К
//для последнего просто увеличивает Dd
if (Abs(T-Tk[i])<e) then if i<Nk then Put(K[i+1],d[i]) else Inc(Dd);
//если К свободен, взять деталь из очереди (если там есть что-то)
if (T>=Tk[i]-e) and Get(K[i],d[i]) then begin
for x:=Round(Tk[i]) to Round(T)-1 do s[i]:=s[i]+'-'; //псевдографика
//отметить КТ для этого К, как время окончания обработки детали
Tk[i]:=T+TDK[d[i],i];
for x:=1 to Round(TDK[d[i],i]) do s[i]:=s[i]+Char(96+d[i]) //псевдографика
end
end;


Далее...
  for i:=1 to Nk do if T1<Tk[i] then T1:=Tk[i];
//найти минимальную КТ, бОльшую текущего времени (т.е. следующую)
for i:=1 to Nk do if (T<Tk[i]) and (Tk[i]<T1) then T1:=Tk[i];
//продвигаем текущее время вперед
T:=T1

(?)Переменной T1 не было присвоено начальное значение. Я так понимаю, что если делать таким образом: T1:=<very_large_value>, то этого не требуется. А если как в проге, то возникает (?).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
БелАчкА   Очередь   30.10.2007 0:01
Lapp   не могу разобраться :wacko: , где здесь используе…   30.10.2007 18:04
БелАчкА   Что такое "очередь", ее структура и тд..…   30.10.2007 19:45
compiler   когда-то делал подобную задачу для двух конвееров.…   30.10.2007 19:56
Lapp   как находить время: неужели просто последовательно…   31.10.2007 3:43
БелАчкА   Нужно моделировать процесс. То есть, например, К…   31.10.2007 21:07
Lapp   :mega_chok: А вот этого не надо! держи себя …   1.11.2007 18:31
БелАчкА   Lapp, большое спасибо! :) Вопросы, конечно же…   1.11.2007 21:49
Гость   Вопросы, конечно же, есть... [code=pas]begin fo…   2.11.2007 2:32
Lapp   БелАчкА, чтобы лучше разобраться, просто представь…   2.11.2007 6:18
БелАчкА   Ну что же Вы так? :huh: Конвейеры могли бы и подо…   2.11.2007 19:03
Lapp   Ну что же Вы так? :huh: Конвейеры могли бы и подо…   3.11.2007 19:09
БелАчкА   Про d поняла, про Т1 нет... Вот место, где впервы…   3.11.2007 20:00
Lapp   Вот место, где [b]впервые встречается Т1: for i:…   4.11.2007 7:11
klem4   :blink: Что-то вы перемудрили мне кажется ... п…   4.11.2007 15:30
Lapp   :blink: Что-то вы перемудрили мне кажется ...Мож…   5.11.2007 9:45
Lapp   klem4, еще раз прошу тебя ответить на вопрос (изви…   5.11.2007 16:12
klem4   Сколько времени пройдет до того момента, как пос…   5.11.2007 15:09
klem4   а это у меня не предусмотрено, то есть всегда пото…   5.11.2007 17:57
Lapp   всегда поток такой: 1, 2, 3, 4, ..., NЯсно. Но у…   5.11.2007 18:07
БелАчкА   Все, я окончательно растерялась... не знаю, куда с…   7.11.2007 5:17
Lapp   Пробовала сравнивать переменную, объявив ее, но н…   7.11.2007 5:41
Lapp   БелАчкА, как дела? Все понятно уже?   8.11.2007 7:48


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 18:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name