Kezdőoldal » Számítástechnika » Programozás » Mi lehet a hiba (Free Pascal...

Mi lehet a hiba (Free Pascal fileból olvasás)?

Figyelt kérdés

Van egy program, ami beolvas egy fájlból. A fájl maximum 51 soros és csak számokat tartalmaz. A beolvasás után kiírja a képernyőre az összes számot, mindegyiket új sorba mint ahogy a szöveges állományban van. Na itt a probléma a program csak a 28. sortól kezdi a kiírást (valószínű a beolvasást is), és minden futtatásnál a 28. sort (ami az első amit kiír) egyel többször írja ki mint az előző futtatásnál... Nem értem mi lehet a gond.


Forráskód:


program lotto;


uses crt;


const maxn=51;


var be:text;

szamok:array[1..maxn] of integer;


procedure F1();


var i:integer;


begin


assign(be,'C:\Documents and Settings\Laci\Asztal\lottosz.txt');

{$I-}

reset(be);

{$I+}

for i:=1 to maxn do

begin

readln(be,szamok[i]);

end;


close(be);


end;


procedure F2();


var i:integer;


begin


for i:=1 to maxn do


writeln(szamok[i]);


end;


begin


F1();

F2();

repeat until keypressed


end.



A szöveges állomány tartalma:


3742446162

1842548389

512315360

128475670

5456575971

721333986

2129374868

1021294087

1333737778

223657184

321283033

2331427385

423426164

1760667185

1260666772

4650586276

2032436573

5556586171

1838416789

3241596679

2535377486

145606182

720355883

737404651

26477480

15224488

2333347189

456747789

1718515275

729307780

1718283590

624255379

712183890

2528455574

1029607486

724255076

2040525490

1630818387

2022235067

5968758085

3245557078

1340555676

314247383

2325286676

2433343954

1228346170

1486974

415464959

2431677173

1226364649

920215968


Ha valaki tud segíteni ezt nagyon szépen megköszönném.


2011. aug. 29. 18:06
 1/6 mokkacsino ***** válasza:

Egyrészt az integer nem fog tudni ekkora számot kezelni.

Az integer -32000 .. +32000 (a teljesen pontos értéket nem tudom) De a fenti számok tuti nem férnek bele.

És bár régen foglalkoztam Pascallal, de a beolvasás nem stringet kezel és utána kell átalakítani a stringet integeré?


A másik meg, hogy szerintem a fájlolvasó ciklus ne 51-ig menjen, hanem valahogy így (nem biztos, hogy pascalban is így van)


While not eof(be) { //A ciklus addig fut, amíg a fájl végére nem ér.


readln(be,szamok[i]);

}

2011. aug. 29. 18:15
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
Igen, a 'szamok:array[1..maxn] of integer;', 'szamok:array[1..maxn] of string;' akart lenni, különben a program nem fut le (az általad említett [az integer -32768 - 32767ig terjed] probléma miatt). És a probléma ugyan úgy fennáll, a 'while not eof(be)...' ciklussal is.
2011. aug. 29. 18:26
 3/6 mokkacsino ***** válasza:
Küldtem privit.
2011. aug. 29. 18:31
Hasznos számodra ez a válasz?
 4/6 zsomkovacs ***** válasza:

Na, ezt most jó sokáig néztem, és fogtam a fejem, amikor rájöttem, mi a hiba...


A Pascal képernyője alapvetően 25 soros. Tehát az 51 sor semmiképp nem fog kiférni. Csak a 28-51. sorokat látod majd.


Az F2 ciklusának a végére írd be:


If (i MOD 24)=0 Then

Begin

ReadLn;

Clrscr;

End;


Ennek hatására a képernyő alján megáll a kiírás, vár egy Entert, törli a képernyőt és fut tovább a program.

2011. aug. 29. 19:05
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:
Ezt nem hiszem el :D Az előző kommentelő is hasonló megoldást írt :D csak ott több enter kell, hogy kiírja az összes számot... Köszi szépen, én meg nem tudtam mit rontottam el xD
2011. aug. 29. 19:07
 6/6 anonim ***** válasza:

Az 5-ös lottóba 5 számot húznak ki 1 és 90 között.

A kihúzott számokat tagolva közlik nem egybe egyetlen számba. Mi értelme van egyáltalán??

Pl. 26477480-t hogy döntöd el hogy 2 64 77 4 80 vagy 26 47 74 80 vagy 2 6 4 77 4 80 ?


Mit kéne tudnia a programnak? Ha csak annyit hogy kiírja a konzolablakra a fájl tartalmát akkor parancssorból megoldom 1 sorból: more "C:\Documents and Settings\Laci\Asztal\lottosz.txt"

2011. aug. 29. 22:24
Hasznos számodra ez a válasz?

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!