Free Pascal-ban hogyan deklaraljuka vermeket, esetleg egy pelda program hogy hogyan haszaljuk a vermeket?
A kérdés ott sántít kissé, hogy lehet statikusan és dinamikusan is megoldani, a két implementáció pedig jelentősen különbözik egymástól, ráadásul ezen két tulajdonság mellett is még számos döntés befolyásolja a végeredményt.
A legegyszerűbb megoldás, amely nemcsak hogy statikus, de egyben egetverő merénylet is:
- Deklarálj egy tömböt, ez lesz a verem
- Deklarálj egy a verem tetejét (index - veremmutató) jelző változót
- Ha a verembe beraksz adatot, az index által megadott helyre teszed, majd növeled az indexet
- Kivételkor először csökkented az indexet, majd kiolvasod az általa mutatott értéket
- Ha a veremmutató nulla, a verem üres, ha tömbmérettel megegyező, akkor a verem tele van
- Üres veremből nem vehetsz ki értéket, teli verembe pedig nem tehetsz bele
Egy tisztességes megoldás ennél persze jóval komplexebb, de a fentieket szemléltetésnek szántam, nem production-ready kódnak.
Úgy, hogy pakolgatsz a tömbbe elemeket, egy veremmutatót meg mindig állítgatsz kivételnél, berakásnál.
Érdemes bele hibakezelést tenni, ha kiürülne a verem, vagy ha betelne (vagy helyette nagyobb tömböt allokálni neki).
Ahogy már fentebb írták.
A Pascal nyelv nem tartalmazza sem a lista, sem a sor, sem a verem adattípusokat. Ezeket legtöbbször egy tömbben szoktuk emulálni, amely lehet statikus tömb, de ha igazán hatékonyan akarod megoldani, akkor dinamikus memóraifoglalást használsz.
Igazából nagyon alapszinten nincs szükséged másra, mint egy tömbváltozóra, valamint egy egész típusó változóra, amiben azt tárolod, hogy hol van a verem teteje. Továbbá kell kér eljárás, az egyik, amivel beteszel a verembe egy elemet, a másik pedig amivel kiveszel belőle. Betenni úgy tudsz, hogy a veremmutatóként használt változót megnöveled (1-gyel), és a verem adott elemébe (ahová a veremmutató mutat) beírod az új értéket. Kivenni pedig szintén egy értékadás, valamint a veremmutató csökkentése.
Persze, ha nem akarsz hibákba belefutni, le kell ellenőrizned azt is, hogy létezik-e a verem adott eleme, és mondjuk nem a -1. elemet akartad-e olvasni.
"vermeket probalhatod vektorialis fol irni bar C++ ertek de szerintem megoldhato a pascalban masok a parancsok valaki ha segit akkor okes"
A fene azt az értelmi fogyatékos fajtádat, hogy odaengedik az internet elé!!!
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!