Hej nie dziala mi jak trzeba mnozenie macierzy, chcialby ktos mi dac jakas wskazowke?
Bylabym wdzieczna
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
void czytaj(int **&a,int w,int k)
{
a=new int *[w];
for(int i=0;i<w;i++)
a[i]=new int[k];
}
void wypelnij(int **a,int w,int k)
{
for(int i=0;i<w;i++)
{
for(int j=0;j<k;j++)
{
a[i][j]=1 + rand()%20;
}
}
}
void wyswietl(int **a,int w,int k)
{
for(int i=0;i<w;i++)
{
for(int j=0;j<k;j++)
{
cout<<a[i][j]<<" ";
}
}
}
void kasuj(int **a,int w,int k)
{
for(int i=0;i<w;i++)
{
delete []a[i];
}
delete[]a;
}
void suma(int **a,int **b,int w1,int k1)
{
int dodaw[w1][k1];
for(int i=0;i<w1;i++)
{
for(int j=0;j<k1;j++)
{
dodaw[i][j]=a[i][j]+b[i][j];
cout<<dodaw[i][j]<<" ";
}
}
}
void odejmowanie(int **a,int **b,int w1,int k1)
{
int odejmowanie[w1][k1];
for(int i=0;i<w1;i++)
{
for(int j=0;j<k1;j++)
{
odejmowanie[i][j]=a[i][j]-b[i][j];
cout<<odejmowanie[i][j]<<" ";
}
}
}
void mnozenie(int **a,int **b, int **c, int w1, int k1)
{
int mnozenie[w1][k1];
for(int i=0;i<w1;i++)
{
for(int j=0;j<k1;j++)
{
c[i][j]=0;
for(int k=0;k<k1;k++)
{
c[i][j]=(a[i][k]*b[k][j])+c[i][j];
cout<<c[i][j]<<" ";
}
}
}
}
int main()
{
srand(time(0)); //losowe liczby do macierzy
int b,c,d,e;
int **tab1,**tab2, **tab3;
cout<<"Podaj rozmiar Macierzy A - liczba wierszy: \n";
cin>> b;
cout<<"Podaj rozmiar Macierzy A - liczba kolumn: \n";
cin>>c;
cout<<"Podaj rozmiar Macierzy B - liczba wierszy: \n";
cin>>d;
cout<<"Podaj rozmiar Macierzy B - liczba kolumn: \n";
cin>>e;
czytaj(tab1,b,c);
czytaj(tab2,d,e);
wypelnij(tab1,b,c);
wypelnij(tab2,d,e);
cout << "Macierz A: \n";
wyswietl(tab1,b,c);
cout<<endl;
cout << "Macierz B: \n";
wyswietl(tab2,d,e);
cout<<endl;
if (b == d && c == e )
{
cout << "Wynik dodawania macierzy A i B wynosi: \n\n";
suma(tab1,tab2,b,c);
}
else
{
cout<< "Macierzy nie mozna dodac ! Macierze musza miec ten sam rozmiar\n\n";
}
if (b == d && c == e )
{
cout << "Wynik odejmowanie macierzy A i B wynosi: \n";
odejmowanie(tab1,tab2,b,c);
}
else
{
cout<< "Macierzy nie mozna odjac ! Macierze musza miec ten sam rozmiar\n\n";
}
if ( c != d)
{
cout<< "Macierzy nie mozna pomnozyc ! \nIlosc kolumn macierzy A nie rowna sie ilosci wierszy macierzy B!!\nSprobuj ponownie\n\n";
}
else
{
cout << "Wynik mnozenia macierzy A i B wynosi: \n\n";
mnozenie(tab1,tab2,tab3, b, d);
}
kasuj(tab1,b,c);
kasuj(tab2,d,e);
return 0;
}