Jao,
C'est un pur problème de math. La multiplication de matrices est bien connue, pour ton programme, ça devrait être une simple transcription du cours.
Petites remarques sur le code:
- Pour le mettre dans un post, encadre le avec les balises [ code] [ /code], sans les espaces qui ne sont là que pour invalider ces mêmes balises.
- Dans les paramètres d'une fonction comme celle-ci
function multi(nbLig1,nbCol1,nbCol2:integer;tab1,tab2:tableau):tableau;
il faut éviter d'utiliser le passage par valeur de données de grande taille, comme tes tab1 et tab2.
Faire
function multi(nbLig1,nbCol1,nbCol2:integer;const tab1,tab2:tableau):tableau;
ou
function multi(nbLig1,nbCol1,nbCol2:integer;var tab1,tab2:tableau):tableau;
si tu n'as pas vu l'utilisation de const pour passer des paramètres à une fonction.
- dans cette partie du code
1 2 3 4 5
| begin
tab[i,j]:=0;
for k:=1 to nbCol1 do
tab[i,j]+=tab1[i,j+k-1]*tab2[i+k-1,j];
end; |
tab[i,j]:=0; est inutile, puisque tu lui attribues une valeur plus loin.
A ce propos, l'opérateur += n'existe pas en Pascal.
ici, édité
ps : comme tu voulais utiliser ce fameux opérateur qui n'existe pas, je suppose que tu voulais faire
tab[i,j] := tab[i,j] + tab1[i,j+k-1]*tab2[i+k-1,j];
et dans ce cas, il faut bien laisser l'initialisation tab[i,j]:=0;, qui est effectivement nécessaire.
Je ne vois pas d'où tu as tiré ta formule, qui devrait tout simplement être
tab[i,j] := tab[i,j] + tab1[i, k] * tab2[k, j];
En cherchant un peu, tu aurais trouvé très facilement, ne serait-ce que sur le site de développez : http://www.developpez.net/forums/arc...p/t-11612.html
page que j'ai trouvée en quelques secondes, passage par Google y compris.
Partager