Kezdőoldal » Számítástechnika » Programozás » Objektumorientáltan hogyan...

Objektumorientáltan hogyan oldható ez meg?

Figyelt kérdés

Kell írnom egy beszorzó osztályt, egy hozzáadó osztályt és egy tároló osztályt.


A tárolóban egy struktúra kell legyen, amiben double x, double y, double z van.


A hozzáadó osztályban kell írnom egy függvényt, ami hozzá tud adni egy számot a struktúra elemeihez és ugyanígy a beszorzó osztályban is egy függvényt, csak annak szoroznia kell tudni.


Mindent értek, csak azt nem, hogy a main függvényen belül hogyan tudok a struktúrán dolgozni ezzel a két osztállyal? Mert ugye létrehozom a tárolót a main-en belül, létrehozom a hozzáadó és a beszorzó osztály egy-egy példányát is, de ezek hogyan tudnak dolgozni a tároló létrehozott példányain?


void main()

{

Tarolo t;

t.x=1;

t.y=2;

t.z=3;


Hozzaado o;

Beszorzo sz;


o.Hozzaad(t, 2); // Ez nem működik!

cout << t.x << " " << " " << t.y << " " << t.z;


sz.Beszoroz(t, 2); // Ez sem!

cout << t.x << " " << " " << t.y << " " << t.z;

}


A fenti kódban a cout minden esetben az eredeti t-t írja ki:

1 2 3

1 2 3


Pedig a következőt kéne kiírnia:

3 4 5

2 4 6


Mit rontok el??



2019. márc. 9. 23:19
 1/8 anonim ***** válasza:
25%

Látnom kéne a többi osztályt hogy megtudjam mondani mi a probléma. Egyrészt a Tarolo, Hozzaado Beszorzo osztályok miért nincsenek példányosítva vagy ezt így gyakorikérdéseken spóroltad le hogy new Hozzado(); ?


A tarolo osztályod, ami nem is egy osztály hanem egy struktúra, tárol valami listát ezekből a számokból?

Ha igen akkor ahhoz add hozzá. De mondom nem egészen értem a feladatot. Már maga nálam ott fura hogy miért írsz külön osztályt arra hogy hozzáad, meg beszoroz. Ezeknek ugyan abban az osztályban kéne hogy lenniük, de mivel nem látom át hogy mit akarsz pontosan csinálni így ebbe nem kötök bele. Másold ki pontosan a kódokat minden osztályodból ide és akkor bővebben tudok segíteni.

2019. márc. 10. 00:28
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
0%
Ja mondjuk nem mondtad meg a program nyelvet de én így instant c#-ra gondoltam, bár ezt nem tudom mi: cout << t.x << " " << " " << t.y << " " << t.z;
2019. márc. 10. 00:30
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:

Az objektumorientáltságot gyakorlom, pontosabban azt, hogy különböző osztályok között hogyan lehet "megosztani" egy adatot, ezért nem egy osztályba tettem a beszorzást és az összeadást. A nyelv c++.


Holnap bemásolom az osztályok kódjait, most csicsika van.

2019. márc. 10. 00:40
 4/8 anonim ***** válasza:
Épp csak a lényeges kódrészeket nem másoltad be.
2019. márc. 10. 01:34
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

#include <Tarolo.h>


void Hozzaad(Tarolo be, double szam) {

be.x=x+szam;

be.y=y+szam;

be.z=z+szam;

}


void Beszoroz(Tarolo be, double szam) {

be.x=x*szam;

be.y=y*szam;

be.z=z*szam;

}


Ennyi a kód. Az include azért van ott az elején, mert különben nem ismeri fel, hogy nekem van egy Tarolo típusú objektumom.

2019. márc. 10. 15:08
 6/8 anonim ***** válasza:
42%

Nézz utána mi az érték/referencia szerint érték átadás (passing by value/reference). Kifejezetten fontos érteni a különbséget már kezdő szinten is. A hibád is ez okozza, rosszul adod át az értéket, referenciaként kéne.


Egyébként #include "Tarolo". Így a preprocesszor először a lokális mappában keresi a fájlt, saját készítésű header esetén ezt akarod.

2019. márc. 10. 16:39
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:

Egyébként erősen kétlem, hogy az a feladat, hogy mindhárom számot meg kell szorozni meg hozzáadni.

Sokkal inkább hogy x, y az argumentumok, z az eredmény.

2019. márc. 10. 17:41
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
0%

Első dolog, amit elrontasz, azok a magyar változónevek.

Törekedj az angol (akár tört angol) változóneveke használatára, mert 1. számítógépse környezetben nem igen van magyar, 2. angol mellett elég csúnyán mutatnak a magyar változónevek.

2019. márc. 13. 12:53
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!