Dzien dobry,
POtrzbuje biblioteki do mnozenia macierzy, czy wie ktos moze gdzie mozna ja znalezc? (ewntualnie biblioteka do mnozenia czegokolwiek)
Za wszelka pomoc b. dziekuje
Dzien dobry,
POtrzbuje biblioteki do mnozenia macierzy, czy wie ktos moze gdzie mozna ja znalezc? (ewntualnie biblioteka do mnozenia czegokolwiek)
Za wszelka pomoc b. dziekuje
A co to jest to "cokolwiek"? Chcesz bibliotekę do mnożenia liczb: proszę bardzo:
int a, b, c;
c = a*b;
A jeżeli chodzi ci wyłącznie o mnożenie macierzy to chyba nie jest wielki problem samemu funkcję napisać.
Wklepie Ci część z mojego programu:
Klasa macierzy:
class Matrix
{
public:
float **tab;
int lk;
int lw;
Matrix();
Matrix(int, int); //Na potrzeby komputera;)
~Matrix();
Matrix& operator*(Matrix&);
Matrix& operator=(Matrix&);
};
Okroiłem klase tylko do mnozenia;) Bedziesz chcial wiecej to zrobisz;)
Deklaracja:
Matrix::Matrix()
{
char temp;
cout << endl << "------TWORZENIE MACIERZ------";
cout << endl << "-----------------------------";
cout << endl << "1. Podaj ilosc kolumn: ";
cin >> lk;
cout << endl << "2. Podaj ilosc wierszy: ";
cin >> lw;
tab = new float *[lw];
for(int i=0; i<lw;i++)
{
tab[i] = new float[lk];
}
cout << endl << endl;
for(int i=0;i<lw;i++)
{
for(int j=0;j<lk;j++)
{
cout << "Podaj wartosc elementu. Wiersz: "<< i+1 << " Kolumna: " << j+1 << " :: ";
cin >> tab[i][j];
}
}
}
Matrix::Matrix(int k, int w)
{
lk=k;
lw=w;
tab = new float *[lw];
for(int i=0;i<lw;i++)
{
tab[i]= new float[lk];
}
for(int i=0;i<lw;i++)
{
for(int j=0;j<lk;j++)
{
tab[i][j]=0;
}
}
}
Matrix::~Matrix()
{
for(int i=0;i<lw;i++)
{
delete [] tab[i];
}
delete [] tab;
}
Matrix& Matrix::operator*(Matrix& a)
{
Matrix *temp = new Matrix(a.lk,lw);
for(int i=0;i<temp->lw;i++)
{
for(int j=0;j<temp->lk;j++)
{
for(int k=0;k<lk;k++)
{
temp->tab[i][j]+=tab[i][k]*a.tab[k][j];
}
if(fabs(temp->tab[i][j])<EP)
{
temp->tab[i][j]=0;
}
}
}
return *temp;
}
Matrix& Matrix::operator=(Matrix& a)
{
if(&a!=this)
{
for(int i=0;i<lw;i++)
{
delete [] tab[i];
}
delete [] tab;
lk=a.lk;
lw=a.lw;
tab = new float *[a.lw];
for(int i=0; i<lw;i++)
{
tab[i] = new float[a.lk];
}
for(int i=0;i<lw;i++)
{
memcpy(tab[i],a.tab[i],lk*sizeof(tab[i]));
}
}
return *this;
}
I przykladowe uzycie tego w kodzie programu:
Matrix *pierwsza = new Matrix();
Matrix *druga =new Matrix();
Matrix *wynik =new Matrix(1,1);
*wynik = *pierwsza * *druga;
I w macierzy wynik masz iloczyn;)
Nie zapomnij po takim mnozeniu o:
delete pierwsza;
delete druga;
delete wynik;
Aha.. na poczatku trzeba:
#include <iostream>
#include <math.h>
#define EP 0.000001
ok dzieki