Kezdőoldal » Számítástechnika » Programozás » C# PROGRAMOZÁS MIN/MAX?

C# PROGRAMOZÁS MIN/MAX?

Figyelt kérdés

int legtobb(Rekord[] v, int n)

{

int max = 0;

for (int i = 1; i < n; i++)

{

if (v[i].NEVE > max)

{

max = i;

}

}

return max;

}


int legkevesebb(Rekord[] v, int n)

{

int min = 0;

for (int i = 1; i < n; i++)

{

if (v[i].NEVE < min)

{

min = i;

}

} return min;

}

ebben hol van a hiba? mert rosszul számolja ki mert mindig 0-át ad.


kiirása:

private void button6_Click(object sender, EventArgs e)

{

MessageBox.Show(legtobb(v, n).ToString());

}


private void button7_Click(object sender, EventArgs e)

{

MessageBox.Show(legkevesebb(v, n).ToString());

}



2012. aug. 18. 18:22
 1/7 anonim ***** válasza:

min = i;


helyett


min = v[i].NEVE;

2012. aug. 18. 21:20
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Ebben több helyen is hiba van, nem áll össze a programod.


1. Miért adod át a tömböt is és n-et is? Mi garantálja, hogy n kisebb lesz vagy egyenlő a tömb méretével? A tömb mérete v.Length, ha n ennél nagyobb, akkor gondban vagy. (Ha nem, akkor a tömb n-edik eleméig keresed a maximumot/minimumot.)

2. Mit adsz vissza üres tömb esetén? (Most 0-t, tehát azt hiheted utána, hogy minden rendben, az első elem volt a legnagyobb/legkisebb.)

3. A v[i].NEVE < min kódrészletben a min-t hasonlítod a Rekord.NEVE-hez. Gondolom inkább a neveket szeretnéd összehasonlítani, nem?


A helyes megoldást találd meg! ;o) Hajrá!


UI. A fenti válaszadónak csak akkor jó a megoldása, ha a Rekord.NEVE int típusú. Abban az esetben is magát a minimumot adja vissza és nem a minimum indexét.

2012. aug. 19. 18:03
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

Köszönöm a válaszokat. :) igen kicsit azt félre irtam a NEVE igazábol szám csak érthetetlenül irtam azt.. :s


de amugy a maximum jó lett hogy i helyett v[i].NEVE-t irtam.


de a minimumnál viszont :

int legkevesebb(Rekord[] v, int n)

{

int min = 0;

for (int i = 1; i < n; i++)

{

if (v[i].NEVE < min)

{

min = i;

}

} return min;

}


mindig 0-át ad. érthetö is hogy miért mert min az 0 és i az 1 és min kisebb mint i.. probálkoztam többféle képp de nem sikerült

2012. aug. 19. 21:52
 4/7 anonim ***** válasza:
probáld úgy a másiknál is :D
2012. aug. 19. 22:24
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

Ha i helyett v[i].NEVE-t írsz, akkor a v[i].NEVE-nek int-nek kell lenni, hogy leforduljon a kódod, másképp nem megy.


Zavart érzek az Erőben...

2012. aug. 20. 11:19
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

honnan tudjuk, hogy a v[i].NEVE nem int?

egyébként már az összehasonlításhoz is az kéne, hogy int legyen, nem?

vagy a szöveg hosszát akarod nézni?

2012. aug. 20. 14:13
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

A min-nél azárt ad mindig nullát, mert arra inicializálod a változódat.

Nem arra kell, hanem az első elemre, tehát int min = v[0].NEVE;

Hasonlóképpen a max-nál is, mert amúgy ha az első elem a legnagyobb, akkor azt nem fogja megtalálni

2012. aug. 21. 08:57
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!