Kezdőoldal » Számítástechnika » Programozás » Ha két változót szeretnék...

Ha két változót szeretnék visszakapni egy fuggvénytol, akkor azt hogyan olvaso ki?

Figyelt kérdés

Idaig csak egy valtozot kellet, amit a main fuggvenybol pl. igy tudtam visszaadni :


int x = Afunc();


de ha ket erteket raknak be a Afunc() fuggveny visszateresebe ,akkor azt hogyan tudom hozzarendelni a main fuggvenybe ket kulonbozo valtozonak,hogy egyik az elsot a masik valtozo a masik erteket kapja meg ?


int x,y = Afunc(); - valami hasonlo lessz ....?!?


2016. nov. 22. 17:48
 1/9 anonim ***** válasza:

Összetett visszatérési értékkel vagy kimenő paraméterrel.


Csak érdekességként: a C# 7 például tudni fog olyasmit, amit szeretnél.

2016. nov. 22. 18:12
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
Biztos, hogy jó az elgondolás? Egyébként nézz utána, hogy mit is jelent az a bizonyos "eredmény szerinti paraméterátadás".
2016. nov. 22. 18:41
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:

Megprobalom mashogy megfogalmazni.

Hogy lehetne azt megoldani,hogy egy fuggvenynek legyen két visszateresi erteke/valtozoja.

pl.


int Afunc(){

valamit szamol

return a,b;

}


ha ez lehetséges - akkor ezt a ket erteket hozzarendelni valamihez hogy lehet majd a main fuggvenyben ?

pl.

int a = Afun().a; - gondolom ez nem jo,de valami hasonlot szeretnek elerni C nyelvben.

int b = Afun().b;

2016. nov. 22. 18:56
 4/9 anonim ***** válasza:

A gyakorlatban legkönnyebben így:

int Afunc(int* A, int* B) {

if (A == NULL || B == NULL) {

//Hiba van, nem lett megadva valamelyik memóriacím

return 0; //Hogy megelőzzük a program lehalását, itt hibát dobhatsz.

}

*A = 5;

*B = 6;


return 1; //jelezvén, hogy minden rendben volt

}


int main() {

int a;

int b;

if (Afunc(&a, &b)) {

//Minden rendben volt, az a-ba és a b-be a jó értékek kerültek bele

}

else {

//vigyázni kell, mert valami félre ment, így se az a, se a b nem tartalmaz jó értékeket

}


return EXIT_SUCCESS;

}

2016. nov. 22. 19:06
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

Ooh koszi.

Ezt lehet ugy is,hogy nem adunk meg paramternek semmit a fuggvenynek . Szoval a func() nem ker bemeno parametert..

2016. nov. 22. 19:10
 6/9 anonim ***** válasza:

struct Asd {

int A;

int B;

};


struct Asd func() {

struct Asd eredmeny;

eredmeny.A = 5;

eredmeny.B = 6;

return eredmeny;

}


int main() {

struct Asd valami = func();


return 0;

}

2016. nov. 22. 19:22
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

Így, ahogy a fenti leírta nem, hiszen meg kell adnod neki valahogy, hogy pakolja be az értékeket. Mellesleg tök jó, hogy nem írtál nyelvet.


Alternatíva:

- Szétszeded a függvény működését két függvényre, és külön-külön adod vissza az értékeket (sok esetben nem hatékony)

- Létrehozol egy adatszerkezetet, ami két integer mezőből áll, és abban adod vissza (struct a barátod)

- Nem két int változóba adod vissza, hanem egy int tömbben


Bónusz agymenés:

- Stringben adod vissza, elválasztókarakterrel, és utána a stringet szeded szét két értékre.

2016. nov. 22. 19:29
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:
super :) már megy. Köszönöm!
2016. nov. 22. 19:34
 9/9 anonim ***** válasza:
Totál egyszerű megoldás: csinálsz egy olyan class-t aminek van két olyan paramétere amit szeretnél visszakapni és azt az osztályt adod visszatérési értékként.
2016. nov. 22. 22:44
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!