Kezdőoldal » Számítástechnika » Programozás » Hogy lehet c nyelvben azt...

Hogy lehet c nyelvben azt megcsinálni hogy a return valós számmal térjen vissza?

Figyelt kérdés
Csinálnom kell egy programot ami kér egy float-ot, legyen x, aztán elvégzi ezt a műveletet: y = (0.1*x)+x, majd kiírja y-t és a visszatérési érték is ez. Azonban ha pl ötöt adok meg a printf kiír 5,5-öt az oké, de return bármit csinálok csak ötöt ad vissza.
2020. szept. 30. 09:33
1 2
 11/19 A kérdező kommentje:
nem értem, el tudnád írni légyszi? amúgy mindegy hogy kamat vagy main, azon ne múljon.
2020. szept. 30. 19:34
 12/19 tabaki ***** válasza:

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;

}

2020. szept. 30. 22:05
Hasznos számodra ez a válasz?
 13/19 anonim ***** válasza:

#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:

[link]


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:

[link]

2020. szept. 30. 22:12
Hasznos számodra ez a válasz?
 14/19 tabaki ***** válasza:

@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):

[link]

2020. szept. 30. 22:53
Hasznos számodra ez a válasz?
 15/19 anonim ***** válasza:

"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.

2020. okt. 1. 01:02
Hasznos számodra ez a válasz?
 16/19 tabaki ***** válasza:

„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.

2020. okt. 1. 08:42
Hasznos számodra ez a válasz?
 17/19 A kérdező kommentje:

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.

2020. okt. 1. 10:09
 18/19 anonim ***** válasza:

"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:

[link]


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.

2020. okt. 1. 11:04
Hasznos számodra ez a válasz?
 19/19 tabaki ***** válasza:
Ugye nem arra célzol, hogy le sem futtattad a kapott programokat, el sem olvastad a kommenteket? A függvény a maga returnjében igenis valós számot ad vissza, mégpedig éppen az áhított eredményt. Megsúgom, hogy egy programban pont annyi return lehet, amennyit beleírsz. Ezek egyike a main() kötelezően int típusúja, amelyben a program lefutásával kapcsolatos általános infókat (például a szerencsés befejezést jelző nullát vagy hibakódokat) küldhetsz vissza a rendszernek, az összes többi a teáltalad kreált függvények típusán múlik: Kábé végtelen az egyhez a javadra – szerintem nem rossz arány. Miért éppen azt az egyet akarod mindenáron megerőszakolni, amelyik alkalmatlan arra, amit akarsz tőle, meg nem is arra való?
2020. okt. 1. 18:09
Hasznos számodra ez a válasz?
1 2

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!