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

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

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

> Система(или теорема..) Джонсона
DFooz
сообщение 6.03.2006 12:23
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской
Реальное имя: Иван

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


Серия из N различных деталей обрабатывается на 2-х станках за Ai и Bi времени. Оптимальный порядок обработки достигается правилом:i-ое изделие предшествует j-му, если min(Ai, Bj)<min(Aj,Bi).Осуществить итакое упорядочивание.

Проверьте пж-та, правильно ли работает?=) Я с этой системой никогда не сталкивался, поэтому...
Но вроде всё правильно выполняет...

Program Johnson_method;
Uses Crt;
Const r=30;
Var n,i,Min_j,Min_i,Temp_1,Temp_2:Integer;
ch:Char;
isChange:Boolean;
A:Array [0..100,0..100] of Integer;
Begin
Repeat
ClrScr;
Randomize;
WriteLn('');
WriteLn;
WriteLn('Write a number of details');
ReadLn(n);
WriteLn;

WriteLn('Time:');
Write('A: ');
For i:=1 to n do begin
A[i,1]:=random®;
Write(A[i,1]:3);
end;
WriteLn;

Write('B: ');
For i:=1 to n do begin
A[i,2]:=random®;
Write(A[i,2]:3);
end;
WriteLn;
{начинается прелбразование}
Repeat
isChange:=False;
For i:=1 to n-1 do begin
Min_i:=A[i,1];
Min_j:=A[i+1,1];
{ WriteLn('Min_i=',Min_i,' Min_j=',Min_j); }
If A[i,1]>A[i+1,2] then Min_i:=A[i+1,2];
If A[i+1,1]>A[i,2] then Min_j:=A[i,2];
{ WriteLn('Min_i=',Min_i,' Min_j=',Min_j); }
If Min_i>Min_j then
begin
Temp_1:=A[i,1];
A[i,1]:=A[i+1,1];
A[i+1,1]:=Temp_1;
Temp_2:=A[i,2];
A[i,2]:=A[i+1,2];
A[i+1,2]:=Temp_2;
isChange:=True;
end;
end;
Until isChange=False;

WriteLn('Yahoo:');{Ответ}
Write('A: ');
For i:=1 to n do Write(A[i,1]:3);
WriteLn;

Write('B: ');
For i:=1 to n do Write(A[i,2]:3);
WriteLn;

WriteLn('If you want to quit press <ESC>, else any key.');
ch:=ReadKey;
Until ord(ch)=27;
END.



Сообщение отредактировано: DFooz - 6.03.2006 12:26
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 20.07.2025 20:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"