Kezdőoldal » Számítástechnika » Programozás » Egy text fájlban így vannak...

Egy text fájlban így vannak az adatok:fffffiiiiiiffiiifi (lényeg hogy folyamatosan nem soron ként) és beszeretném őket egyesével egy tömbbe olvasni?

Figyelt kérdés
(pl: a=egy tömb, az a[1]ben f lesz az a[2] ben is) ezt milyen parancsal oldom meg hogy egyesével olvassa bele?

2014. dec. 7. 19:10
 1/7 A kérdező kommentje:
Freepascalban :)
2014. dec. 7. 19:11
 2/7 ejbenjaro ***** válasza:
Olvasd be a sort stringként. A stringet kezelheted karakterek tömbjeként.
2014. dec. 7. 19:28
Hasznos számodra ez a válasz?
 3/7 SimkoL ***** válasza:

Meg fog lepődni. A Read eljárás kell :)

program olvas;

var c : char;

f : file of char;

tomb : array of char;

i: integer;

begin

i := -1 ;

Assign(f,'d:\sorozat.pas');

{$I-} //Tudom ronda :), hogy nincs tovább kezelve

Reset(f);

SetLength(tomb, FileSize(f));

while not Eof(f) do

begin

Inc(i);

Read(f, c);

Tomb[i] := c;

Write(c);

end;

Close(f);

{$I+}

end.

2014. dec. 7. 19:41
Hasznos számodra ez a válasz?
 4/7 SimkoL ***** válasza:
100%

Szégyellem magam, hogy egy elkapkodott kódot másoltam be:( álljon itt helyette ez:

program olvas;

var f : file of char;

tomb : array of char;

i: integer;

begin

i := -1 ;

Assign(f,'d:\sorozat.pas');

{$I-}

Reset(f);

if IOResult = 0 then

begin

SetLength(tomb, FileSize(f));

while not Eof(f) do

begin

Inc(i);

Read(f, tomb[i]);

Write(tomb[i]);

end;

Close(f);

end

else

begin

WriteLn('Hiba a file megnyitasnal !');

end;

{$I+}

SetLength(tomb, 0);

end.

2014. dec. 7. 19:57
Hasznos számodra ez a válasz?
 5/7 A kérdező kommentje:

program fejvagyiras;

uses crt;

var a:array[1..1001] of char;

f:file of char;

fej,ir,i:integer;

p:string;

begin

fej:=0;

p:='c';

assign(f,'fejvagyiras.data');

reset(f);

i:=0;

while not eof(f) do begin

inc(i);

Read(f,a[i]);

end;


if a[i]='F' then inc(fej)

else

inc(ir);


close(f);

writeln('ir:',ir,'fej:',fej,fej+ir);

end.



201 es code /szerintem az egészett be akarja olvasni az a[1] be/ :D

mi a hiba?

2014. dec. 7. 20:49
 6/7 SimkoL ***** válasza:

Végül is az egész program rossz :) Nem jó helyen számolod a 'F' betűket és nem szabad engedni túlcsordulni a tömböt, ezért írtam a mintában dinamikusat, alkalmazkodva a file méretéhez.

program fejvagyiras;

uses crt;

var a : array[1..1001] of char;

f : file of char;

fej, ir, i : integer;

begin

fej := 0;

ir := 0;

Assign(f,'d:\fejvagyiras.data');

Reset(f);

i := 0;

while (not Eof(f)) and (i < 1001) do

begin

Inc(i);

Read(f, a[i]);

if a[i]='F' then Inc(fej) else Inc(ir);

end;

Close(f);

Writeln('ir: ', ir, 'fej: ', fej, 'Osszes: ', fej+ir);

end.


Így megáll ha elérte a tömb legnagyobb indexét vagy elérte a file végét. Az az igazság egy UpCase is elférne a file hibakezelésen kívül.

2014. dec. 7. 21:18
Hasznos számodra ez a válasz?
 7/7 ejbenjaro ***** válasza:

Csak hogy egy másik megközelítést is láss:


program fejvagyiras;


{$mode objfpc}{$H+}


uses Classes, Sysutils;


var

Adatfile: TStringList;

i,j: integer;

Fej, Iras: integer;

Sor: String;


begin

try

Adatfile:=TStringList.Create;

Adatfile.LoadFromFile('fejvagyiras.data');

j:=0;

Fej:=0;

Iras:=0;

Sor:='';

for i:=0 to Adatfile.Count-1 do

begin

Sor:=AdatFile[i];

for j:=1 to length(Sor) do

if (Upcase(Sor[j])='F') then inc(Fej)

else inc(Iras);

end;

finally

FreeAndNil(Adatfile);

writeln('Fej: ',Fej,' Iras: ',Iras,' Fej+iras: ',Fej+Iras);

end;

end.

2014. dec. 8. 13:12
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!