Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C++Klase-Vektori

[es] :: C++ programiranje :: C++ za početnike :: C++Klase-Vektori

[ Pregleda: 564 | Odgovora: 2 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Edwa_ze
zenica

Član broj: 148365
Poruke: 29
*.telekabel.ba.



Profil

icon C++Klase-Vektori08.11.2007. u 16:33

Pozzz......
Znam da nista uradjeno postavio nisam, ali ne znam niti jedan korak ovog programa.Dobio sam kao domaci zadatak da uradim dole navedeni program. Molio bih ako neko moze i zna da pomogne............HVALA


Klase
Opterecivanje operatora

1. Definisati klasu Vektor koja ima sljedece clanove:
a) tri clana podatka, koji definišu komponente vektora u tri dimenzije - ax, ay, az,
b) funkcijski clan definisi, koji definiše neki vektor intenziteta nula,
c) funkcijski clan dajVrijednost, koji definisanom vektoru daje vrijednost za njegove
komponente - clan ima maksimalno tri argumenta,
d) funkcijski clan ispis, koji ispisuje neki vektor u obliku (ax,ay,az),
e) funkcijski clan intenzitet, koji daje intenzitet nekog vektora,
f) funkcijski clan saberi, koji sabire dva vektora - rezultat je vektor,
g) funkcijski clan oduzmi, koji oduzima dva vektora - rezultat je vektor,
h) funkcijski clan pomnoziSkalar, koji vektor množi proizvoljnim realnim brojem -
rezultat je vektor,
i) funkcijski clan skalarProiz, koji daje skalarni proizvod dva vektora - rezultat je
realan broj,
j) funkcijski clan vektorProiz, koji daje vektorski proizvod dva vektora - rezultat je
vektor.
08.11.2007. u 16:33 

xeron
Sarajevo

Član broj: 25909
Poruke: 127
89.146.190.*



Profil

icon Re: C++Klase-Vektori09.11.2007. u 12:12
Code:

class Vector{
    double x, y, z;
    public:
    
    void Definisi (){
        x=0; y=0; z=0;
        
    }

    void dajVrijednost(double x, double y, double z){
        Vector::x=x; Vector::y=y; Vector::z=z;
        //Ovdje se mogla izvrsiti dodjela i bez pisanja
        //ovog Vector::, ali zbog preglednosti sam to stavio.
        //Sada se vidi da se x artibutu klase Vector dodjeljuje
        //vrijednost varijable x.
    }

    void Ispisi() const {
        cout<<"{"<<x<<", "<<y<<", "<<z<<"}";
    }

    double Intenzitet() const {
        return sqrt(x*x + y*y + z*z);
    }

    void Saberi(const Vector & v){
        x= x+v.x; y= y+v.y; z= z+v.z;
    }

    void Oduzmi(const Vector & v){
        x= x-v.x; y= y-v.y; z= z-v.z;
    }

    void PomnoziSkalarom(double s){
        x= x*s; y= y*s; z= z*s;
    }

   //Odavde sada sam mozes zakljuciti na koji nacin se prave metode
   //pa sam dodaj te preostale, koje nisam ovdje naveo.


I da kao sto u tvom naslovu pise "Opterecivanje operatora" ce se desiti u slucaju da nad nekim objektom tipa Vector pozovemo vise ulancanih metoda. Npr.
Code:
v1.Saberi(v2).PomnoziSkalarom(5).Ispisi()
nam nece dati zeljeni rezultat. Da bi rijesili ovaj problem metode trebaju da vracaju referencu na objekat, a ne kopije objekta sto je slucaj u gore navedenim metodama.

Izmjena metoda, sada se moze koristiti ulancani poziv:
Code:

Vector &PomnoziSkalarom(double s){
    x= x*s; y= y*s; z= z*s;
    return *this;
}

Vector &Saberi(Vector &v){
    x= x+v.x; y= y+v.y; z= z+v.z;
    return *this;
 }


if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!\n");
exit(42);
}
09.11.2007. u 12:12 

[es] :: C++ programiranje :: C++ za početnike :: C++Klase-Vektori

[ Pregleda: 564 | Odgovora: 2 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.