Forum » Programiranje » C++ razred imaginarno število
C++ razred imaginarno število
golobich ::
Pozdravljeni!
Dobil sem naslednjo nalogo:
Imamo razred imaginarno_stevilo in v njem deklarirani dve privatni spremenljivki za realni in imaginarni del imaginarnega števila. Napiši privzeti konstruktor, ki nastavi vrednosti obeh spremenljivk na 1 ter destruktor. Razred vsebuje tudi javno metodo void nastavi(), ki nastavi imaginarno število na poljubno vnesene celoštevilske vrednosti. Napiši tudi metodo, ki sešteje dve imaginarni števili! Prikaži na primeru.
Meni je uspelo kar en velik del tega programa napisat, vendar mi rezultat narobe izpiše. Če vpiše realni in imaginarni del prvega števila 2 in realni in imaginarni del drugega števila 3, mi namesto 5 vrže ven 4.
Ni mi pa jasno zakaj.
To je pa koda
Dobil sem naslednjo nalogo:
Imamo razred imaginarno_stevilo in v njem deklarirani dve privatni spremenljivki za realni in imaginarni del imaginarnega števila. Napiši privzeti konstruktor, ki nastavi vrednosti obeh spremenljivk na 1 ter destruktor. Razred vsebuje tudi javno metodo void nastavi(), ki nastavi imaginarno število na poljubno vnesene celoštevilske vrednosti. Napiši tudi metodo, ki sešteje dve imaginarni števili! Prikaži na primeru.
Meni je uspelo kar en velik del tega programa napisat, vendar mi rezultat narobe izpiše. Če vpiše realni in imaginarni del prvega števila 2 in realni in imaginarni del drugega števila 3, mi namesto 5 vrže ven 4.
Ni mi pa jasno zakaj.
To je pa koda
#include<iostream> using namespace std; class imaginarnoStevilo { private: int realno; int imaginarno; public: void imaginarnoStevilo::set_values(int realno, int imaginarno) { this->realno = realno; this->imaginarno = imaginarno; } void izpis() { cout<<"Realni del: "<<realno<<endl; cout<<"Imaginarni del: "<<imaginarno<<endl; } imaginarnoStevilo operator+(imaginarnoStevilo); }; imaginarnoStevilo imaginarnoStevilo::operator+(imaginarnoStevilo) { imaginarnoStevilo vaja; vaja.realno=this->realno + realno; vaja.imaginarno = this->imaginarno + imaginarno; vaja.izpis(); } int napolniRealni () { int a; cout<<"Vnesi realni del: "<<endl; cin>>a; return a; } int napolniImaginarni() { int a; cout<<"Vnesi imaginarni del: "; cin>>a; return a; } int main() { int a = napolniRealni(); int b = napolniImaginarni(); int c = napolniRealni(); int d = napolniImaginarni(); imaginarnoStevilo stevilo1, stevilo2; stevilo1.set_values(a,b); stevilo2.set_values(c,d); stevilo1+stevilo2; // stevilo1.izpis(); cout<<endl; system ("pause"); return 0; }
dice7 ::
Tvoja napaka je pri 'operator+'. Ti deklariraš nov objekt 'vaja' za skorajda brezveze in vrednost imaginarnega in realnega tistega objekta (ki je lahko karkoli vsaj ti jih ničesar ne postavlja na 0) prišteješ vrednosti iz objekta 'stevilo2'
Če si prvotno želel, da ti sešteje vrednosti objektov 'stevilo1' in 'stevilo2' in se spremembe shranijo v 'stevilo1', potem bo nekaj takšnega delovalo
Če si prvotno želel, da ti sešteje vrednosti objektov 'stevilo1' in 'stevilo2' in se spremembe shranijo v 'stevilo1', potem bo nekaj takšnega delovalo
void imaginarnoStevilo::operator+(imaginarnoStevilo vaja) //objekt 'vaja' ima lastnosti objekta 'stevilo2' { // 'this' se pa v tem primeru nanaša na objekt 'stevilo1' this->realno = this->realno + vaja.realno; this->imaginarno = this->imaginarno + vaja.imaginarno; //vaja.izpis(); }
Zgodovina sprememb…
- spremenil: dice7 ()
xordie ::
Manjkata se ti privzeti konstruktor in destruktor. Uporaba this je odvec.
Se ti zdi smiselno, da se stevilo1 spremeni ko mu pristejes stevilo2.
Verjetno bi bilo boljse:
V tem primeru ohranis prvotne vrednosti stevil.
Se ti zdi smiselno, da se stevilo1 spremeni ko mu pristejes stevilo2.
Verjetno bi bilo boljse:
stevilo3=stevilo1+stevilo2; stevilo3.izpis();
V tem primeru ohranis prvotne vrednosti stevil.
x
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | kompleksna številaOddelek: Šola | 1734 (1412) | FrRoSt |
» | Implementacija kompleksnih števil za FTOddelek: Programiranje | 1328 (900) | Randomness |
» | Risanje "čudnih" grafovOddelek: Šola | 1634 (1468) | blaz_ |
» | C++ programaOddelek: Programiranje | 1034 (820) | DubleG |
» | -1 = 1 ????Oddelek: Šola | 1736 (1435) | McHusch |