Kezdőoldal » Számítástechnika » Programozás » Pascalban az in-t lehet...

Pascalban az in-t lehet tömbváltozókra is használni?

Figyelt kérdés

úgy értem hogy ugye van amit az iskolában is tanítanak:


if 1 in [1,2,3,4,5] ......


ezt lehetne valahogy úgy alkalmazni, hogy:


var tomb: array of byte;

x: byte;


if x in tomb then // azaz ha az x-nek megfelelo ertek helyet foglal a tomb-ben



illetve ha lehet akkor hogyan kell, mert így ebben a formában "operator not overloaded".



2013. jún. 25. 14:40
1 2
 1/13 anonim ***** válasza:
Nem. Az egy halmazműveleti operátor, csak halmazokkal és halmaz elemekkel működik. (Ld: set operators)
2013. jún. 25. 14:49
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
és van valami hasonló beépített művelet, vagy ezt meg kell írni magadnak ?
2013. jún. 25. 15:06
 3/13 anonim ***** válasza:

Én nem tudok róla. Collection nevű unit (osztály?) azt hiszem létezik, de az már jóval több egy sima tömbnél, az nem lesz jó neked. Egyszerűbb, ha megírod (vagy keresel neten), és utána elteszed későbbre.


Az in operátor is azért létezik a halmazoknál, mert a halmaz tárolási módja el van fedve, és nem igazán segíti a benne való keresést. De a tömb szabadon kezelhető, egyszerűen írható bármilyen kereső algoritmus hozzá.

2013. jún. 25. 15:23
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:
Köszönöm, igazából az volt a lényeg, hogy minél gyorsabban tudjon menni a dolog, hiszen több százezret(kicsit túlzok, legyen több ezret) kell majd végrehajtania belőle, most egyenlőre megoldottam egy pár If-el de majd ki kell találnom rá egy gyorsabb megoldást. Azért nem a hagyományos repeat-until vagy For-os ellenőrzést csináltam, mert a memóriával is takarékoskodni kell.
2013. jún. 25. 17:50
 5/13 anonim ***** válasza:
Rendezett tömbön felező kereséssel, rendezetlenen végiglépkedéssel lehetséges. Nem tudom a néhány if mit jelent, egy rövid függvényt lehet rá írni.
2013. jún. 25. 19:05
Hasznos számodra ez a válasz?
 6/13 SimkoL ***** válasza:
Alternatív megoldásként: Stringként tárolod az adataidat és keresésre ott az IndexOf.
2013. jún. 25. 20:32
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:
ellenőrzöm, hogy megvannak-e bizonyos file-k ezeknek az ellenőrzéseknek az eredményét egy boolean tömbben tartom, ebben kell megnéznem, ha van-e false, akkor hibával lépjen ki, ellenben fusson tovább, és ezt is gyorsan kell végezni. :)
2013. jún. 26. 22:04
 8/13 tabaki ***** válasza:

Ehhez egyszerűbbnek tűnik végigmenni a tömbelemeken egy egyenlőségvizsgálattal, szerintem az in is valami hasonlót csinál, és nincs kizárva, hogy lassabban. Ha gyorsítani akarsz rajta, írd meg assembly-betétként, az egyszerű szerkezetű tömbre nyilván nem ördöngösség. Így kikerülheted a pascal terjengősebb bolondbiztos megoldásait. De pár ezer ellenőrzés tiszta pascalban sem tétel a fájlok lekérdezésének idejéhez képest.

Mellesleg az nem megoldás, hogy a meglévő fájlokkal egyáltalán nem foglalkozol, hanem csak mondjuk a hiányzók sorszámát jegyzed föl a keresés alatt? Ez egybájtosnál nagyobb bejegyzéseket igényelne ugyan, viszont a bejegyzések száma sokkal kevesebb volna (optimális esetben semennyi), és azt, hogy *egyáltalán* volt-e probléma, azonnal meg tudod állapítani abból, hogy üres-e az első bejegyzés. Hogy magukat a bejegyzéseket milyen formában tárolod, a te dolgod, én talán stringet használnék, de a közvetlensége miatt gyorsabb egy integer-tömb. A feladat mélyebb ismeretében biztosan lehetne ennél okosabbakat is javasolni.

2013. jún. 27. 02:11
Hasznos számodra ez a válasz?
 9/13 tabaki ***** válasza:
Nem tesz jót nekem a hajnali szörfölés... most néztem meg jobban, hogy mit írtál. Ha csak ennyi a feladat, minek tárolod egyáltalán, hogy milyen fájlokat találtál meg? Ha valamelyik hiányzik, ne könyvelgess, hanem vége a programnak, nem? Amit te próbáltál meg amit én javasoltam, annak csak akkor van értelme, ha azt is meg akarod állapítani, hogy melyik hiányzik.
2013. jún. 27. 15:40
Hasznos számodra ez a válasz?
 10/13 A kérdező kommentje:

azért kell eltárolni, mert majd ki akarom iratni, hogy mi volt a problem, mert mivel ez egy gui app semmi lehetôséget nem tudok a hiba kiiratására, csak ha betôlt valami, ami kiirja, azt meg csak a végén kell ugyebár :D csak az a gond, hogy annak a dolgai is fileban vannak, de ezt majd megoldom. a lényeg, hogy el kell tárolni, és gyorsan kikeresni a pár if pedig:


uses sysutils, ...


var fileok:array[1..n] of boolean;


fileok[n]:=FileExist(valami.cfg);


if fileok[1] AND fileok[2] AND fileok[n] .....

2013. jún. 27. 22:49
1 2

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!