Kezdőoldal » Számítástechnika » Programozás » [C] érték visszaadása függvény...

[C] érték visszaadása függvényben?

Figyelt kérdés

C függvény, melynek 3 bemenő paramétere 3 valós szám. A függvény egy negyedik paraméterében adja vissza a bemenő paraméterek átlagát! A függvény visszatérési értéke pedig legyen az x^3+2y^2+3z képlet eredménye, (ahol x, y és z jelenti a három paramétert).

Ez van meg eddig:


double eredmeny(x, y, z, ?) {

return pow(x,3)+pow(2*y,2)+3*z;

}


A ? helyére kellene a negyedik paraméter, de hogy adok vissza értéket egy paraméterben? Órán nem volt szó ilyesmiről, meg akárhogy keresek a neten nem találok ilyen példát.



2016. márc. 30. 12:38
 1/10 anonim ***** válasza:
100%

próbáld ki:

void valami(int* i) {

if (i != NULL) *i=5;

}


A main-ben:

int i;

valami(&i);

printf("%d", i);

2016. márc. 30. 12:43
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
27%

Kérdező:

Ezt így nem szokás.

2016. márc. 30. 12:52
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
100%
A függvények alapvetően lemáslják a kapott változó értékét, és a másolattal dolgoznak, ezért az eredeti változód értéke ugyanaz marad. Ilyenkor jönnek képbe a pointerek. A pointer lényegében egy hivatkozás egy adott memóriacímre, ha van egy int* típusú pointered, az maga nem tárol semmilyen integert, viszont eltárolja a memóriacímét egy int típusú objektumnak. Ha egy int változóra mutató pointert (int*) adsz át a függvénynek, akkor a pointer maga lemásolódik, de a másolat ugyanarra a memóriacímre fog mutatni, és így a pointeren keresztül meg tudod változtatni a külső változód értékét a függvényen belülről. Az első válaszoló példája lényegében ezt mutatja meg.
2016. márc. 30. 12:59
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
100%
#2 a Kérdező ezt a feladatot kapta, ezt kell megcsinálnia. Nem tudom, hogy jön ide az, hogy szokás-e, vagy sem. (Mellesleg meg vétóznám, hogy mennyire "nem szokás" ilyet csinálni)
2016. márc. 30. 13:02
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:

Így jó lett, köszönöm szépen :D


double eredmeny(int x, int y, int z, double* atlag) {

if(atlag != NULL) {

*atlag = (x+y+z)/3;

}


return pow(x,3)+pow(2*y,2)+3*z;

}


main() {

double atlag;

double keplet = eredmeny(1, 1, 1, &atlag); //8

printf("%f", keplet);

}

2016. márc. 30. 13:23
 6/10 anonim ***** válasza:
Érdemes az átlagot is kiíratni, hogy ellenőrizhesd, jól számol-e.
2016. márc. 30. 16:33
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

" Nem tudom, hogy jön ide az, hogy szokás-e, vagy sem."


Úgy, hogy léteznek kódolási konvenciók, amelyeken ez a 'feladat' túlmutat. Vagy én értettem félre a kérdezőt, de az biztos, hogy a függyvényeknek lehet paraméterük és visszatérési értékük. A paraméterek a függvény bemenő adatai, amelyek feldolgozásával állítja elő a visszatérési értéket.

2016. márc. 30. 21:41
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

A kodolasi konvenciok peldaul a globalis valtozok keruleset is szoktak ajanlani. Tobbkimenetu fuggveny eseten duplikalod a kodod, vagy strukturaban adod vissza? Valamikor egyszerubb ha ilyen ordogi eszkozokhoz nyulsz.


Vagy egy csere-fuggveny hogyan nezne ki szerinted pointerek nelkul?

2016. márc. 30. 21:47
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

Sot, meg trivialisabb pelda: scanf("%f %f %f", &a, &b, &c);


Nezegesd nyugodtan a visszateresi erteket.

2016. márc. 30. 21:58
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
C nyelvről van szó, abban pedig ez igen megszokott dolog. C++ -ban meg egyszerűen visszadobsz egy pair/tuple-t.
2016. márc. 30. 22:54
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!