home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
17 Bit Software 1: Collection A
/
17Bit_Collection_A.iso
/
files
/
1124.dms
/
1124.adf
/
sources_pcq
/
simplexe.p
< prev
Wrap
Text File
|
1991-04-15
|
2KB
|
99 lines
program SIMPLEXE;
CONST
ligne =4;
colo =6;
type
TABL = ARRAY [1..LIGNE,1..COLO] OF REAL;
const
source : TABL =
((2.0,1.0,1.0,0.0,0.0,200.0),
(1.0,4.5,0.0,1.0,0.0,540.0),
(4.0,3.0,0.0,0.0,1.0,480.0),
(50.0,30.0,0.0,0.0,0.0,0.0));
var
i,p : integer;
dest : tabl;
fini : boolean;
cpivot,lpivot : short;
min,calcul : real;
procedure MAX;
var
neg : integer;
begin
neg:=0;cpivot:=1;min:=9999.9;lpivot:=0;
for i := 1 to colo do
begin
if source [4,i] <= real(0) then inc(neg)
else
if source [4,i] > source[4,cpivot] then cpivot := i;
end;
if neg = 6 then fini := true;
if not(fini) then
begin
for i := 1 to ligne-1 do
begin
if source [i,cpivot] > real(0) then
begin
calcul :=source[i,colo]/source [i,cpivot];
if calcul < min then
begin
lpivot := i;
min := calcul;
end;
end;
end;
end;
end;
procedure newdest;
begin
for i := 1 to ligne do dest [i,cpivot]:=real(0);
for i := 1 to colo do
dest[lpivot,i]:= source[lpivot,i] / source [lpivot,cpivot];
for i := 1 to ligne do
if i <> lpivot then
for p := 1 to colo do
if p <> cpivot then
dest[i,p] := source [i,p] -
((source[i,cpivot]*source[lpivot,p])/source[lpivot,cpivot]);
end;
procedure COPYDEST;
begin
for i :=1 to ligne do
for p := 1 to colo do
source[i,p]:=dest[i,p];
end;
procedure AFFICHE;
BEGIN
WRITELN('----------------------------------------------------------');
for i := 1 to ligne do
begin
for p := 1 to colo do write(source[i,p]:7);
writeln;
end;
writeln ('ligne du pivot :',lpivot,'\tcolonne du pivot :',cpivot);
end;
begin
fini := false;
max;
while not(fini) do
begin;
AFFICHE;
NEWDEST;
COPYDEST;
MAX;
end;
AFFICHE;
end.