Mit rontottam el? A második legkisebb index értékre 1-nek kellene kijönnie, de mindig 0-dob ki. Hogy tudom megkapni a második legkisebb elemet?
A kódom (C nyelv):
#include <stdio.h>
#include <stdlib.h>
int main()
{
/*
Töltsön fel egy egész típusú 100 db elemet tartalmazó tömböt páratlan számokkal 100-tól növekvõ
értékkel! Keresse meg a legnagyobb értékû elemet a tömbben! Keresse meg a második legkisebb elemet
a tömbben!
*/
int numbers[100];
int maxIndex = 0;
int minIndex = 0;
int minButOneIndex = 0;
int i = 0;
for(i; i < 100; i++)
numbers[i] = (101) + i * 2;
int j = 0;
for(j; j < 100; j++)
{
if(numbers[j] > numbers[maxIndex])
{
maxIndex = j;
}
else if(numbers[j] < numbers[minIndex])
{
minIndex = j;
}
}
int l = 0;
for (l; l > 100; l++)
{
if(numbers[l] < numbers[minButOneIndex] && minButOneIndex > minIndex)
{
minButOneIndex = l;
}
}
printf("%d\n%d\n", maxIndex, minButOneIndex);
return 0;
}
Passz, megmondom őszintén hogy most fáradt vagyok hozzá, de egy erősen ajánlott tanács: használj kódmegosztó oldalt, és azt linkeld ide, mert ez így itt rondább mint egy hányás, és abszolút átláthatatlan, még ez a pár sor is.
- codeshare.io
- pastebin.com
- hastebin.com
37. sor:
if(numbers[l] < numbers[minButOneIndex] && minButOneIndex > minIndex)
Ez a feltétel – annak az első fele – soha nem lesz igaz. a minButOneIndex értékét 0-ra állítottad a 15. sorban. Így a numbers[minButOneIndex] értéke 101 lesz. Mivel nincs olyan szám a tömbben, ami kisebb lenne ennél, így a feltétel soha nem teljesül, így nem is módosul soha a minButOneIndex értéke.
Gondold újra, hogy hogyan is csinálnád ezt manuálisan, kézzel…
Nemtudom. Próbáltam másfelől is megközelíteni: [link]
De itt is ugyan úgy az a baj, hogy soha nem fog lefutni, mert az első elem röngtön a legkisebb is. Milyen feltételt kéne írnom? Hogy oldjam ezt meg?
Az előző kérdés alatt válaszoltam, mi volt a gondod a válasszal?
https://www.gyakorikerdesek.hu/szamitastechnika__programozas..
"Milyen feltételt kéne írnom? Hogy oldjam ezt meg?"
Segítek: Megtaláltad az legkisebbet elemet. Most újra egy legkisebbet elemet keresel, azzal a kikötéssel, hogy az így megtalált elem ne egyezzen meg a már megtalált legkisebb elemmel.
Ha nem ugrana be még mindig, akkor konkrétan egy ilyesmi feltételre gondolok:
(numbers[i] < secondSmallest && numbers[i] != smallest)
numbers[i] < secondSmallest: ez biztosítja, hogy a legkisebb elemet találjuk meg.
numbers[i] != smallest: ez biztosítja, hogy a második legkisebb elemet találjuk meg.
#5 Bocsi, azt hittem azt a kérdést kitöröltem. Nem vettem észre hogy ott is válaszoltak.
#6 Konkrétan ugyan így próbáltam már, ugyanennyi sikerrel. Még mindig nem fog teljesülni, mert, mint ahogy már a #3-as említette, a legkisebb elem rögtön a legelső elem.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!