[C++] Hogy kell egy tömböt feltölteni véletlen számokkal, úgy, hogy ne tartalmazzon 2 ugyanolyan számot?
#1: Nem mondod. Azt kérdeztem, hogy ezt hogy lehet megcsinálni.
#2: Nem hinném, hogy ezt elfogadná a tanár.
#1-esnek igaza van, a gyakorlatban meg inkább a #2-es megoldást használja mindenki. :D (komolyan)
A gyakorlatban alkalmazott programozás nagyon eltér a könyvekben leírtaktól sok esetben, van erről egy vicc is.:
int getRandomOneToTenNumber()
{
return 4;
}
Ha sok szám van, akkor csak megkeresed, hogy volt-e már.
Ha kevés, akkor feltöltesz egy tömböt az adott rangeben (mondjuk 0-89), generálsz egy random indexet, mondjuk 34, a [34]-est kicseréled a [0] elemmel, majd a következőt 1-89 között generálod (tehát amit generálsz, azt kigyűjtöd az elejére)
Erre találták ki a halmaz adatszerkezetet. Az nem azt tárolja, hogy milyen számok vannak benne, hanem azt, hogy az adott számból van-e már belőle.
C++-ban a halmaz az std::set.
#2 vagyok
Nem tudom ki pontozott le, de sok köze nem lehet a programozáshoz.
A kérdéshez: Nem mindegy, hogy 1-1.000.000 -ig kell az összes szám véletlenszerű sorrendben de csak egyszer, vagy 1-100 szám kell ami 1-1.000.000 között van.
"#1: Nem mondod. Azt kérdeztem, hogy ezt hogy lehet megcsinálni. "
Mert mit nem tudsz megcsinálni az első javaslatán? Ne azt várd el, hogy mások megcsinálják helyetted, hanem legalább próbálkozz valamivel. Egyébként ha mások segítségére szorulsz, add meg a tiszteletet nekik.
A feltöltés és összekeverés pedig teljesen jó megoldás. Vagy harmadik megoldásként: fogsz egy halmazt, feltöltöd annyi számmal, amennyi kell. Majd átmásolod a tömbbe az elemeit.
Fog kelleni egy tömbb amibe a vèletlenszerű szàmokat bele rakod.
Fog kelleni egy vàltozó amibe egy vèletlenszerű szàmot bele raksz.
Fog kelleni egy ciklus amit annyiszor futtatsz majd le ahàny elemű a tömbb.
Fog kelleni egy màsodik ciklus az elsőn belül amit annyiszor futtatsz le ahànyszor màr lefutott az első ciklus.
Fog kelleni egy màsodik cikluson belüli feltètelvizsgàlat ami ellenőrzi ,hogy a tömb x indexèn levő elem tartalmazza e a vèletlenszerűen generàlt szàmot. Ha igen akkor generàlsz random újat ès a màsodik ciklus iteràciós vàltozójàt visszaàlítod a kezdő èrtèkère mert újból ellenőrizned fog kellni,hogy az újonnan generàlt random èrtèkedből van e màsik valahol a tömbb eddigi feltöltött elemei közt. Ha pedig nincs,akkor a ciklus vèget èr ès az első cikluson belülre visszaugrik ahol belerakod az új elemet a tömbbe.
Ennyi.
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!