C# PROGRAMOZÁS MIN/MAX?
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());
}
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.
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
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...
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?
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
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!