All pastes #408799 Raw Edit

Untitled

public cpp v1 · immutable
#408799 ·published 2007-03-25 03:15 UTC
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;}