Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet C-ben egy függvén...

Hogyan lehet C-ben egy függvény segítségével 2 visszatérési értéket kapni? A feladat így szól: Készíts függvényt, ami VISSZAADJA eredményül a kapott 20 valós szám közül a két legnagyobbat!

Figyelt kérdés

#include <stdio.h>

#include <math.h>

int prim(int p) {

int i,szam,max1=0,max2=0;

for (i=0;i<3;i++){

printf("Az %d. szam: \t",i+1);

scanf("%d",&szam);

if(szam>max1)

max1=szam;

}

return max1;

}

int prim2(int p) {

int i,szam,max1=0,max2=0;

for (i=3;i<6;i++){

printf("Az %d. szam: \t",i+1);

scanf("%d",&szam);

if(szam>max2)

max2=szam;

}

return max2;

}

main()

{

int szamok,max1,max2;

max1=prim(szamok);

max2=prim2(szamok);

if(max1>max2){

printf("A legnagyobb szam: %d",max1);

printf("\n");

printf("A 2. legnagyobb szam: %d",max2);}

if(max2>max1){

printf("A legnagyobb szam: %d",max2);

printf("\n");

printf("A 2. legnagyobb szam: %d",max1);}


}



Most csak 6-ig mentem, hogy ne kelljen 20-at beírni. De a probléma az ugyebár, hogy ha a 2 legnagyobb szám jelenesetben az 1. függvényben van akkor már rossz az egész.



2017. jan. 9. 14:50
 1/5 anonim ***** válasza:
100%

1. Nem visszatérési értéket használsz, hanem kimenő paramétert (megadod paraméterben a változót, ahova az eredményt várod, és abba rakod bele az értéket)

2. Létrehozol egy struct-ot, amibe raksz egy minimum és egy maximum elnevezésű adattagot, és egy ilyen structot adsz vissza.

2017. jan. 9. 15:09
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
100%
Még minimálisabb megoldás egy tömbben visszaadni a két értéket.
2017. jan. 9. 16:23
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

Kicsit figyelj oda!

Valós(!) szám. Nem egész szám. Szóval ide az int nem lesz jó, hanem float vagy double kell.


Harmadik megoldásként még szoktak olyat is elkövetni, hogy ha két float értéket kellene visszaadni, akkor azt becsomagolják egy double méretű helyre. Az egyik számot a felső 32 bitjén tárolják, a másikat pedig az alsó 32 bitjén. Hasonlóan egész számok esetében meg lehet csinálni, hogy egy int méretű helyre beraknak két short számot. Erre láthatsz példát a népszerű BASS hangkönyvtárban:

[link]

Ezt bitműveletekkel meg lehet csinálni. Csak nem árt, ha van két makród vagy függvényed, ami ki is tudja szedni a két számot ebből.

2017. jan. 9. 17:42
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
#3 Kivéve, hogy a típusok méretei nem fixek, így egy ilyen megoldás elég izmosan függ a konkrét architektúrától.
2017. jan. 9. 19:37
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:
Az IEEE 754 azért elég fix, de mondjuk egész típusra én se nagyon próbálkoznék vele.
2017. jan. 9. 19:50
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!