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   
Text File  |  1991-04-15  |  2KB  |  99 lines

  1. program SIMPLEXE;
  2.  
  3. CONST
  4.     ligne =4;
  5.     colo =6;
  6. type
  7.  
  8.     TABL = ARRAY [1..LIGNE,1..COLO] OF REAL;
  9.  
  10.  
  11. const 
  12.     source : TABL = 
  13.  
  14.     ((2.0,1.0,1.0,0.0,0.0,200.0),
  15.      (1.0,4.5,0.0,1.0,0.0,540.0),
  16.      (4.0,3.0,0.0,0.0,1.0,480.0),
  17.      (50.0,30.0,0.0,0.0,0.0,0.0));
  18.  
  19.  
  20. var
  21.     i,p         : integer;
  22.     dest         : tabl;
  23.     fini         : boolean;
  24.     cpivot,lpivot     : short;
  25.     min,calcul    : real;
  26. procedure MAX;
  27. var
  28.     neg : integer; 
  29. begin
  30.     neg:=0;cpivot:=1;min:=9999.9;lpivot:=0;
  31.     for i := 1 to colo do
  32.         begin
  33.         if source [4,i] <= real(0) then inc(neg)
  34.         else
  35.         if source [4,i] > source[4,cpivot] then cpivot := i;
  36.         end;
  37.     if neg = 6 then fini := true;
  38.  
  39.     if not(fini) then
  40.         begin
  41.         for i := 1 to ligne-1 do
  42.         begin
  43.         if source [i,cpivot] > real(0) then
  44.             begin
  45.             calcul :=source[i,colo]/source [i,cpivot];
  46.             if calcul < min then
  47.                 begin
  48.                 lpivot := i;
  49.                 min := calcul;
  50.                 end;
  51.             end;
  52.         end;
  53.         end; 
  54.  
  55. end;
  56. procedure newdest;
  57.     begin
  58.     for i := 1 to ligne do dest [i,cpivot]:=real(0);
  59.     for i := 1 to colo do 
  60.         dest[lpivot,i]:= source[lpivot,i] / source [lpivot,cpivot];
  61.  
  62.     for i := 1 to ligne do
  63.     if i <> lpivot then
  64.         for p := 1 to colo do
  65.         if p <> cpivot then
  66.     dest[i,p] := source [i,p] - 
  67.     ((source[i,cpivot]*source[lpivot,p])/source[lpivot,cpivot]);
  68.     end;
  69.  
  70. procedure COPYDEST;
  71.     begin
  72.     for i :=1 to ligne do
  73.         for p := 1 to colo do
  74.             source[i,p]:=dest[i,p];
  75.     end;
  76. procedure AFFICHE;
  77. BEGIN
  78.     WRITELN('----------------------------------------------------------');
  79.     for i := 1 to ligne do
  80.     begin
  81.     for p := 1 to colo do write(source[i,p]:7);
  82.         writeln;
  83.     end;
  84.     writeln ('ligne du pivot :',lpivot,'\tcolonne du pivot :',cpivot);
  85. end;
  86. begin
  87.     fini := false;
  88.     max;
  89. while not(fini) do
  90.     begin;
  91.     AFFICHE;
  92.     NEWDEST;
  93.     COPYDEST;
  94.     MAX;
  95.     end;
  96.     AFFICHE;    
  97.  
  98. end.
  99.