Kezdőoldal » Számítástechnika » Programozás » Pascal: index fájl alapján...

Pascal: index fájl alapján történő rendezés hogyan valósítható meg? (bővebben lent)

Figyelt kérdés

Adott egy egyszerű adatbázis, egy rekord, "név" és "telefonszám" adatokkal. Bevitel során azt szeretném megvalósítani, hogy a fő fájlban az adatok rendezetlenül, a bevitel sorrendjében legyenek, de szeretnék egy név és egy telefonszám szerinti index fájlos rendezést végezni (minden bevitel esetén), így alapból mindkét index fájl rendezetten tartalmazná a mindenkori aktuális állapotot.

Úgy tudom, hogy rendezett adatokon való munka során az egyik leghatékonyabb a beszúrásos rendezés. Eredetileg vektorra volt írva, sajnos, nem tudtam fájlra átírni. Szeretném fájlra átírni és olyan módon, hogy ne az eredeti fájlba rendezzen, hanem index fájlba. Tudna valaki segíteni ennek megvalósításában?

Egyébként létezik rendezett adatok esetén a beszúrásos rendezésnél jobb rendezési algoritmus, amely sok adat esetén még kevesebb idő alatt megy végig a (rendezett) adatokon?

Próbálkozásom itt található:

[link]



2020. márc. 22. 13:15
 1/5 A kérdező kommentje:

A sima, egyszerű (és legkevésbé hatékony) rendezés segítségével próbáltam megvalósítani a dolgot, sajnos ez se sikerült, illetve csak részben :-(

[link]

2020. márc. 22. 18:57
 2/5 tabaki ***** válasza:
Őszintén szólva én már a sima-egyszerű-klasszikus (buborék?) rendezésednél sem tudom követni, mit csinálsz, úgyhogy csak a sejtéseimet osztom meg veled, nálam okosabbak mondjanak okosabbat. Az a gyanúm, hogy ezek a rendezések pont attól működnek, hogy menet közben ténylegesen mozog a tömb tartalma. Ha a tömbelemek a helyükön maradnak, bár puszta megérzésből, de kizártnak tartom, hogy ennyire egyszerű indexeléssel lekövethetők lennének a teendők. Nem, mintha eddig meg tudtam volna írni, de biztos vagyok benne, hogy nem az adatfájlon, hanem az indexfájlon kéne végigmenned, az adatfájlt csak arra használva, hogy az éppen soron következő indexek által meghatározott értékeit összehasonlítva változtass az indexek sorrendjén. Valószínűleg könnyebben megtalálod a módszert, ha először csak két vektorral modellezd a dolgot, és ha megvan, akkor már könnyebben teszed át fájlokra. Egyébként, azon túl, hogy fejtörőnek nem rossz, a gyakorlatban nem látom túl sok hozadékát.
2020. márc. 23. 00:44
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

Természetesen nem kell a helyükön maradniuk, én bénáztam az indexfájlos megvalósítással. :-)

Első példámban a beszúrásos rendezést említettem, másodikban pedig a klasszikust, azaz "simple sort" néven ismert általában.

2020. márc. 23. 14:19
 4/5 tabaki ***** válasza:

„Természetesen nem kell a helyükön maradniuk”


Mindettől függetlenül én megpróbálkoztam azzal, hogy legalább a legegyszerűbb esetben, két statikus tömbbel modellezzem az indexelős megoldást, reményem szerint sikeresen. A kísérletem eredménye itt található:

[link]

Mint láthatod, a kézi bevitel meghívását a bemutató egyszerűsítése érdekében kikommenteztem, helyette stringtömbökből olvassa be a neveket és a számokat – ha van türelmed, átrakhatod a kommentjelet, és kipróbálhatod manuálisan is. Észreveheted azt is, hogy ékezetes (itt UTF-8 kódolású) nevek esetén nem működik az összehasonlítás; Ez nyilván nem lep meg, a feladattól független probléma, amellyel itt nem fájdítottam a fejem. Van még egy Auto2 nevű procedúra is a programban, ez maga generál „neveket” és számokat az ASCII-készleten belül maradva. Itt láthatók az egyik próbafuttatásakor nyert nevek rendezetlen és rendezett listájának megfeleltetései:

[link]

2020. márc. 23. 17:04
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

Köszi hogy foglalkoztál a dologgal. :-)

Igen, nekem is ilyet kellett volna tenni az indexfájl esetén mint amit a vektorokkal bemutatsz. :-)

Segítséggel azóta sikerült a dolog :-)

Köszi hogy még adatokat is gyártottál hozzá. :-)

Igen, már a feladat közzététele előtt tudtam, hogy bizony az ékezetekkel nem fog stimmelni a rendezés.

2020. márc. 23. 19:23

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!