Mit kell használnom, hogy ez megvalósulhasson? C++
A magyar nyelv összes szavát bele kéne tenni valamibe,mit szoktak használni erre?
Listát,tömböt?
Mi erre a legjobb módszer?
Aztán én bekérek a billentyűzetről egy karkatert(i) vagy egy hosszabb szónak egy részét(iszi) és akkor pl:
std::cin >> i;
És akkor ki íratódik az összes i betűvel kezdődő szó.
Majd ezt másképp megoldani újra.
cin >> i betűvel kezdődő és cin >> p betűvel végződő szók legyenek ki íratva az összes.
Nagyjából magyarázzátok el ennek a megvalósítási folyamatát köszike :)
Mit értesz fájl és adatbázis alatt?
Egy egyszerű txt fájlra gondolsz?
És az adatbázis lécszíves ki fejtenéd bővebben köszike.
Tudod még kezdő vagyok és a 24 órás könyvben csak a mutatóknál tartok :D
Jó lenne, ha kicsit jobban meg tudnád fogalmazni a kérdést.
Az "összes" magyar szó kicsit sok. Arra már külön adatbázist érdemes használni, egy sima tömb kevés. (Egyszerűen nem lenne elég hely a memóriában és bevinni sem lenne egyszerű...)
Amúgy meg ha nincs db, akkor egy sima szöveges file megteszi. Mondjuk. (Semmiképpen sem a programban tárolva kell velük dolgozni!)
Ebben az esetben pedig végig tudsz menni soronként a fileon és megnézni, hogy mivel kezdődik, ha egyezik akkor kiíratod.
Kb így lehetne megoldani.
Pár soros kód, HA megvannak a szavak külön fileban.
Akkor sima text fájlban. Egyébként az "alap" szabak kényelmesen elférnek a memóriában. Azt hiszem Arany Jánosnak volt a szókincs 30 ezer körüli. Tekintve, hogy a szavak átlagosan 7 betűből állnak ez 7*30k = 210k Még ha létezne is mindegyiknek 1000 formája (toldalékok, ragok stb.) akkor is kb. 300-400 megáról lenne szó. De egy kezdő esetében azt hiszem ez is megteszi:
Mindenképpen fájlban fogod tárolni az adatbázist, de beolvasás után elfér a memóriában is. Párszázezer szó az nem olyan sok, 1-2 MByte, overheaddel együtt max 10, de akkor az már durva becslés volt.
A kérdés, hogy mit akarsz elérni?
Ha csak annyi, hogy kezdőbetű alapján tudj keresni, akkor érdemes egy vectorba beletúrni az összeset rendezve, és utána binary search algoritmussal (szintén benne van a standard könyvtárban) megkeresed az i-betűs szavak. Erre pl javaslom az equal_range függvény és egy olyan összehasonlító művelet létrehozását, ami a kezdőbetűt veszi csak figyelembe. Ekkor megkapod a tartomány elejét és a végét is.
Ha az utolsó betű is kell, akkor lehet érdemes kétféle rendezésben tartani őket, egyik normál rendezés, másikban az utolsó betű szerint rendezed, hasonlóan mint fent kikeresed a megfelelő részeket, és veszed a két halmaz metszetét lekérésnél.
Ha ennél bonyolultabb kell, akkor ahhoz megfelelő adatszerkezet kell. Érdemes például megnézni a TRIE adatszerkezetet.
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!