Springen naar inhoud

Matrices vermenigvuldigen c++


  • Log in om te kunnen reageren

#1

kilon

    kilon


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 09 februari 2010 - 16:33

Ik zit met een paar problemen die ik niet kan verklaren.

Ik moet, indien mogelijk, twee matrices met elkaar vermenigvuldigen. Hiervoor moet ik 3 functies gebruiken.

Maar wat is er fout? Waarom doet hij het niet?

Mijn code:
#include <iostream>

using namespace std;

//Definieren van de grootte van de matrices	  VERPLICHT
#define MAX_SIZE 10

typedef float matrix[MAX_SIZE][MAX_SIZE];	 //VERPLICHT

//Functie prototypes
void lees_matrix(matrix a[MAX_SIZE][MAX_SIZE], int m, int n);
void vermenigvuldig(matrix a[MAX_SIZE][MAX_SIZE],matrix b[MAX_SIZE][MAX_SIZE],matrix c[MAX_SIZE][MAX_SIZE], int m, int n, int p);
void print_matrix(matrix c[MAX_SIZE][MAX_SIZE], int m,int p);

int main()
{
	matrix a, b, c;
	int rij_a, kolom_a, rij_b, kolom_b;
	int z(0);
	
	cout << "Voer het aantal rijen en kolommen voer matrix a in." << endl;	 //Dimensies matrix a aanduiden
	cin >> rij_a >> kolom_a;
	
	cout << "Voer het aantal rijen en kolommen voer matrix a in." << endl;	 //Dimensies matrix b aanduiden
	cin >> rij_b >> kolom_b;
	
	
	if(rij_b != kolom_a)		//Voorwaarde voor het vermenigvuldigen van de matrices
	{	
		cout << "De dimensies van de matrices zijn niet geschikt voor vermenigvuldiging" << endl;
		exit(1);
	}
	
	cout << "Matrix a:" << endl;			  //Matrix a tonen
	cout << lees_matrix(a, rij_a, kolom_a) << endl;
	
	cout << "Matrix b:" << endl;			  //Matrix b tonen
	cout <<lees_matrix(b, rij_b, kolom_b) << endl;
 
	vermenigvuldig(a, b, c, rij_a, kolom_a, kolom_b);			  //Uitvoeren van de vermenigvuldiging
	
	cout << "Het product van deze matrices is: " << endl;		  //Het product matrix c tonen
	cout << print_matrix << endl;
	
	 
	system("PAUSE");
	return 0;	   //Einde hoofdprogramma
}

/*------------------------------------------------------------*/
//Function lezen matrix
void lees_matrix(matrix a[MAX_SIZE][MAX_SIZE], int m, int n,int z)
{
	int rij, kolom;
	for (rij=0; rij<m; rij++)
	{
		cout << "Voer de data in voor rij "<< rij+1 << endl;
		for(kolom=0; kolom<n; kolom++)
		{
			cin >> a[rij][kolom];
		}
	z=z+1;
	}
	for(rij=0; rij<m; rij++)
	{
		for(kolom=0; kolom<n; kolom++)
		{
			cout << a[rij][kolom] << " " << endl;
			cout << " " << endl;
		}
	}
	
	return;
}


/*------------------------------------------------------------*/
//Functie voor het vermenigvuldigen van de matrix
void vermenigvuldig(matrix a[MAX_SIZE][MAX_SIZE],matrix b[MAX_SIZE][MAX_SIZE],matrix c[MAX_SIZE][MAX_SIZE], int m, int n, int p)
{
	//Declacratie
	int i, j, k;
		
	for(i=0; i<m; i++)
	{
		for(j=0; j<p; j++)
		{
			c[i][j]=0;
			for(k=0; k<n; k++)				
			{
				c[i][j] += a[i][k]*b[k][j];
			}
		}
	}
	return;
}


/*------------------------------------------------------------*/
//Functie voor het printen van een matrix
void print_matrix(matrix c[MAX_SIZE][MAX_SIZE], int m,int p)
{
	int rij, kolom;
	for(rij=0; rij<m; rij++)
	{
		for(kolom=0; kolom<m; kolom++)
		{
			cout << c[rij][kolom] << " ";
		}
	}
	return;  
}

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.




0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures