Kezdőoldal » Számítástechnika » Programozás » Nem tudom hogyan kellene...

Nem tudom hogyan kellene megoldanom ezt a feladatot, tudnátok segíteni?

Figyelt kérdés

Olvassunk be három valós számot és keressük meg a legnagyobbat!

Készítsünk egy függvényt, amely két paraméterként átadott szám közül a

nagyobbik értéket adja vissza és ezzel oldjuk meg a feladatot.


double a, b, c, max;


Így kezdtem el a feladatot:


public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("kerek eg szamort");

double a = sc.nextDouble();

System.out.println("a beolvasott szam" + a);

}


Ez beolvas egy számot. De igazából ahogy a feladatban is látszik 3-mat kell, szóval háromszor írjam le ugyanezt a kódot, csak más változónévvel? És ezt a main fgv-be kell írni vagy pedig amelyiket nekem kell készíteni?


"Készítsünk egy függvényt, amely két paraméterként átadott szám közül a

nagyobbik értéket adja vissza és ezzel oldjuk meg a feladatot. "

public static double fgv (double a,double b,double c,double max){

Ezt így oldanám meg, de itt szintén elakadtam, mert nem tudom, h hogyan keressem meg a legnagyobbat. Talán ha két számról lenne szó, még összejönne, de így háromnál már esélytelen.


Ha valaki esetleg leírná a megoldást, vagy rávezetne, nagyon hálás lennék érte.



2015. nov. 14. 21:48
 1/9 Tengor ***** válasza:
100%
A függvényednek két paraméter közül kell eldönteni, hogy melyik a nagyobb. Nyilván ha meghívod az első és második számra, majd az eredményre és a 3. számra, akkor megfogod kapni a legnagyobbat a 3 közül.
2015. nov. 14. 21:50
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:

Tudom, hogy ma a gondolkodás nem menő, szóval megsegítelek egy kész megoldással.


private static double Max(double A, double B) {

return (A>B) ? A : B;

}


public static void main(String[] args) {

//Lehet, hogy azt a szerencsétlen Scanner-t be kéne zárni, ha már nem kell. Ez bezárja, ha már nem kell.

try (Scanner sc = new Scanner(System.in)) {

double A = sc.nextDouble();

double B = sc.nextDouble();

double C = sc.nextDouble();


double Max = Max(Max(A, B), C);

}

}

2015. nov. 14. 21:53
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
100%

De basszus, elolvastad te egyáltalán, mit kell csinálni?

"Készítsünk egy függvényt, amely két paraméterként átadott szám közül a nagyobbik értéket adja vissza és ezzel oldjuk meg a feladatot."


Ezzel szemben te mit csinálsz?

public static double fgv (double a,double b,double c,double max){

Meg tudod számolni, hogy ez hány paraméter? Segítek, 4.


Szerintem kezdjük azzal, hogy mi is az a függvény illetve eljárás. Nézzük meg a napirendedet:

felkelsz

megmosakszol

előveszel egy kiflit

félbevágod

megmikrózod a virslit

a kiflibe beleteszed a virslit

nyomsz rá ketchupot

megeszed

csinálod a többi napi teendőt

előveszel egy kiflit

félbevágod

megmikrózod a virslit

a kiflibe beleteszed a virslit

nyomsz rá mustárt

megeszed

megmosakszol

alszol


Ami így szembetűnik az az, hogy van egy bizonyos részlet, ami ismétlődik, persze el is térhet néhány apróbb részletében. Ezzel így az a gond, hogy kétszer kellett leírnom ugyanazt, kétszer olyan hosszú a kód, és ha egy harmadik helyen is használni szeretném, akkor megint vagy át kell másolnom, vagy meg kell írnom megint ugyanazt. Ez persze rosszabb minőségű kódot eredményez. Gondolj bele, ha valamit változtatni akarsz, azt már rögtön két helyen is át kell írnod. Ilyen esetekben használunk függvényeket illetve eljárásokat.


A függvény és eljárás közt egy hatalmas nagy különbség van. Az eljárás egy cselekvéssorozatot ír le, amelynek során új állapot keletkezhet. A fenti példában is ez történik. Van egy cselekvéssorozat, amely egy összetettebb, bonyolultabb cselekvést ír le, pl. hogyan csinálsz hot-dogot. Ha te ezt végrehajtod, létrejön egy olyan állapot, amelyben már van egy kész hot-dogod, és ha azt megeszed, már nem leszel éhes. De az is egy új állapot, amikor kiírsz valamit a weblapra pl. print-tel vagy echo-val. Az pedig azt az állapotot idézi elő, hogy a szöveg már ki van írva a weblapra.


A függvény pedig az eljárással ellentétben egy számítási módot ír le, amelynek során mindig egy eredmény jön létre (nem több, csak egy). Nos, erre az eredményre ne csak úgy gondolj, hogy az csak egy szám lehet. Lehet bármilyen típusú eredmény, pl. ha adatbázishoz kapcsolódsz, akkor resource típusú eredmény, vagy két szöveg összefűzése esetén egy string típusú eredmény jön létre. A kód futása során ha eredmény áll elő, azt a return vezérlésátadó utasítással jelezheted, és ezután kell megadnod egy kifejezést, hogy mi az eredmény, ami előállt.


Írtam egy olyat az előbb, hogy "van egy bizonyos részlet, ami ismétlődik, persze el is térhet néhány apróbb részletében". Ezek az apróbb eltérések lesznek a függvény vagy eljárás paraméterei.


hot_dog_evés(mit_nyomok_rá) {

előveszel egy kiflit

félbevágod

megmikrózod a virslit

a kiflibe beleteszed a virslit

nyomsz rá mit_nyomok_rá

megeszed

}


felkelsz

megmosakszol

hot_dog_evés(ketchup)

csinálod a többi napi teendőt

hot_dog_evés(mustár)

megmosakszol

alszol


Amikor meghívod a függvényt vagy eljárást, ott abban a pillanatban a paramétereknek értéket is kell adni. Nagyon konyhanyelven egyfajta "behelyettesítés" történik. Persze azért a világ nem ilyen egyszerű, mert a paraméterátadásnak többféle módja is van:

- érték szerinti

- cím szerinti

- eredmény szerinti

- érték-eredmény szerinti

stb. Mindegyiknek más a célja, és nyelvtől függ, melyiket támogatják.

[link]

74. oldaltól olvasgasd.


Na és most nézzük PHP esetében, hogy működik ez:

function OsszefuzveKiir($SzovegA, $SzovegB) {

echo $SzovegA . $SzovegB;

}

OsszefuzveKiir("Ez egy ", "teszt szöveg.");


Ez ugye egy eljárás volt és annak a meghívása. Azért volt eljárás, mert csupán egy cselekvéssorozatot ír le, hogy hogyan is lehet két szöveget összefűzve kiírni a képernyőre. Meghívása során pedig egy új állapot jött létre, amelyben már ki van írva a képernyőre az összefűzött szöveg.


function Osszead($A, $B) {

$Eredmeny = $A + $B;

return $Eredmeny;

}

$Osszeg = Osszead(3, 4);


Ez pedig egy függvény volt, mivel egy számítási módot ír le, hogy hogyan is lehet két számot összeadni. Ennek végrehajtása során egy eredmény jött létre, ezt jeleztük a return kulcsszóval. Látható, hogy a hívás helyén valójában egy értékadó utasítás áll. Ez azért van, mert az eredményeket gyakran tárolni szoktuk, mivel más számításokhoz, vagy más eljárások paramétereként szoktuk felhasználni.


Na és most figyelj:

function OsszefuzveKiir($SzovegA, $SzovegB) {

echo $SzovegA . $SzovegB;

return;

echo 'Ezt már nem fogod látni';

}


Eljárások esetében is használhatsz return-t, de annak más célja van. A return utasítás meghívása mind eljárás, mind függvény esetében megszakítja a függvény/eljárás futását. Mivel egy eljárás nem képezhet eredményt, így utána kifejezésnek is tilos állnia. Ezt általában arra használjuk, hogy megszakítsuk az eljárás futását, pl. egy bizonyos feltétel bekövetkezése esetén.

2015. nov. 14. 22:03
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:

Szerintem ezt is elfogadják feladat megoldásként:


System.out.println("Írd be a számokat szóközzel elválasztva: ");

try(Scanner scanner = new Scanner(System.in))

{

OptionalDouble max = Arrays.stream(scanner.nextLine().split(" ")).mapToDouble(Double::parseDouble).max();

System.out.println("A legnagyobb szám: " + max.getAsDouble());

}

2015. nov. 14. 22:58
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
Én mondjuk sosem mikróznám meg a virslit, mert nem túl egészséges, illetve mindig raknék rá ketchupot is meg mustárt is.
2015. nov. 15. 07:03
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:
Miért nyersen enni egészségesebb? Nekem tetszik a hotdogos példa.
2015. nov. 15. 13:39
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:
#6 Nem nyersen, főzném. :)
2015. nov. 15. 13:58
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:
#7 hát jó :) ha nagyon kötekedni akarnék akkor azt hoznám fel hogy a virsli és a hotdog sem annyira egészséges, akkor már mit számít ha mikróban készült:D de a példa szempontjából egyik sem lényeges.
2015. nov. 15. 14:30
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:
#8 Mi bajod a virslivel meg a hot-doggal? :)
2015. nov. 15. 14:33
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!