Kezdőoldal » Számítástechnika » Programozás » C-ben (vagy pszeudokóddal...

C-ben (vagy pszeudokóddal leírva) hogyan lehet egy string karaktereit megkeverni?

Figyelt kérdés

A házink egy szókitalálós játék. Első lépés hogy egy karaktertömböt inicializáljunk és válasszunk ki ebből egy véletlenszerű stringet. Ezt meg is tudtam oldani, stringtömbbel is, meg pointer tömbbel is.


Ahol elakadtam hogy ezen tömb karaktereit véletlenszerűen kellene összekeverni. srand(time(0));-val tudok random értéket generálni. Nekem az volt az elképzelésem hogy fogom a forrás stringet(ami ugye már ez a random kiválasztott szó) és ebből random pozíciókat sorsolva elkezdem átmásolni az összekevert szót tartalmazó stringbe karakterenként, szépen sorban(0. indexre sorsolok valamit random aztán 1. indexre …). Ugye ezzel az a gond hogy így 1 karaktert többször is kisorsolhatok(pl "alma" lehet hogy "aaaa" lesz. Gondoltam hogy elkezdem vizsgálni a karaktereket hogy voltak-e már sorsolva, de az meg azért nem jó mert ha van egy olyan szó amiben egy karakter kétszer szerepel. Pl "alma" akkor az a-betű egyszer lesz kisorsolva(és lesz pl "lma"). Most akkor más feltétel kellene vagy teljesen rossz a gondolatmenetem?


Példák, ha valaki nem értené: "alma" szóra generálja mondjuk azt hogy "lmaa" vagy azt hogy "laam" …

Esetleg még egy olyan feltétel se lenne rossz hogy az összekevert szó, ne egyezzen meg az eredetivel azaz "alma" szóra nehogy véletlenül "alma"-t dobjon ki.



2019. okt. 24. 20:35
 1/3 anonim ***** válasza:
100%
Jó az elképzelésed, csak annyit kell módosítani, hogy amikor kisorsolsz egy indexet, akkor azt nézd meg, hogy az adott index ki volt e már sorsolva (es ne azt, hogy az adott indexen lévő karakter ki lett e már sorsolva).
2019. okt. 24. 20:42
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
58%
Shunting-Yard algoritmussal.
2019. okt. 25. 08:13
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
100%

A #2-es algoritmusa nem tudom hogy jön ide..


Inkább a Fisher–Yates shuffle algoritmust használd, ami igazából csak annyit csinál, hogy végig megy az elemeken es egy véletlen szerű még nem érintett elemmel felcseréli. Baromi egyszerű, nincs szükség annak a vizsgálatára, hogy már kiválasztottuk-e az adott elemet. [link]


Persze a végén megnézheted, hogy ugyanaz-e az eredmény, mint eredetileg, és ha igen, akkor addig ismétled amíg más nem lesz.

2019. okt. 25. 08:43
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!