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

Butterfly -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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....

A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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 16761 Date d'inscription   Statut Modérateur Dernière intervention   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