L'analyste programmeur a 3 dimension
est ce que quelqu'un pourrait me faire l'algo de ce code
merci d'avance :
#pragma hdrstop
#include <conio.h>
#include
#include
#include <stdlib.h>
//---------------------------------------------------------------------------
int **multiplieMatrice(int **matriceA, int colonnesA, int lignesA, int **matriceB, int colonnesB, int lignesB);
#pragma argsused
int main(int argc, char* argv[])
{
int lignes1;
int colonnes1 ;
int lignes2 ;
int colonnes2 ;
int **m1 ;
int **m2 ;
int **m3 ;
int i, j ;
do
{
cout << "1ere matrice : " << endl ;
cout << "combien de lignes ? " ;
cin >> lignes1 ;
cout << endl << "combien de colonnes ? " ;
cin >> colonnes1 ;
cout << endl << "2eme matrice : " << endl ;
cout << "combien de lignes ? " ;
cin >> lignes2 ;
cout << endl << "combien de colonnes ? " ;
cin >> colonnes2 ;
if (colonnes1!= lignes2)
cout << "erreur, les matrices ne peuvent pas etre multipliees!!! " << endl ;
}
while (colonnes1 != lignes2) ;
// si les matrices sont ok : colonnes1 == lignes2
m1 = (int**)malloc(lignes1 * sizeof(int*)) ;
m2 = (int**)malloc(lignes2 * sizeof(int*)) ;
if (!m1)
{
free(m1) ;
cout << endl << "erreur d'alloc 1ere matrice!!! " ;
return NULL ;
}
for (i=0 ; i<lignes1 ; i++)
{
m1[i] = (int*)malloc(colonnes1 * sizeof(int)) ;
if (!m1[i])
{
free(m1) ;
cout << endl << "erreur d'alloc lignes!!! " ;
return NULL ;
}
}
if (!m2)
{
free(m2) ;
cout << endl << "erreur d'alloc 1ere matrice!!! " ;
return NULL ;
}
for (i=0 ; i<lignes2 ; i++)
{
m2[i] = (int*)malloc(colonnes2 * sizeof(int)) ;
if (!m2[i])
{
free(m2) ;
cout << endl << "erreur d'alloc lignes!!! " ;
return NULL ;
}
}
cout << endl << "1ere matrice : " << endl ;
for (i=0 ; i<lignes1 ; i++)
{
for (j=0 ; j<colonnes1 ; j++)
{
cout << endl << "nombre en place " << i << " ; " << j << " ? " ;
cin >> m1[i][j] ;
}
}
cout << endl ;
// affichage 1ere matrice
for (i=0 ; i<lignes1 ; i++)
{
for (j=0 ; j<colonnes1 ; j++)
{
cout << setw(3) << m1[i][j] ;
}
cout << endl ;
}
cout << endl << "2eme matrice : " << endl ;
for (i=0 ; i<lignes2 ; i++)
{
for (j=0 ; j<colonnes2 ; j++)
{
cout << "nombre en place " << i << " ; " << j << " ? " ;
cin >> m2[i][j] ;
}
}
cout << endl ;
// affichage 2eme matrice
for (i=0 ; i<lignes2 ; i++)
{
for (j=0 ; j<colonnes2 ; j++)
cout << setw(3) << m2[i][j] ;
cout << endl ;
}
// multiplication des matrices
m3 = multiplieMatrice(m1, colonnes1, lignes1, m2, colonnes2, lignes2) ;
cout << endl << "Multiplication des matrices......" << endl ;
cout << endl << "Matrice Resultat : " << endl ;
for (i=0 ; i<lignes1 ; i++)
{
for (j=0 ; j<colonnes2 ; j++)
cout << setw(3) << m3[i][j] ;
cout << endl ;
}
free(m1) ;
free(m2) ;
free(m3) ;
cout << endl << endl << "appuyer sur une touche pour quitter..." ;
getch () ;
return 0 ;
}
//---------------------------------------------------------------------------
// fonction multiplication des 2 matrices
int **multiplieMatrice(int **matriceA, int colonnesA, int lignesA, int **matriceB, int colonnesB, int lignesB)
{
int **matriceR ;
int i, j, k ;
matriceR = (int**)malloc(lignesA * sizeof(int*)) ;
if (!matriceR)
{
free(matriceR) ;
cout << endl << "erreur d'alloc matrice reponse !!! " ;
return NULL ;
}
for (i=0 ; i<lignesA ; i++)
{
matriceR[i] = (int*)malloc(colonnesB * sizeof(int)) ;
if (!matriceR[i])
{
free(matriceR) ;
cout << endl << "erreur d'alloc lignes!!! " ;
return NULL ;
}
}
for (i=0 ; i<lignesA; i++)
for (j=0 ; j<colonnesB; j++)
{
matriceR[i][j] = 0 ;
for (k=0 ; k<colonnesA ; k++)
matriceR[i][j] += matriceA[i][k] * matriceB[k][j] ;
}
return matriceR ;
}
Afficher la suite