Помощь - Поиск - Пользователи - Календарь
Полная версия: Система(или теорема..) Джонсона
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DFooz
Серия из 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.

Ozzя
Есть контрольные тестовые значения? Прогоните. А иначе как Вы собираетесь проверять правильность алгоритма?
DFooz
нету, поэтому и хотел спросить=) В принципе, уже не нужно, задачу у меня приняли=)
Романтик
Цитата(DFooz @ 8.03.2006 12:27) *

нету, поэтому и хотел спросить=) В принципе, уже не нужно, задачу у меня приняли=)

Держи:

Ввод

2
3 4
10 2
6
7 10
9 8
3 1
2 4
11 6
5 12


Вывод

151 2
44
4 6 1 2 5 3
volvo
James_Bond, ссылку на источник теста - в студию... Самопальные тесты здесь не пойдут...
Романтик
Цитата(volvo @ 8.03.2006 12:53) *

James_Bond, ссылку на источник теста - в студию... Самопальные тесты здесь не пойдут...

не пойдет-извини. mad.gif
DFooz
спасибо
Цитата(James_Bond @ 8.03.2006 12:49) *

Вывод

151 2
44
4 6 1 2 5 3

но эти 3 строчки непонятны=)
и обязательно определённые значения в итоге должны пол-ся или может варьироваться?
Романтик
Цитата(DFooz @ 10.03.2006 17:52) *

спасибо

но эти 3 строчки непонятны=)
и обязательно определённые значения в итоге должны пол-ся или может варьироваться?


это уж тебе решать.
ну время и порядок.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.