C++ problémámon tudna vki segíteni?
Sziasztok.
A probléma lényege az, hogy a programom nem működik. Azt szeretném ha az idő alapját kisorsolna 5 random számot 1 és 90 között (ez megvan) de úgy hogy ne legyen benne ismétlődés (pl. ne legyen az hogy a kisorsolt számok 8,9,30,30,74 mert ott ismétlődik a 30)
Meg is írtam a programot, csak hát ha lefuttatom az összes szám 0... Itt a program. Hátha találtok benne hibát.(nem tudok valamiért endl-t használni, ne lepődjetek meg ha ez van helyette : "\n")
#include <iostream>
#include <cstdlib>
#include <ctime>
int main ()
{
int a[5];
srand(time(0));
for (int f = 0; f<5; f++)
{
int x = 1 + (rand()%90);
x = a[f];
if (f >= 1)
{
if (a[f] == a[f - 1])
{
x = 1 + (rand()%90);
x = a[f];
std::cout << a[f] << "\n";
}
else
{
std::cout << a[f] << "\n";
}
}
else
{
std::cout << a[f] << "\n";
}
}
return 0;
}
1.
x = 1 + (rand()%90);
x = a[f];
Ezt a 2 sort nezt at megint:)
2. Mindig csak az elozovel hasonlitod ossze, tehat pl. a 30, 1, 2, 3, 30 sorozat atmenne.
3. Kodmegosztasra inkabb a pastebin.com-ot vagy hasonlot hasznalj, mert tagolas nelkul borzalmas olvasni.
int x = 1 + (rand()%90);
x = a[f];
x, a, f, ennél semmit mondóbb változóneveket nem is választhattál volna.
Első lecke: beszédes változónevek.
Ne szenvedj tömbbel, csak akkor, ha kötelező (pl. tanár ezt kéri). Használj egy std::set-et, és akkor az ismétlődés problémáját is alapból lelőtted.
És akkor írhatsz valami ilyent:
#include <set>
...
set<int> Numbers;
...
while (Numbers.size() < 5)
{
int NewNumber = 1 + (rand() % 90);
Numbers.insert(NewNumber);
}
Persze a potenciálisan végtelen ciklus miatt talán mégse használj randomszám generáláshoz set-et :)
5 szám kiválasztásánál még nem gáz, de ha ez megmarad a fejedben, és utána majd sokkal komolyabb volumennél is ezt a metodikát fogod használni, ott lesznek bajok :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!