Hogy lehet c nyelvben azt megcsinálni hogy a return valós számmal térjen vissza?
Bocs, én már nem bírom idegekkel, itt egy teljes progi... Megpróbálok betű szerint megfelelni a kívánalmaknak, egyébként nem valószínű, hogy pont így írnám a műveletet:
#include <stdio.h>
float kamat(float x){
float y = (0.1 * x) + x;
printf("A kamat(%f) függvényben vagyok... y = %f\n", x, y);
return y;
}
int main(){
float x;
printf("Kérem x értékét: ");
scanf("%f", &x);
printf("A főprogramban vagyok... kamat(%f) = %f", x, kamat(x));
return 0;
}
#11: Akkor kezdjük az elejéről:
1. A C programozásban a függvények általános formája:
visszatérési_típus függvény_neve(paraméterek) {
függvénytörzs
return visszatérési érték // ha a függvény visszatérési_típusa nem void
}
ha a függvény visszatérési értékében lebegőpontos számot akarsz visszaadni, akkor a függvény visszatérési típusának float-nak vagy (long) double-nak kellene lennie.
De ezt a #2-es hozzászólásomban már leírtam, sőt a megadott linken még példák is láthatóak.
2. Minden C programnak - a szabvány ( [link] [link] ) 5.1.2.2.1 pontja szerint - rendelkeznie kell egy main függvénnyel, aminek a visszatérési értékének egésznek (int) kell lennie. Ha ilyen nincs, a fordító - például Linux alatt a gcc - hibaüzenettel tér vissza:
Ennek a main függvény törzsében kell meghívni a #5-ös hozzászólásodban említett - a #2/#3/#4 hozzászólásban említett módon kijavított - kamat nevű függvényt és a visszaadott értékét felhasználni - valahogy efféleképp:
printf("%f", kamat());
3. De javasolnám, hogy a kamat függvény - az újrahasznosíthatóság és a funkcionalitás jegyében - csak a kamat ( [link] ) számításával foglalkozzon, a felhasználói adatbekérést azt szervezd ki a main függvénybe - például efféleképp:
@13:
Elnézést, hogy a te alaposabb hozzászólásodat keresztezve közbeártottam magam. Kérdezőt esetleg még megzavarhatja, hogy mindketten a main() változóival azonos nevűeket használtunk a függvényben is, mintha ez kötelező lenne. Talán nem árt felhívni a figyelmet arra, hogy a függvény változói teljesen függetlenek, ezért lehetett volna másképpen is elnevezni őket. Itt az előző programocskám, de most a függvény eltérő nevű változóban fogadja az értéket, a meghívása viszont továbbra is kamat(x):
"mindegy hogy kamat vagy main, azon ne múljon"
Jönnek elő a hiányosságok szép sorban. :))
Ez nem fog tudni gyorstalpaló tanfolyam lenni, inkább csak hogy a probléma gyökerét közösen megtaláljuk: Kérdező, a függvényekről tanultatok már? Visszatérési érték, paraméterek, a spec. main függvény feladata, miért nem lehet tetszőleges a main szignatúrája, stb.
„mindegy hogy kamat vagy main”
Bizony, tegnap a lelkiismeretesebb kolléga hozzászólását csak felületesen futottam át, és csak most esett le a tantusz, hogy te az 5. hozzászólásod kódját nem részletként, hanem teljes programként idézted. Engem meglep, hogy sikerült lefordítanod, és csak a visszatérési érték pontosságával akadt gondod. Nem tudom, melyik fordító fogadta el neked main() nélkül, de ne kapjál rá erre a szabványon kívüli lehetőségre. A main() kell bele, és kész.
Ez mind szép és jó, a de return még mindig nullát ad vissza. Hogy érthetőbb legyen motivációm itt a feladat:
Marika néni betette a bankba a pénzét. Tudjuk, hogy a bank 1 év múlva 10%-ot fog kamatként adni. Mivel Marika néni nem túl jó matematikából, így nekünk kell kiszámolni, hogy mennyi pénze lesz 1 év múlva.
Készítsd el a kamat függvényt, amely egy valós számot (float) vár paraméterben, ami megmondja, hogy Marika néni mennyi pénzt tett be a bankba. A függvény adjon vissza egy valós számot: azt, hogy mennyi pénze lett Marika néninek 1 év elteltével!
Szóval én értettem félre és az hogy "A függvény adjon vissza egy valós számot" nem azt jelenti hogy a return az eredmény legyen?
Köszi a válaszokat és bocsi az értetlenkedésért de nem vágom még a témát.
"Ez mind szép és jó, a de return még mindig nullát ad vissza."
Ha az alaptőke 0, akkor természetesen 0-t ad vissza. ;)
De ha nem, akkor a #13-as hozzászólásom végén belinkelt forráskód tökéletesen végzi a dolgát:
A #17-ben leírt feladathoz a #13-as hozzászólásban közölt megoldás csak annyit változik, hogy:
* a kamat függvénynek (3. sor) csak egy bemenő paramétere lesz, az alaptoke; a futamido (1 év) és a kamatlab (10 %) fix érték lesz a 4. sorban:
return alaptoke * (1 + 1 * 10 / 100);
vagy egyszerűsítve:
return alaptoke * 1.1;
* a main függvényben így feleslegessé válik a futamido és kamatlab változók deklarálása (8. sor), bekérése (16-20. sor) és a kiírásnál (22. sor) a kamat függvény meghívásánál, csak az alaptoke-t kell megadni.
Ja és mivel Marika néniről van szó, a program nevének kiírásánál (10-11. sor) és az alaptőke bekérésénél (13-14. sor) szépen, illedelmesen szólítjuk meg a kedves felhasználót. ;)
"Szóval én értettem félre és az hogy "A függvény adjon vissza egy valós számot" nem azt jelenti hogy a return az eredmény legyen?"
Azt jelenti, hogy a függvény visszatérési típusának (ami a függvény neve előtt van), annak valós, lebegőpontos számnak (például float) kell lennie.
És - értelemszerűen - a függvény visszatérési értékénél valós számot kell visszaadni, nem azt, hogy "0":
return 0;
mert az egész, és nem azt, hogy "Marika néni":
return "Marika néni"
mert az karakterlánc.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!