1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| const
nbtab=50;
var
z : boolean;
i,j : integer;
tab, tab1 : array[1..nbtab,1..nbtab] of real;
som, k, po, la: array [1..nbtab] of real;
lmax, Rc,IC,IA: real;
begin
z:= true;
//remplir un tableau
//a.cells[arow,acol]:= a.Cells[ACols,Arow];
for i := 1 to nbcri do begin
for j:= 1 to nbcri do
//a.Cells[i,j] := SysUtils.FormatFloat(a.Cells[0,j], StrToFloat(a.Cells[i,0]));
tab[i,j] := strtofloat(a.cells[i,j]);
end;
// vecteur de la somme de chaque ligne
for j := 1 to nbcri do begin
som[j] := tab[j,1];
for i := 2 to nbcri do begin
som[j] := som[j]+ tab[j,i];
end;
//ListBox1.Items.Add(floattostr(som[j]));
end;
// ListBox1.Items.Add('');
// normalisation du tableau
for i := 1 to nbcri do begin
for j := 1 to nbcri do
tab1[i,j] := tab[i,j] / som[i];
k[i]:=tab1[1,i];
//ListBox1.Items.Add(floattostr(k[i]));
end;
//ListBox1.Items.Add('');
// vecteur poids
// ListBox1.Items.Add('vecteur poids');
for i := 1 to nbcri do begin
po[i]:= tab1[1,i];
for j := 2 to nbcri do
po[i] := (po[i] + tab1[j,i]);
po[i]:= po[i]/nbcri;
//round((po[i]),3); round(x,3)
a1.Cells[i,1]:= floattostr(po[i]);
panel7.Visible := true;
//z4:= true;
//ListBox1.Items.Add(floattostr(po[i]))
end;
// ListBox1.Items.Add('');
// calcule des lambda
// ListBox1.Items.Add('les valeur de lambda');
for i:= 1 to nbcri do begin
la[i]:= tab[1,i]*po[1];
//ListBox1.Items.Add(floattostr(la[i]));
for j := 2 to nbcri do
la[i] := la[i]+(tab[j,i]*po[j]);
la[i] := la[i]/po[i];
// ListBox1.Items.Add('la '+inttostr(i)+' '+floattostr(la[i]));
end;
// ListBox1.Items.Add('');
//recherche de lambda max
lmax:= la[1];
for i:= 2 to nbcri do
if la[i]>lmax then lmax:= la[i];
// ListBox1.Items.Add('lambda max est: '+floattostr(lmax));
// test de cohérence
IC:= (lmax-nbcri)/nbcri-1;
case nbcri of
//2 : IA := 0;
3: IA := 0.58;
4: IA := 0.9;
5: IA := 1.12;
6: IA := 1.24;
7: IA := 1.32;
8: IA := 1.41;
9: IA := 1.45;
10: IA := 1.49;
11: IA := 1.51;
end;
RC:= IC/ IA ;
if RC > 0.1 then begin
z := false;
if z=false then
showmessage('le jugement n''est pas cohérent veuillez vérifier votre tableau');
end;
end;
end. |
Partager