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  +


Lapp, большое спасибо! smile.gif

Вопросы, конечно же, есть...
begin
for i:=1 to Nk do Fifo(K[i]); // почему здесь используется переменная Nk, если ее значение еще не считано из файла?
Assign(f,'Ford.txt');
Reset(f);
ReadLn(f,Nk);
ReadLn(f,Nd);
for j:=1 to Nd do begin
for i:=1 to Nk do Read(f,TDK[j,i]);
ReadLn(f)
end;
for j:=1 to Nd do begin
Read(f,i);
Put(K[1],i)
end;
Close(f);
T:=0;
for i:=1 to Nk do Tk[i]:=0;
Dd:=0; //Dd - это количество уже обработанных деталей, так?



И не совсем разобралась в основном цикле, хотелось бы получить комментарии к действиям rolleyes.gif
  repeat
for i:=1 to Nk do begin
if (T=Tk[i]) and (T>0) then if i<Nk then Put(K[i+1],d[i]) else Inc(Dd);
if (T>=Tk[i]) and Get(K[i],d[i]) then Tk[i]:=T+TDK[d[i],i];
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
until Dd=Nd;
WriteLn(T)
end.

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


Гость






Цитата(БелАчкА @ 1.11.2007 17:49) *

Вопросы, конечно же, есть...
begin
for i:=1 to Nk do Fifo(K[i]); // почему здесь используется переменная Nk, если ее значение еще не считано из файла?



По очень простой причине: у меня было 4 часа ночи.. Сначала эта строчка была там, где надо: после прочтения Nk. Но перед самой отсылкой поста мне вдруг стукнуло в голову переставить - чисто конкретно для красоты smile.gif. Спасибо!

Dd (Done detailes) - да, это которые сняты с последнего конвеера. Нужно только для того, чтоб отследить конец процесса.

Хорошо, я прокомментирую чуть подробнее. Не прямо сейчас, но к утру будет smile.gif.

Есть еще одно замечание, вчера (моим вчера) я забыл написать его. В проге используется сравнение действительных чисел, что не вполне корректно и может выйти боком. Надо его заменить на сравнение с погрешностью. Погрешность выбирать достаточно малую по сравнению с характерными временами в системе (времена обработки).

Я это, я.. Лопарь
Извиняюсь - опять забыл войти..


Сообщение отредактировано: Lapp -
 К началу страницы 
+ Ответить 

Сообщений в этой теме
БелАчкА   Очередь   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

 





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