Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 819 fois - Téléchargée 10 fois
PROGRAM matrice (input,output); { on se limite à 10x10, } uses crt; TYPE tmat= array [1..10,1..10] of real;{le tableau insertion} VAR dim : integer; { dimension matrice et calculer } det : real; { résultat d‚sir‚ } mat : tmat; { matrice et calculer } appel : real; { nb d'appels } procedure entree;{enregistrement des valeur du tableau} var lig, col : integer; begin writeln('Dimension de la matrice ?'); readln(dim); { dim variable globale } while ((dim<2) and (dim<10)) do begin writeln('Dimension de la matrice ?'); writeln('elle doit etre conprise entre 2 et 10'); readln(dim); { verication de dim } end; writeln('Entrez les composantes :'); for lig := 1 to dim do begin for col := 1 to dim do begin writeln('entrer la valeur de la ligne ',lig,' et la colonne ',col,':'); readln(mat[lig,col]); end; end; end; procedure sous_mat (mdeb : tmat; var mfin : tmat; ind, dim : integer); { on supprime la colonne 1 et la ligne ind pour avoir la s/mat de dim-1 } 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) : real; { det ordre d en fonction ordre d-1 } var result : real; mprim : tmat; { matrice intermédiaire } lig, signe : integer; begin appel := appel + 1; if d = 1 then detn := m[1,1]{ fin de recuteration de det par n-1 } else begin result := 0; signe := -1; for lig := 1 to d do begin sous_mat(m,mprim,lig,d); signe := -signe;{ changer de signe à chaque ligne } result := result + (signe * m[lig,1] * detn(mprim,d - 1)) end; detn := result end; end; procedure inverse; VAR ta,mdet,mresp:tmat; i,j,a,b,k,m,verifk,verifm:integer; begin for i:=1 to dim do begin for j:=1 to dim do ta[j,i]:=mat[i,j]; end; {la trans poser de la matrice} writeln('la transposer de la matrice est:'); for i:=1 to dim do begin for j:=1 to dim do begin write(ta[i,j]:5:0); end; writeln; end; a:=1; b:=1; for k:=1 to dim do begin for m:=1 to dim do begin for i:=1 to dim do begin if i=k then else begin{recuperation de la matrice d'ordre dim-1} for j:=1 to dim do begin if j=m then else begin mdet[a,b]:=ta[i,j]; a:=a+1; end; end; a:=1; b:=b+1; end; end; verifk:=k+m; verifm:=1; for i:=1 to verifk do begin verifm:=verifm*(-1); end; mresp[k,m]:=verifm*detn(mdet,dim-1);{recuperation de la comatrice } b:=1; end; end; writeln(' la comatrice est:');{affichage de la transposer de la comatrice} for i:=1 to dim do begin for j:=1 to dim do write(mresp[i,j]:5:0); writeln; end; writeln(' l''inverse de la matrice est:');{affichage de l'inverse de la comatrice} for i:=1 to dim do begin for j:=1 to dim do write(mresp[i,j]:5:0,'/',det:5:0); writeln; end; end; procedure verif(r:real); begin if r=0 then writeln('la matrice n''est pas inversible') else inverse; end; BEGIN { programme principal } clrscr; entree; det := detn(mat,dim); writeln('det = ',det:5:0); verif(det); readln; END.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.