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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
   | program determinant;
 
uses wincrt;
 
type tmat=array[1..10,1..10] of integer;
 
var dim,d:integer;
    det,det2:integer;
    mat:tmat;
    vals:integer;
 
Procedure entree;
var lig,col:integer;
 
    begin
    writeln('Entrez la dimension de la matrice');
    readln(dim);
    writeln('Entrez les composantes ');
    for lig:=1 to dim do begin
    writeln('pour la ligne ',lig);
    for col:=1 to dim do begin
    writeln('colonne ',col, '?');
    readln (mat[lig,col])
    end
    end
    end;
 
 
Procedure afficher (mat:tmat) ;
var lig,col:integer;
 
    begin
    for lig:=1 to dim do
    begin
    writeln;
    for col:=1 to dim do
    write(mat[lig,col]:5)
    end;
    end;
 
 
 
Procedure sous_mat (mdeb:tmat ; var mfin:tmat ; ind,dim:integer);
var col,lig,l:integer;
 
    begin
    l:=0;
    for lig:=1 to dim do begin
    if lig <> ind then begin
    l:=l+1;
    for col:=2 to dim do
    mfin[l,col-1]:=mdeb[lig,col]
    end
    end
    end;
 
 
 
Function detn (m:tmat ; d:integer):integer;
var mprim:tmat;
    lig,signe:integer;
    result:integer;
 
 
    begin
    if d=1 then detn:=m[1,1]
    else begin
    result:=0;
    signe:=-1;
    for lig:=1 to d do begin
    sous_mat (m,mprim,lig,d);
    signe:=-signe;
    result:=result+(signe*m[lig,1]*detn(mprim,d-1))
    end;
    detn:=result
    end;
    end;
 
Function valeurs (var mat:tmat ; d:integer):integer ;
var x,lig,col,propres: integer;
    begin if d=1 then valeurs:=mat[1,1] else begin
    for x:=-1 to 1 do
 
 
    for lig:=1 to dim do begin
    for col:=1 to dim do begin
 
    if lig=col then  mat[lig,col]:=mat[lig,col]-x;
                         end;
                         end;
    det2:=detn(mat,d) ;
 
 
    end;
    if det2=0 then x:=propres
 
 
 
    end;
 
 
 
Begin
 
entree;
      afficher (mat);
      writeln;
      det:=detn(mat,dim);
      writeln;
      writeln('Le determinant est : ' ,det);
      writeln;
      vals:=valeurs(mat,d);
      writeln('les valeurs propres sont : ',vals )
 
 
end. | 
Partager