A l'aide !!Produit de deux matrices en pascal

Butterfly -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

A toutes et a tous ...

Je vous pris de m'aider S.V.P !
Je bloque sur l'algorithme du produit de deux Matrices qui ne sont pas de meme Taille !

J'ai beau esseye je n'y arrive pas !


Aidez Moi , S.V.P....

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
"produit de deux Matrices qui ne sont pas de meme Taille !"
Pour que le produit de matrices soit correct, les dimensions des matrices doivent être compatibles. Le produit de A (M lignes, N colonnes) par B (N lignes, P colonnes), donne le produit C (M lignes, P colonnes)

"J'ai beau esseye je n'y arrive pas !"
Montre nous ce que tu as déjà fait pour voir ! Comment tu as représenté tes matrices en mémoire par exemple...
1
Butterfly
 
Avant tout je vous remercie pour votre reponse !

c'est un procedure en Pascal :


Procedure produit ( N:integer; matA,matB:matrice; var matC::matrice);
var i,j,k :integer;
begin
for i:=1 to N do
for j:=1 to N do
begin
matC[i,j]:=0;
for k:=1 to N do
matC[i,j]:=matC[i,j]+matA[i,k]*matB[k,j];
end;
end;

Ps: A vrai dire, je dois utiliser le produit de deux matrices afin de pouvoir creer un programme qui me permetera de crypter un MOT [ quelconque ] saisi au clavier par l'utilisateur .
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Normalement on utiliserait plutôt une fonction pour ce genre de problème...
Mais pour que les tailles des matrices soient différentes, il va falloir utiliser un type matrice un peu plus compliqué qu'ici où ça semble n'être qu'un simple array[1..N,1..N] of integer...

Exemple :

const Nmax = 10;

type Matrice = record
    M,N : 1..Nmax;
    tab : array[1..Nmax,1..Nmax];
    end;

Et un petit exemple d'utilisation :

function lecture:Matrice;
var i,j:integer;
begin
    write('nbColonnes = ');
    readln(result.M);
    writeln('nbLignes = ');
    readln(result.N);
    for i:=1 to result.N do
    for j:=1 to result.M do
    begin
        write('tab[',i,',',j,'] = ');
        readln(result.tab[i,j]);
    end;
end;
0