You are on page 1of 7

# include <iostream>

using namespace std;

class Matrica{
int **p,m,n;
public:
Matrica();
Matrica(int, int);
~Matrica();
void unos();
void ispis();

};
Matrica::Matrica(){
p=NULL;
m=0;
n=0;
}
Matrica::Matrica(int red, int kol){
m=red;
n=kol;
p= new int*[red];
for(int i=0;i<red;i++){
p[i]= new int[kol];
}
for(int k=0;k<m;k++){
for(int j=0;j<n;j++)
p[k][j]=0;
}
}
Matrica::~Matrica(){
for(int i=0;i<m;i++)
delete p[i];
delete p;
}
void Matrica::unos(){
cout<<"Unesite elemente matrice po redovima: "<< endl;
for(int i=0;i<m;i++)
for(int j=0; j<n;j++)
cin>>p[i][j];
}
void Matrica::ispis(){
cout<<"Matrica je"<< endl;

for(int i=0;i<m;i++){
for(int j=0; j<n;j++)
cout<<p[i][j]<<" ";
cout << endl;
}
cout<< endl;
}
int main(){
Matrica A;
A.ispis();
Matrica B(3,3);
B.ispis();
B.unos();
B.ispis();
return 0;
}

Drugi dio:

# include <iostream>

using namespace std;

class Matrica{
int **p,m,n;
public:
Matrica();
Matrica(int, int);
~Matrica();
void unos();
void ispis();
int& operator()(int,int);
Matrica(const Matrica &);
Matrica& operator=(const Matrica &);
Matrica operator+(Matrica);

friend Matrica operator*(Matrica,Matrica); //frend funkcija bez get i set i pristupa elementima
matrice

};

Matrica::Matrica(){
p=NULL;
m=0;
n=0;
}
Matrica::Matrica(int red, int kol){
m=red;
n=kol;
p= new int*[red];
for(int i=0;i<red;i++){
p[i]= new int[kol];
}
for(int k=0;k<m;k++){
for(int j=0;j<n;j++)
p[k][j]=0;
}

Matrica::~Matrica(){
for(int i=0;i<m;i++)
delete p[i];
delete p;

void Matrica::unos(){
cout<<"Unesite elemente matrice po redovima: "<< endl;
for(int i=0;i<m;i++)
for(int j=0; j<n;j++)
cin>>p[i][j];

}
void Matrica::ispis(){
cout<<"Matrica je"<< endl;
for(int i=0;i<m;i++){
for(int j=0; j<n;j++)
cout<<p[i][j]<<" ";
cout << endl;
}

cout<< endl;
}

int& Matrica::operator ()(int r, int k){


if(p!=NULL && r>0 && r<=m && k>0 && k<=n)
return p[r-1][k-1];
else
cout <<"Indeksi izvan dimenzija matrice"<< endl;

}
Matrica::Matrica(const Matrica &A){
m=A.m;
n=A.n;
p= new int*[m];
for(int i=0;i<m;i++){

p[i]= new int[n];


}
for(int k=0;k<m;k++){
for(int j=0;j<n;j++)
p[k][j]=A.p[k][j];
}

Matrica& Matrica::operator=(const Matrica &A){


m=A.m;
n=A.n;
p= new int*[m];
for(int i=0;i<m;i++){
p[i]= new int[n];
}
for(int k=0;k<m;k++){
for(int j=0;j<n;j++)
p[k][j]=A.p[k][j];
}

return*this;
}
Matrica Matrica::operator+(Matrica A){
if (m==A.m && n==A.n){
Matrica R(m,n);
for(int i=0;i<m;i++){
for(int j=0; j<n;j++)
R.p[i][j]=p[i][j]+A.p[i][j];

}
return R;
}

else
cout<< "Nisu iste dimenzije matrica!!"<< endl;
}

Matrica operator*(Matrica A, Matrica B){


if(A.n == B.m){
Matrica R (A.m,B.n);
for(int i=0;i<A.m;i++){
for(int j=0;j<B.n;j++){
R.p[i][j]=0;
for(int k=0;k<A.n;k++)
R.p[i][j]+=A.p[i][k]*B.p[k][j];
}

return R;

}
else
cout<< "Dimenzije matrice se ne podudaraju!!!"<<endl;
}

int main(){
Matrica A;

A.ispis();
Matrica B(3,3);
B.ispis();
B.unos();
B.ispis();
B(2,2)=0;
B.ispis();
Matrica C=B;
C.ispis();
A=C;
A.ispis();
C=A+B;
cout<<"A+B"<<endl;
C.ispis();
C=A*B;
cout<<"A*B"<<endl;
C.ispis();

return 0;
}

You might also like