rendered paste body/* Calcul matriciel - copyright 2007 : ElipsOid */#include <iostream>#include "matrix.h"using namespace std;int main () { cout << "===== Calcul matriciel version alpha =====" << endl; long **Matrix1 = NULL; long **Matrix2 = NULL; long **Matrix3 = NULL; int taille11, taille21, taille22, taille12; cout << "Taille de la premiere matrice ( Colonnes )" << endl; cin >> taille11; cout << endl; cout << "Taille de la premiere matrice ( Lignes )" <<endl; cin >> taille12; cout << endl; cout << "Taille de la seconde matrice ( Colonnes )" << endl; cin >> taille21; cout << endl; cout << "Taille de la seconde matrice ( Lignes )" << endl; cin >> taille22; cout << endl; cout << "Taille des matrices définie !" << endl; Matrix1 = new long*[taille11]; Matrix2 = new long*[taille21]; Matrix3 = new long*[taille11]; for( int i=0; i<taille11; i++ ) Matrix1[i] = new long[taille12]; for( int i=0; i<taille21; i++ ) Matrix2[i] = new long[taille22]; for (int i=0; i<taille11;i++) Matrix3[i] = new long[taille12]; menu(Matrix1, Matrix2, Matrix3, taille11, taille12, taille21, taille22); system("PAUSE"); return 0;}int define (int switching, long **ptr, long **ptr2, int taille11, int taille12, int taille21, int taille22 ){ if (switching == 1 ) { for( int y=0; y<taille12; y++ ) { for( int x=0; x<taille11; x++ ) { cout << "Entrez le " << x+1 << " ieme nombre de la " << y+1 << " ieme ligne de la 1ère matrice" << endl; cin >> ptr[x][y] ; } } for( int y=0; y<taille22; y++ ) { for( int x=0; x<taille21; x++ ){ cout << "Entrez le " << x+1 << " ieme nombre de la " << y+1 << " ieme ligne de la 2ème matrice" << endl; cin >> ptr2[x][y]; } } cout << "Matrices définies/redéfinies !" << endl; } if (switching == 2) { long **Matrix1 = NULL; long **Matrix2 = NULL; long **Matrix3 = NULL; int taille11, taille21, taille22, taille12; cout << "Taille de la premiere matrice ( Lignes )" << endl; cin >> taille11; cout << endl; cout << "Taille de la premiere matrice ( Colonnes )" <<endl; cin >> taille12; cout << endl; cout << "Taille de la seconde matrice ( Lignes )" << endl; cin >> taille21; cout << endl; cout << "Taille de la seconde matrice ( Colonnes )" << endl; cin >> taille22; cout << endl; cout << "Taille des matrices définie !" << endl; Matrix1 = new long*[taille11]; Matrix2 = new long*[taille21]; Matrix3 = new long*[taille11]; for( int i=0; i<taille11; i++ ) Matrix1[i] = new long[taille12]; for( int i=0; i<taille21; i++ ) Matrix2[i] = new long[taille22]; for (int i=0; i<taille11;i++) Matrix3[i] = new long[taille12]; menu(Matrix1, Matrix2, Matrix3, taille11, taille12, taille21, taille22); } return 0;}int print (long **ptr, long **ptr2, int taille11, int taille12, int taille21, int taille22, int which) { if ( which == 1) { print1(ptr,taille11,taille12,1); } else if (which == 2 ) { print2(ptr2, taille21, taille22,1); } else if ( which == 3) { print1 (ptr,taille11,taille12,1); cout << endl; print2 (ptr2,taille21,taille22,1); cout << endl; } return which;}int print1( long **ptr, int taille11, int taille12, int param) { if ( param == 1) { cout << "Affichage de la matrice n°1" << endl << endl; } for( int y=0; y<taille12; y++ ) { for( int x=0; x<taille11; x++ ) { cout << ptr[x][y] << " "; } cout << endl; } return 0;}int print2 ( long **ptr2, int taille21, int taille22, int param) { if (param == 1 ) { cout << "Affichage de la matrice 2" << endl << endl; } for( int y=0; y<taille22; y++ ) { for( int x=0; x<taille21; x++ ) { cout << ptr2[x][y] << " "; } cout << endl; } return 0;}int add (long **ptr, long **ptr2, long **ptr3, int taille11, int taille12, int print){ long **Matrix3 = NULL; for ( int y=0; y<taille12; y++) { for ( int x=0; x<taille11;x++) { ptr3[x][y] = ptr[x][y] + ptr2[x][y]; } } if (print) { for ( int y=0; y<taille12; y++) { for ( int x=0; x<taille11;x++) { cout << ptr[x][y] << " "; } cout << " + "; for ( int x=0; x<taille11;x++) { cout << ptr2[x][y] << " "; } cout << " = "; for (int x=0;x<taille11;x++) { cout << ptr3[x][y] << " "; } cout << endl; } } return 0;}void menu (long **Matrix1, long **Matrix2, long **Matrix3,int taille11, int taille12, int taille21, int taille22) {cout << endl << endl << endl; cout << " *** Menu ***" << endl << endl << endl << "1. Définir / Redéfinir les matrices" << endl << "2. Additioner les matrices" << endl; cout << "3. Multiplier les matrices ( option à faire disparaitre en fonction des tailles ..." << endl << "4. Redéfinir la taille des matrices" << endl; cout << "5. Afficher les matrices en mémoire" << endl << "6. Fin du programme" << endl << "Choix ? [1-6]" << endl << endl; int choix; cin >> choix; if (choix == 1) { define(1, Matrix1, Matrix2, taille11, taille12, taille21, taille22); print(Matrix1,Matrix2,taille11,taille12,taille21,taille22); system("PAUSE"); menu(Matrix1, Matrix2, Matrix3, taille11, taille12, taille21, taille22); } else if (choix == 2) { if ((taille11 == taille21) && (taille22 == taille12)) { add(Matrix1, Matrix2, Matrix3, taille11, taille12, 1); cout << endl; system("PAUSE"); menu(Matrix1, Matrix2, Matrix3, taille11, taille12, taille21, taille22); } else { cout << "Les matrices doivent être de même dimension pour pouvoir être additionnées !" << endl << endl; system("PAUSE"); menu(Matrix1, Matrix2, Matrix3, taille11, taille12, taille21, taille22); } } else if (choix == 3) { multiply(Matrix1, Matrix2, taille11, taille12, taille21, taille22); } else if (choix == 4) { for( int i=0; i<taille11; i++ ) { delete []Matrix1[i]; delete []Matrix1; } for( int i=0; i<taille21; i++ ) { delete []Matrix2[i]; delete []Matrix2; } for( int i=0; i<taille21; i++ ) { delete []Matrix3[i]; delete []Matrix3; } define(2,Matrix1, Matrix2, taille11, taille12, taille21, taille22); } else if (choix == 5) { print(Matrix1, Matrix2, taille11,taille12,taille21,taille22); cout << endl << endl; system("PAUSE"); cout << endl << endl; menu(Matrix1, Matrix2, Matrix3, taille11, taille12, taille21, taille22); } else if (choix == 6) { for( int i=0; i<taille11; i++ ) { delete []Matrix1[i]; delete []Matrix1; } for( int i=0; i<taille21; i++ ) { delete []Matrix2[i]; delete []Matrix2; } for( int i=0; i<taille21; i++ ) { delete []Matrix3[i]; delete []Matrix3; } cout << "Le programme s'arretera après la préssion sur la touche \"enter\"" << endl; } else { cout << "Mauvais choix, veuillez choisir un nombre entre 1 et 6" << endl; menu(Matrix1, Matrix2, Matrix3, taille11, taille12, taille21, taille22); }}int multiply (long **ptr, long **ptr2, int taille11, int taille12, int taille21, int taille22, int print) { if (taille11 == taille22) { long **Matrix3 = NULL; Matrix3 = new long*[taille11]; for( int i=0; i<taille11; i++ ) Matrix3[i] = new long[taille22]; for (int i=0; i<taille12; i++) { for (int j=0; j<taille11; j++) { int res = 0; for (int k=0; k<taille22; k++) { res += ptr[i][k]*ptr2[k][j]; } Matrix3[i][j] = res; } } if (print) { for ( int y=0; y<taille11; y++) { for ( int x=0; x<taille12;x++) { cout << ptr[x][y] << " "; } cout << " * "; if (y < taille21) { for ( int x=0; x<taille22;x++) { cout << ptr2[x][y] << " "; } } cout << " = "; if (y < taille21) { for (int x=0;x<taille12;x++) { cout << Matrix3[x][y] << " "; } } cout << endl; } } } else { cout << " Le nombre de colonnes de la 1ère matrice doit être égal au nombre de lignes de la 2ème matrice" << endl; } return 0;}