C++: minimum keresés. Mi a hiba az alábbi kódban?
10 szám véletlenszerűen feltöltve, összeadva (ez is helytelen, így az átlag is). Aztán meg kéne keresnie az tömbben levő legkisebb számot.
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main ()
{
srand (time(0));
int szamok[10];
for (int i=0; i<9; i++)
{
cout << rand()%(100-50+1)+50<< " ";
}
int osszeg = 0;
for(int i=0; i<=9; i++)
{
osszeg = osszeg +szamok[i];
}
cout << "Az osszege: " << osszeg << endl;
double atlag = (double)osszeg / 10;
cout << "Az atlag: " << atlag << endl;
int min = szamok[0];
for(int i=1; i<=9; i++)
{
if(szamok[i] < min)
min = szamok[i];
}
cout << "A legkisebb: " << min << endl;
return 0;
}
Átírtam,így már jó az összeadás és az átlag, viszont a legkisebb még nem.Mi itt a hiba ?
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main ()
{
srand (time(0));
int szamok[10];
for (int i=0; i<9; i++)
{
szamok[i]=rand()%(100-10+1)+10;
cout <<szamok[i]<<endl;
}
int osszeg = 0;
for(int i=0; i<=9; i++)
{
osszeg = osszeg +szamok[i];
}
cout << "Az osszege: " << osszeg << endl;
double atlag = (double)osszeg / 10;
cout << "Az atlag: " << atlag << endl;
int min = szamok[0];
for(int i=1; i<=9; i++)
{
if(szamok[i] < min)
min = szamok[i];
}
cout << "A legkisebb: " << min << endl;
return 0;
}
A tömböt a 8. indexig töltöd fel, de mindenhol a 9-ig számolsz vele.
100-10+1 pedig szerintem 91.
-1. Máskor tessék kódfeltöltő oldalt használni, és indentálni a kódot, mert így olvashatatlan.
0. A #include és az adott könyvtár neve közé tegyél szóközt.
1. time(0) helyett time(NULL) - a time paraméterként pointert vár.
2. A szamok tömböt létrehozod, de nem rakod bele a véletlen számokat, csak kiírod.
3. 100-50+1 helyett 51
4. Az i változót elég egyszer deklarálni.
Szóval kb. így: [link]
5. Ja, meg igen, az első ciklusban csak 9 elemet számolsz.
Szóval helyesbítve így: [link]
Akkor, ha zárt intervallumról van szó:
A + rand() % (B - A + 1)
4. Az i változót elég egyszer deklarálni.
Kivéve, hogy ciklusváltozó, így a scope-ja a ciklus élettartamára terjed ki. Az pedig nem szokás, hogy előre deklarálsz egy változót, és azt használod mindenhova ciklusváltozónak. Remélem nem kell részleteznem, miért.
#8: jelen esetben nem létszükséglet.
"Az pedig nem szokás, hogy előre deklarálsz egy változót, és azt használod mindenhova ciklusváltozónak. "
C99 előtt nem volt más mód.
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!