Próbuje napisać program do mnożenia macierzy. O to kod:
#include <cstdlib>
#include <iostream>
using namespace std;
class macierz
{
private:
float tab[6][6];
int wiersz,kolumna;
public:
float mnozenie(float tab1[6][6],float tab2[6][6]);
void wypisz();
void nowa();
macierz operator*(macierz&);
};
//-----------wypisywanie macierzy-----------------------------------------------
void macierz::wypisz()
{
int i,j;
for(i=0;i<wiersz;i++)
{
for(j=0;j<kolumna;j++)
{
cout<<tab[i][j]<<" ";
if(j==kolumna-1)
{
cout<<endl;
}
}
}
}
//----------konstruktor ------------nowa macierz-------------------------------
void macierz::nowa()
{
int i,j;
cout<<"Podaj rozmiar macierzy\n Liczba wierszy:";
cin>>wiersz;
cout<<"Liczba kolumn:";
cin>>kolumna;
cout<<"Podaj wartosci macierzy (wierszami)\n";
for(i=0;i<wiersz;i++)
{
for(j=0;j<kolumna;j++)
{
cin>>tab[i][j];
}
}
}
//--------- operator * ---------------------------------------------------------
macierz macierz::operator*(macierz& mac)
{
macierz temp;
int i,j,k;
for(i=0;i<wiersz;i++) //mnożenie
{
for(k=0;k<kolumna;k++)
{
for(j=0;j<kolumna;j++)
{
temp.tab[i][k]=0;
temp.tab[i][k]=temp.tab[i][k]+ (tab[i][j]* mac.tab[j][k]);
}
}
}
return temp;
}
//-------------funkcja głowan main ---------------------------------------------
int main(int argc, char *argv[])
{
macierz m1,m2,m3; //deklaracja
m1.nowa();
m1.wypisz();
m2.nowa();
m2.wypisz();
m3=m1*m2; //mnożenie przeładowanym operatorem *
m3.wypisz();
system("PAUSE");
return 0;
}
Program nie wyświetla macierzy po wymnożeniu. Nie wiem dlaczego, może mógłby ktoś zerknąć na to.
Z góry dziekuje