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;
}
Bocs, ezt jobban át kellett volna gondolnom. :)
A kód megtévesztően működik, mert ez a legkisebb elemet nem találná meg, ha nem pont a 0. helyen lenne.
Ugyanis ez a rész sosem fog lefutni:
if (numbers[j] < numbers[minIndex])
Lefordítva: (101 < 0), és a 101 helyére ugye mindig csak nagyobb számok kerülnek, ahogy fordul a ciklus.
Azért "találja meg" véletlenül a legkisebb elemet, mert pont 0-ra van inicializálva a minIndex változó és pont a 0. helyen van a tömbben a legkisebb elem.
A legnagyobb elem megkeresése viszont jó.
---
Ha már elővettem a VS-t, megcsináltam a feladatot, ez egy lehetséges megoldás:
A ciklus igazából mehetne j=2-től is, hiszen előtte már megvizsgáltuk az első két elemet manuálisan.
A printf()-hez betettem még egy "konkrét számok" kiírást is, hogy tényleg látni lehessen jó-e az eredmény, de ezt nem kéri a feladat.
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!