ПРИЛОЖЕНИЕ 2.

Текст программы расчёта 20 лучших вариантов заправки машин разрыхлительно-очистительного агрегата (выборка из 216).

Язык программирования – Turbo Pascal.

Program Calc_and_Sort;

{$R-,S-}

Uses CRT;

type

Drive_OutPut = (con, prn, filed) ;

dim = array [1..5,1..216] of real;

Alt_dim = array [1..216] of real;

Alt_num = array [1..6,1..216] of integer;

const

N : array [1..3,1..6] of word =

((450,450,500,500,600,600),

(400,400,500,500,600,600),(445,445,560,560,700,700));

var

abv : Drive_OutPut ;

number,

i, j,k, a1,f1,f2,f3 : byte ;

ch : char ;

N_r : Alt_num;

Nn_r : array [1..6,1..20] of Integer;

Nn_e : array [1..5,1..20] of Real;

nn : array[1..20] of Integer;

c,

alt_tab : Alt_dim;

tab : dim ;

s0,sv0,s1,sv1,s2,sv2,s3,sv3,

s4,e1,e2,e3,e4,E : real ;

r1,r2,r3 : byte ;

Procedure OutPut_Data (VR : Drive_OutPut) ;

var

fg : text ;

Begin

case VR of

CON : assign (fg,'CON') ;

PRN : assign (fg,'PRN') ;

Filed : assign (fg,'cl_20.rez') ;

end;

{$I-}

Rewrite (fg) ;

{$I+}

if IOResult <> 0 then

begin

writeln (' Ошибка вывода') ;

halt(0) ;

end;

textcolor (15);

writeln(fg,' Данные: засоренность в исходном

материале Зо =',s0:2:1,' %');

writeln(fg,' ');

writeln(fg,

' 20 ЛУЧШИХ ПАРАМЕТРОВ РАСЧЕТА ОТНОСИТЕЛЬНОГО ЭФФЕКТА ОЧИСТКИ');

writeln(fg,

'╔═══╤═════╤═══╤═════╤═══╤═════╤═══╤══════╤═════╤═════╤═════╤══════╗');

НЕ нашли? Не то? Что вы ищете?

writeln(fg,'║ N │ n1, │R1,│ n2, │R2,│ n3, │R3,│ Э1,

│ Э2, │ Э3, │ Э4, │ Эобщ,║');

writeln(fg,'║п/п│мин-1│мм.│мин-1│мм.│мин-1│мм.│ %

│ % │ % │ % │ % ║');

writeln(fg,

'╟───┼─────┼───┼─────┼───┼─────┼───┼─────┼─────┼─────┼─────┼──────╢');

a1 := 1 ;

for a1 := 1 to 20 do

begin

writeln(fg,' ║',nn[a1]:3,'│ ',Nn_r[1,a1]:3,' │ ',

Nn_r[2,a1]:1,' │ ',Nn_r[3,a1]:3,

' │ ',Nn_r[4,a1]:1,' │ ',Nn_r[5,a1]:3,' │ ',

Nn_r[6,a1]:1,' │',

Nn_e[1,a1]:5:1,'│',Nn_e[2,a1]:5:1,'│',

Nn_e[3,a1]:5:1,'│',

Nn_e[4,a1]:5:1,'│',Nn_e[5,a1]:6:2,' ║');

end;

writeln(fg,

'╚═══╧═════╧═══╧═════╧═══╧═════╧═══╧══════╧═════╧═════╧═════╧══════╝');

writeln(fg,' © John Kife, МГТА 1996');

writeln(fg,' ');

Close (fg);

end;

procedure quicksort(var a: Alt_dim; Lo, Hi: integer);

var

xy : integer;

procedure sort(l, r: integer);

var

i, j : Integer;

x, y : Real;

begin

i:=l; j:=r; x:=a[(l+r) DIV 2];

repeat

while a[i] > x do i:=i+1;

while x > a[j] do j:=j-1;

if i<=j then

begin

y:=a[i]; a[i]:=a[j]; a[j]:=y;

i:=i+1; j:=j-1;

end;

until i>j;

if l<j then sort(l, j);

if i<r then sort(i, r);

end;

begin {quicksort};

sort(Lo, Hi);

for i:=1 to 20 do

begin

xy := 1;

while c[i] <> tab[5,xy] do Inc(xy);

nn[i] := xy;

end;

a1 := 1 ;

for i := 1 to 6 do

for j := 1 to 6 do

for k := 1 to 6 do

begin

if odd(i) then r1 := 4 else r1 := 6 ;

if odd(j) then r2 := 4 else r2 := 6 ;

if odd(k) then r3 := 4 else r3 := 6;

N_r[1,a1] := n[1,i]; n_r[2,a1] := r1;

N_r[3,a1] := n[2,j]; n_r[4,a1] := r2;

N_r[5,a1] := n[2,k]; n_r[6,a1] := r3;

Inc(a1);

end;

For i := 1 to 20 do

begin

Nn_r[1,i] := N_r[1,nn[i]]; Nn_r[2,i] := N_r[2,nn[i]];

Nn_r[3,i] := N_r[3,nn[i]]; Nn_r[4,i] := N_r[4,nn[i]];

Nn_r[5,i] := N_r[5,nn[i]]; Nn_r[6,i] := N_r[6,nn[i]];

Nn_e[1,i] := tab[1,nn[i]]; Nn_e[2,i] := tab[2,nn[i]];

Nn_e[3,i] := tab[3,nn[i]]; Nn_e[4,i] := tab[4,nn[i]];

Nn_e[5,i] := tab[5,nn[i]];

end;

end;

BEGIN

TextBackGround (0);

ClrScr;

textcolor (10);

writeln(' Written by Smolin Dmitry ( Kife ) ,

Latishev Anatoly (Toll), МГТА 1996');

textcolor (15);

writeln;

writeln(' РАСЧЕТ ОТНОСИТЕЛЬНОГО ЭФФЕКТА ОЧИСТКИ

И ОПТИМАЛЬНЫХ ');

writeln(' ПАРАМЕТРОВ ЗАПРАВКИ МАШИН РОА ');

textcolor (14);

writeln;

writeln('Введите исходную засоренность');

write('(сумму пороков в исходном

материале), % :');

textcolor (15);

readln (s0);

{** Расчеты *****}

sv0 := 0.9*s0;

a1 := 1;

for i := 1 to 6 do

begin

for j := 1 to 6 do

begin

for k := 1 to 6 do

begin

f1 := i ;

case f1 of

1 : s1 := 0.212963*sv;

2 : s1 := 0.21728*sv;

3 : s1 := 0.25833*sv;

4 : s1 := 0.303395*sv;

5 : s1 := 0.27685*sv;

6 : s1 := 0.29753*sv;

end ;

e1 := 100*s1/sv0 ;

sv1 := sv0*(1-(e1/100)) ;

f2 := j ;

case f2 of

1 : s2 := 0.1961*sv;

2 : s2 := 0.26378*sv;

3 : s2 := 0.29125*sv;

4 : s2 := 0.36211*sv;

5 : s2 := 0.30045*sv;

6 : s2 := 0.36262*sv;

end ;

e2 := 100*s2/sv1 ;

sv2 := sv1*(1-(e2/100)) ;

f3 := k ;

case f3 of

1 : s3 := 0.04709*sv;

2 : s3 := 0.08351*sv;

3 : s3 := 0.114035*sv;

4 : s3 := 0.108333*sv;

5 : s3 := 0.08824*sv;

6 : s3 := 0.14015*sv;

end ;

e3 := 100*s3/sv2 ;

sv3 := sv2*(1-(e3/100)) ;

s4 := 0.1856*sv;

e4 := 100*s4/sv3 ;

E := e1+e2+e3+e4 ;

tab [1,a1] := e1 ;

tab [2,a1] := e2 ;

tab [3,a1] := e3 ;

tab [4,a1] := e4 ;

tab [5,a1] := E ;

Inc(a1);

end ;

end ;

end ;

for i := 1 to 216 do

c[i] := tab[5,i];

QuickSort(c,1,216);

abv := con ;

OutPut_Data (abv) ;

writeln(' Куда выводить?

[ 1 - printer, 2 - file ]: ') ;

ch := ReadKey ;

case ch of

'1' : abv := prn ;

'2' : abv := filed ;

end ;

OutPut_Data (abv) ;

if abv = filed then

begin

textcolor (10) ;

write('Записано на диск в файл ''clean. rez''.');

end ;

textcolor (15) ;

END.

{

program qsort;

Uses Crt;

max = 1000;

type

list = array[1..max] of integer;

var

data: list;

i: integer;

Randomize;

for i:=1 to max do data[i]:=Random(30000);

Writeln;

Write('Now sorting random numbers...');

quicksort(data,1,max);

Writeln;

for i:=1 to 1000 do Write(data[i]:8);

end.

}