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

Fermé
Butterfly - 19 mars 2012 à 12:12
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 19 mars 2012 à 14:05
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
19 mars 2012 à 12:23
"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
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
19 mars 2012 à 14:05
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