Kezdőoldal » Számítástechnika » Programozás » Free pascalban, hogyan lehet...

Free pascalban, hogyan lehet úgy beolvasni egy file-t, hogy minden új szót külön lehessen kezelni?

Figyelt kérdés

Értem én itt azt, hogy van egy doksim, amiben van egy azonosító, mellette a hozzátartozó információ egy szóban, és így egymás alatt.

Mert próbáltam úgy, hogy létre hozok egy Type-ot és akkor utánna egy Array tömbbe olvasom,hogy pl.:

Program valami;

Uses crt;

Type kell=record;

azonosito:string;

eredmeny:string;

End;


Var teszt:Array[1..500] of kell;

f:text;


Begin

Assign(f,'teszt.txt');

Reset(f);

i:=1

While not eof(f) do

Begin

Read(f,teszt[i].azonosito);

Readln(f.teszt[i].eredmeny);

i:=i+1

End;

close(f);

End.


így csak az azonositoba olvassa be egy sor tartalmát.



2020. máj. 15. 16:32
1 2 3
 21/27 anonim ***** válasza:

Pár példa, hogy hogyan lehet darabolni:

[link]

[link]

Vagy: megírod "nulláról". Igazából nem nagy kunszt, és csak egyszer kell megírni, utánna akárhányszor felhasználhatod, vagy akár - más okosságokkal együtt - saját unitba is szervezheted. ;)

2020. máj. 16. 21:11
Hasznos számodra ez a válasz?
 22/27 anonim ***** válasza:

@21:11

Igen ez jó viszont csak akkor működik ha a compiler -Mdelphi kapcsolóval fordít. Saját előre elkészített unitot meg nem használhat érettségin.

2020. máj. 17. 00:07
Hasznos számodra ez a válasz?
 23/27 tabaki ***** válasza:

Bemutatom az én próbálkozásomat. Ha jól értem, akkor voltaképpen a 4. feladatról volna szó, és a "valaszok.txt" tartalmát kéne eltárolni a rekordtömbben. A kérdésben közölt program szintaktikai hibáit csak megemlítem, mint furcsaságot, egy dolgot viszont hiányolok: A fájl első sora egyetlen stringben a helyes válaszok kódját tartalmazza, az tehát külön kezelendő. A másutt szokásos Split nekem is rokonszenvesebb volna, de a Free Pascalban én sem találtam meg beépítve – viszont a szűkebben vett feladat megoldható például a StrUtils unit ExtractWord() funkciójával is; a programom ezt használva rakja a beolvasott sor két felét a megfelelő rekordokba. Annyival még kiegészítettem a kérdés programját, hogy a végén kilistázza a rekordtömb tartalmát, és kiírja a helyes kódsort is.

[link]

2020. máj. 17. 01:11
Hasznos számodra ez a válasz?
 24/27 A kérdező kommentje:
Nagyon szépen köszönöm a válaszokat.
2020. máj. 17. 10:31
 25/27 anonim ***** válasza:

A kérdezőnek írom, hogy talán szerencsésebb lett volna valamivel pontosabban megjelölni a forrást, mert én ugyan megnyitottam a linken lévő pdf file-t, de úgy gondoltam, tizen oldalt azért nem fogok végig olvasni, hogy rájöjjek, mi is a kérdező gondja.

Emiatt aztán hülyeségeket is irkáltam, segítség gyanánt. Tabaki konkrét iránymutatása vitt csak rá, hogy el is olvassam a feladatot,

ami egyébként üdítően életszerű, kilóg, az amúgy szürke, unalmas érettségi feladatok sorából.


A dolog úgy indul, hogy meg kell nyitni és beolvasni egy text formátumú file-t.

Ezt te kétféleképpen valósíthatod meg. Vagy string-ként tárolod egy két dimenziós tömbben az adatokat, vagy az összetartozó adatrészekhez alkotsz egy rekord tipust, majd ebből a tipusból egy tömböt.

Én az utóbbit tettem.

Az adatok formátuma kötött (adott hosszúságú név-érték páros), ehhez lehet igazítani a tároló (rekord) méretét.

Bár ez esetben ismert, de alapban nem tudhatjuk, hogy hány rekordot tartalmaz egy file, így a rekordokból álló tömb jó ha dinamikus, azaz, pontosan akkora, amekkorára éppen szükség van. Ezt legkönnyebben a setlength függvénnnyel lehet megvalósítani.


setlength(TömbNeve, TombUjMerete).


A "valaszok.txt" file első sorát - a helyes eredményeket - elég külön, egy string tip változóba beolvasni, a többi - soronként egy-egy adatpár - meg mehet a rekord alapú tömbbe. Tekintve, hogy számos adatról van szó, így, azt, hogy a tömb hibátlanul feltöltődött-e, a tömb file-ba írásával tudod ellenőrizni, esetleg azzal, hogy mondjuk minden 30-adik sort kiirod a képernyőre.


[link]

2020. máj. 17. 13:59
Hasznos számodra ez a válasz?
 26/27 A kérdező kommentje:
Köszönöm
2020. máj. 17. 17:32
 27/27 A kérdező kommentje:

[link]

ez így megálja a helyét?

2020. máj. 17. 18:18
1 2 3

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!