Code:
#include <stdio.h>
class matrica {
double **baza;
int br_kolona, br_vrsta;
public:
int dodeli (int v, int k);
int unesi ();
int ispis ();
matrica operator =(matrica mat);
matrica operator +(matrica B);
matrica operator -(matrica B);
matrica operator *(matrica B);
};
matrica matrica::operator =(matrica mat){
int i, j;
for (i=0; i<br_vrsta; i++)
for(j=0; j<br_kolona; j++)
baza[i][j]=mat.baza[i][j];
return *this;
}
matrica matrica::operator+(matrica B) {
matrica temp;
temp.dodeli(br_vrsta, br_kolona);
int i, j;
temp=B;
for (i=0; i<br_vrsta; i++)
for(j=0; j<br_kolona; j++)
temp.baza[i][j]=baza[i][j]+B.baza[i][j];
return temp;
}
matrica matrica::operator-(matrica B) {
matrica temp;
temp.dodeli(br_vrsta, br_kolona);
int i, j;
temp=B;
for (i=0; i<br_vrsta; i++)
for(j=0; j<br_kolona; j++)
temp.baza[i][j]=baza[i][j]-B.baza[i][j];
return temp;
}
matrica matrica::operator *(matrica B) {
matrica temp;
temp.dodeli(br_vrsta, B.br_kolona);
// printf ("%dx%d\n",br_vrsta, B.br_kolona );
int i, j, k;
for(i=0; i<br_vrsta; i++)
for(j=0; j<B.br_kolona; j++)
temp.baza[i][j]=20;
for(i=0; i<br_vrsta; i++)
for(j=0; j<B.br_kolona; j++)
for(k=0; k<br_vrsta; k++)
temp.baza[i][j]=10;
return temp;
}
int matrica::dodeli(int v, int k) {
baza=new double *[v];
for(int i=0; i<v; i++)
baza[i]=new double [k];
br_vrsta=v;
br_kolona=k;
return 1;
}
int matrica::unesi() {
int i, j;
printf ("Elementi:\n");
for (i=0; i<br_vrsta; i++)
for(j=0; j<br_kolona; j++) {
printf ("[%d][%d]= ", i, j);
scanf ("%d", &baza[i][j]);
}
return 1;
}
int matrica::ispis() {
int i, j;
for (i=0; i<br_vrsta; i++) {
for(j=0; j<br_kolona; j++) {
printf ("%4d ", baza[i][j]);
}
printf ("\n");
}
printf ("\n");
return 1;
}
int main() {
int x, y, i, j, Xprve, Yprve;
char sel;
matrica A, B, C;
printf ("Unesite broj vrsta i kolona prve matrice: ");
scanf ("%d%d", &x, &y);
A.dodeli(x,y);
Xprve=x;
Yprve=y;
A.unesi();
printf ("Unesite broj vrsta i kolona druge matrice: ");
scanf ("%d%d", &x, &y);
B.dodeli(x,y);
B.unesi();
printf ("Elementi matrica su\n");
A.ispis();
printf ("i\n\n");
B.ispis();
C.dodeli(Xprve, y);
// printf ("%dx%d\n",Xprve, y );
do{
printf ("Izaberite racunsku operaciju[+,-,*]: ");
scanf (" %c", &sel);
switch (sel) {
case '+': {
if(Xprve==x && Yprve==y) {
printf ("Zbir matrica je\n");
C=A+B;
C.ispis();
}
else
printf ("Matrice nisu istih dimenzija i nije ih moguce sabirati!\n");
}
break;
case '-': {
if(Xprve==x && Yprve==y) {
printf ("Razlika matrica je\n");
C=A-B;
C.ispis();
}
else
printf ("Matrice nisu istih dimenzija i nije ih moguce oduzimati!\n");
}
break;
case '*': {
if(Yprve==x) {
printf ("Proizvod matrica je\n");
C=A*B;
C.ispis();
}
else
printf ("Broj kolona prve matrice mora biti jednak broju redova druge da bi se mogle mnoziti!\n");
}
break;
default: printf ("Greska.Niste uneli validan karakter\n");
}
printf ("Ponovo[y/n]? ");
scanf (" %c", &sel);
if (sel == 'n' || sel=='N')
break;
}
while(1);
return 0;
}
#include <stdio.h>
class matrica {
double **baza;
int br_kolona, br_vrsta;
public:
int dodeli (int v, int k);
int unesi ();
int ispis ();
matrica operator =(matrica mat);
matrica operator +(matrica B);
matrica operator -(matrica B);
matrica operator *(matrica B);
};
matrica matrica::operator =(matrica mat){
int i, j;
for (i=0; i<br_vrsta; i++)
for(j=0; j<br_kolona; j++)
baza[i][j]=mat.baza[i][j];
return *this;
}
matrica matrica::operator+(matrica B) {
matrica temp;
temp.dodeli(br_vrsta, br_kolona);
int i, j;
temp=B;
for (i=0; i<br_vrsta; i++)
for(j=0; j<br_kolona; j++)
temp.baza[i][j]=baza[i][j]+B.baza[i][j];
return temp;
}
matrica matrica::operator-(matrica B) {
matrica temp;
temp.dodeli(br_vrsta, br_kolona);
int i, j;
temp=B;
for (i=0; i<br_vrsta; i++)
for(j=0; j<br_kolona; j++)
temp.baza[i][j]=baza[i][j]-B.baza[i][j];
return temp;
}
matrica matrica::operator *(matrica B) {
matrica temp;
temp.dodeli(br_vrsta, B.br_kolona);
// printf ("%dx%d\n",br_vrsta, B.br_kolona );
int i, j, k;
for(i=0; i<br_vrsta; i++)
for(j=0; j<B.br_kolona; j++)
temp.baza[i][j]=20;
for(i=0; i<br_vrsta; i++)
for(j=0; j<B.br_kolona; j++)
for(k=0; k<br_vrsta; k++)
temp.baza[i][j]=10;
return temp;
}
int matrica::dodeli(int v, int k) {
baza=new double *[v];
for(int i=0; i<v; i++)
baza[i]=new double [k];
br_vrsta=v;
br_kolona=k;
return 1;
}
int matrica::unesi() {
int i, j;
printf ("Elementi:\n");
for (i=0; i<br_vrsta; i++)
for(j=0; j<br_kolona; j++) {
printf ("[%d][%d]= ", i, j);
scanf ("%d", &baza[i][j]);
}
return 1;
}
int matrica::ispis() {
int i, j;
for (i=0; i<br_vrsta; i++) {
for(j=0; j<br_kolona; j++) {
printf ("%4d ", baza[i][j]);
}
printf ("\n");
}
printf ("\n");
return 1;
}
int main() {
int x, y, i, j, Xprve, Yprve;
char sel;
matrica A, B, C;
printf ("Unesite broj vrsta i kolona prve matrice: ");
scanf ("%d%d", &x, &y);
A.dodeli(x,y);
Xprve=x;
Yprve=y;
A.unesi();
printf ("Unesite broj vrsta i kolona druge matrice: ");
scanf ("%d%d", &x, &y);
B.dodeli(x,y);
B.unesi();
printf ("Elementi matrica su\n");
A.ispis();
printf ("i\n\n");
B.ispis();
C.dodeli(Xprve, y);
// printf ("%dx%d\n",Xprve, y );
do{
printf ("Izaberite racunsku operaciju[+,-,*]: ");
scanf (" %c", &sel);
switch (sel) {
case '+': {
if(Xprve==x && Yprve==y) {
printf ("Zbir matrica je\n");
C=A+B;
C.ispis();
}
else
printf ("Matrice nisu istih dimenzija i nije ih moguce sabirati!\n");
}
break;
case '-': {
if(Xprve==x && Yprve==y) {
printf ("Razlika matrica je\n");
C=A-B;
C.ispis();
}
else
printf ("Matrice nisu istih dimenzija i nije ih moguce oduzimati!\n");
}
break;
case '*': {
if(Yprve==x) {
printf ("Proizvod matrica je\n");
C=A*B;
C.ispis();
}
else
printf ("Broj kolona prve matrice mora biti jednak broju redova druge da bi se mogle mnoziti!\n");
}
break;
default: printf ("Greska.Niste uneli validan karakter\n");
}
printf ("Ponovo[y/n]? ");
scanf (" %c", &sel);
if (sel == 'n' || sel=='N')
break;
}
while(1);
return 0;
}