Kezdőoldal » Számítástechnika » Programozás » Van egy c++ feladat amit...

Van egy c++ feladat amit részben megoldottam, viszont nem tudom hogy ennek valóban így kéne kinéznie, mert túl bonyolultnak tűnik?

Figyelt kérdés

Mi értelme függvénnyel keresni a maximumot, ha adott esetben egy sima maximum keresés is elég lenne? Az pedig hogy az indexét hogyan lehet így megkapni a legnagyobb számnak lövésem sincs...


Itt a feladat: [link]

és a megoldás: [link]



2020. márc. 20. 16:08
 1/8 tabaki ***** válasza:

Miért nem lehetett ezt szövegesen közzétenni? Na mindegy, majd csak bepötyögöm valahogy...

Első blikkre nem értem, mi szükség van az a, b változókra. Mehetne a függvénybe közvetlenül a két tömbelem.

2020. márc. 20. 16:31
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

Itt van szövegesen is:



#include <iostream>

using namespace std;


double nagyobb(double a, double b);


int main()

{

//bekeres

cout << "Adj meg szamokat:\n";

double tomb[8];

for (int i = 0; i < 8; i++) {

cin >> tomb[i];

}

//max kereses

double max = tomb[0];


for (int i = 0; i < 7; i++) {

double a = tomb[i];

double b = tomb[i + 1];

if (nagyobb(a, b) > max) {

max = nagyobb(a, b);

}

}

cout << max << " a tomb legnagyobb eleme!";


}


double nagyobb(double a, double b) {

if (a >= b) {

return a;

}

else return b;

}

2020. márc. 20. 16:43
 3/8 tabaki ***** válasza:
100%
Szerintem nagyobbnak nem tomb[i], tomb[i+1]-et kéne átadnod, hanem maxot és tömb[i]-t, i<8 feltétellel.
2020. márc. 20. 16:54
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
51%

"Mi értelme függvénnyel keresni a maximumot"


Nem sok, de ez egy gyakorló feladat, aminek magában nem kell értelme legyen.


Én ezt írnám a ciklus belsejébe a mostani 5 sor helyett:


max = nagyobb(max,tomb[i])


Így a végén a max a legnagyobb érték lesz.

2020. márc. 20. 17:13
Hasznos számodra ez a válasz?
 5/8 tabaki ***** válasza:
100%

#4: Az én változatomban is az van, csak nem akartam lelőni a poént :)

Végre egy kérdező, aki gondolkodna is, te meg nem hagyod...

2020. márc. 20. 17:17
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
100%

Esetleg még annyi, hogy ha

double max = tomb[0];

akkor a 0-dik elemmel már nem kell hasonlítani, mehet az összehasonlítás a második [1] elemtől.

A nagyobb függvény a nevéből fakadóan talán jobb lenne, ha tényleg csak nagyobb esetben adná vissza az első paramétert.

A nagyobb függvényt kicsit feleslegesnek érzem kétszer meghívni. A ciklusban az if után elég annyi, hogy "max=a;", ha egyszer az a nagyobb.


"az indexét hogyan lehet így megkapni a legnagyobb számnak"

Egyszerű, a "max=" kezdetű sornál annak az indexét is tárolod, pl. egy maxidx nevű 'int' változóban.

max=a; maxidx=i;


Az a és b változók valóban kicsit feleslegesek, a "tomb[..]" forma nyugodtan használható.


Egy trükk a későbbiekre:

double nagyobb(double a, double b) {return a>b?a:b;}

De ez is elég lenne:

bool nagyobb(double a, double b) {return a>b;}

És akkor:

if (nagyobb(tomb[i],max)) { max = tomb[i]; maxidx = i; }

2020. márc. 20. 18:11
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:

De azt is megteheted, hogy csak a max indexét tárolod.

if (nagyobb(tomb[i], tomb[maxidx])) { maxidx = i; }

A végén pedig kiiratod a tomb[maxidx] és maxidx értékeit.


Remélem ezzel nem nem rontom az önálló gondolkodást, mert én sem szeretek fullos kész megoldásokat adni, inkább csak trükköket, tippeket. :)

2020. márc. 20. 18:17
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
köszi a segítséget mindenkinek :)
2020. márc. 20. 18:54

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!