Dobila sam zadatak da definišem klasu Matrix koja ima sl. članove :
1. 3 člana podatka red za broj redova , vrst za vrstu i elem preko pointera
i ja to napisa ovako :
Code:
class Matrix {
int red ;
int vrst ;
double **elem ;
class Matrix {
int red ;
int vrst ;
double **elem ;
ali sada dođoše na red te funkcije pa se traži sledeće :
2. funkcijski član def koji definiše matricu sa svim elementima =0
3. funkcijski član upis koji pridružuje realne vrijednosti elementima matrice
4. funkcijski član ispis koji ispisuje matricu red po red
5. funkcijski član kvad koji provjerava da li je matrica kvadratna
6. funkcijski član trans koji daje transponovanu matricu zadane matrice
7. funkcijski član saberi, koji sabire 2 matrice i rezultat je matrica. Ukoliko broj redova i kolona ne odgovaraju ispisati text koji javlja grešku
8. funkcijski član oduzmi koji oduzima 2 matrice i rezultat je matrica isto javlja za grešku
9. funkcijski član pomnožiSkalar koji matricu množi proizvoljnim realnim brojem i rezultat je matrica
10 . funkcijski član pomnoži koji množi 2 matrice i rezultat je matrica ako redovi i kolone ne odgovaraju da javi grešku
11. funkcijski član sing ,koji provjerava da li je matrica singularna
12. funkcijski član inv , koji izračunava inverznu matricu ako ista postoji tj. ako matrica nije singularna
13. funkcijski član det , koji daje vrijednost determinante matrice ako je ista kvadratna
Da li neko ima dovoljno iskustva i slobodnog vremena da definiše ove funkcijske članove ?
Evo neki kod koji bi možda mogao pomoći osobi koja je nveć radila sa klasama , ja sam iskreno tek juče pokušala nešto s tim . ( definisan je unos ispis transponovana matrica .... )
CODE :
Code:
# include <iostream>
# include <vector>
using namespace std;
// Funkcija DaLiJeGornjaTrougaona...
bool DaLiJeGornjaTrougaona(vector<vector<double> > a){
bool istina=true;
for (int i=1; i<a.size(); i++)
for (int j=0; j<i; j++)
if (a[j]!=0) istina=false;
return istina;
}
// Funkcija TragMatrice...
double TragMatrice(vector<vector<double> > a){
if (a.size()!=a[0].size())
throw "Matrica nije kvadratna, nema traga i ne moze biti trougaona!\n";
double rez=0;
for (int i=0; i<a.size(); i++) rez+=a;
return rez;
}
// Funkcija Transponovana...
vector<vector<double> > Transponovana(vector<vector<double> > a){
int pom1=a.size(); // Pocetni broj redova matrice
int pom2=a[0].size(); // Pocetne broj kolona matrice
// max - veca dimenzija (red ili kolona)
int max=a[0].size();
if (a.size()>a[0].size()) max=a.size();
// Resize matrice na kvadratnu dimenzija [max][max]
a.resize(max);
for(int i = 0; i < max; i++) a.resize(max);
// "Okretanje" odgovarajucih pozicija u matrici
double priv;
for (int i=0;i<max;++i)
for (int j=i+1;j<max;++j)
# include <iostream>
# include <vector>
using namespace std;
// Funkcija DaLiJeGornjaTrougaona...
bool DaLiJeGornjaTrougaona(vector<vector<double> > a){
bool istina=true;
for (int i=1; i<a.size(); i++)
for (int j=0; j<i; j++)
if (a[j]!=0) istina=false;
return istina;
}
// Funkcija TragMatrice...
double TragMatrice(vector<vector<double> > a){
if (a.size()!=a[0].size())
throw "Matrica nije kvadratna, nema traga i ne moze biti trougaona!\n";
double rez=0;
for (int i=0; i<a.size(); i++) rez+=a;
return rez;
}
// Funkcija Transponovana...
vector<vector<double> > Transponovana(vector<vector<double> > a){
int pom1=a.size(); // Pocetni broj redova matrice
int pom2=a[0].size(); // Pocetne broj kolona matrice
// max - veca dimenzija (red ili kolona)
int max=a[0].size();
if (a.size()>a[0].size()) max=a.size();
// Resize matrice na kvadratnu dimenzija [max][max]
a.resize(max);
for(int i = 0; i < max; i++) a.resize(max);
// "Okretanje" odgovarajucih pozicija u matrici
double priv;
for (int i=0;i<max;++i)
for (int j=i+1;j<max;++j)
Unaprijed hvala na pomoći !!!
[Ovu poruku je menjao X Files dana 23.10.2008. u 10:38 GMT+1]