C++ lineáris keresés. Lefut, de hamis eredményt ír ki. Hol a hiba?
Adott a véletlenszerűen feltöltött 10 elemű tömb. Ebből kellene megkeresnie a páratlan számokat és megadni a helyüket.
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main ()
{
srand (time(NULL));
int szamok[10];
int i;
for (i = 0; i <= 9; i++)
{
szamok[i] = rand()%(100-10+1)+10;
cout << szamok[i] << " ";
}
cout << endl;
while (szamok[i]%2!=0)
{
i++;
}
if(szamok[i]%2!=0)
{
cout<<"A paratlan szam a tomb "<<szamok<<". eleme";
} else {
cout<<"A paratlan szam nincs a tombben.";
}
return 0;
}
Két hiba:
1. while (szamok[i]%2!=0) ez azt jelenti, hogy addig fusson a ciklus, amíg a tömb i. eleme NEM páros. Magyarul akkor fog megállni a ciklus, amikor páros számhoz ér.
2. Hiányzik a ciklusfeltételből az intervallum végének ellenőrzése, az i változó simán túlindexelhet a tömbön.
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main ()
{
srand (time(NULL));
int szamok[10];
bool van = false;
for (int i = 0; i < 10; i++)
{
szamok[i] = rand()%(100-10+1)+10;
cout << szamok[i] << " ";
}
cout << endl;
for (int i = 0; i < 10; i++){
if(szamok[i] % 2 != 0) {
cout<<"A paratlan szam a tomb "<< i + 1 <<". eleme\n" ;
van = true;
}
}
if(!van) cout << "A paratlan szam nincs a tombben.\n";
getchar();
return 0;
}
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!