Pereiti prie turinio

FPS skaitymas is failu


Rekomenduojami pranešimai

Sveiki,

pradejau truputi programuoti su FPS ir pristigo ziniu :)

Beda yra tokia:

noriu nuskaityti faila su turiniu panasiu i si:

 

pirmas=1
antras=0
trecias=0
ketvirtas=2

 

Tai dazniausiai buna ivairiu programu config failiukai. Skaiciai gali keistis.

 

Taigi noreciau kad programa nuskaitytu ta skaiciu prie kiekvieno zodzio ir atitinkamu atveju ka nors darytu. tarkim jei prie zodzio pirmas yra 1, tuomet writeln('labas'), o jei koks kitas skaicius tuomet writeln('viso gero');

 

Na manau minti supratot. Man visos programos nereik, nes nesu visiskai zalias. Tiesiog to principo kaip nuskaityti ir apdoroti tokio turinio faila jei tai isvis imanoma su paskaliu. Aciu :huh:

Nuoroda į pranešimą
Dalintis kituose puslapiuose

program skaitymas;
uses Crt;
var Dm : Text;
Le : integer;
Eil, K : String;

Begin
Assign(Dm, 'txt.txt');
Reset(Dm);
While not Eof (Dm) do
 Begin
  ReadLn(Dm, Eil);
  Le := Length(Eil);
  K := Copy(Eil, Le, 1);
  If K = '1' Then
WriteLn('labas')
  else
	WriteLn('viso gero');
 End;
Close(Dm);
ReadLn;
End.

 

if ten pats pasikeisi kaip tau reik

Redagavo zelionke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

zelionke čia labai protingai parašė. :D Bet tau kaip pradedančiajam, siūlyčiau pasižiūrėti šitokią skaitymo procedūrą, gal šiek tiek aiškiau bus.

program lankomumas;
type pamokos = array[1..100] of integer;
  mokinys = record
			   vardas : string[15];
			  pavarde : string[15];
					p : pamokos;
					s : integer;
			end;
 mokiniai = array[1..30] of mokinys;
var A : mokiniai;
 n : integer;
{-------------------------------------------}
procedure skaitymas;
var fd : text;
  i, j : integer;
begin
assign(fd, 'lankomumas.dat');
reset(fd);
readln(fd, n);
for i:=1 to n do
 begin
  read(fd, A[i].pavarde, A[i].vardas);
for j:=1 to 9 do
 begin
  read(fd, A[i].p[j]);
  A[i].s:=A[i].s + A[i].p[j];
 end;
  readln(fd);
 end;
close(fd);
end;
{-------------------------------------------}
//IŠKIRPTOS KELIOS PROCEDŪROS
{-------------------------------------------}
procedure rasymas;
var i, j : integer;
   fr : text;
begin
assign(fr, 'lankomumas.rez');
rewrite(fr);
for i:=1 to n do
 begin
  if A[i].s <= 15
  then writeln(fr, A[i].pavarde, A[i].vardas, A[i].s);
 end;
writeln(fr, 'Per mokslo metus praleistos pamokos: ', viso);
writeln(fr, 'Daugiausiai pamokø praleido:');
if kiek_daugiausiai = 1
 then writeln(fr, A[i].vardas, A[i].s)
 else
  begin
for i:=1 to n do
 if A[daugiausiai].s = A[i].s
  then writeln(fr, A[i].pavarde, A[i].s);
  end;
close(fr);
end;
{-------------------------------------------}
begin
skaitymas;
rikiavimas;
rasymas;
end.


//O čia pats lankomumas.dat failas
6
Jonaitis	   Jonas		  1 1 1 3 3 6 1 0 1
Petraitis	  Petras		 3 3 3 3 8 8 4 1 0
Antanaitis	 Antanas		0 0 0 5 0 0 2 1 0
Saulaitis	  Saulius		1 1 0 10 0 0 7 7 7
Vidaitis	   Vidas		  0 0 0 0 5 1 1 1 0
Romaitis	   Romas		  1 0 0 0 8 1 2 1 1

Čia šitokią programą kažkada klasėj sprendėm, tai va ir pakopinau jos dalį. Dar ir rašymą į failą palikau (gal pravers). :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tada 2kart darai "ReadLn;" be kintamųjų, o po to skaitai, kaip tau reikia. Tik geriau, mano manymu, skaityti visą failą iš karto ir išsaugoti atmintyje, nes skaitymas gana ilgai trunka, todėl jei reikės kelis kartus skaityti, papildomas laikas bus. Be to, ir kodo prisidės.

 

Deaw skaitymo variantas geresnis, nes ten apribotas simbolių eilutės ilgis (string[15]). Todėl jei tik yra galimybė, pasidaryk savo failą taip, kad visi žodžiai būtų to pačio ilgio, pvz:

option1 = 1

option2 = 2

paskuti = 3

ar----- = 4 //čia "-" yra tarpas

Tada nereikia skaityti visos eilutės, kopijuoti paskutinį ženklą (o jei skaičiai yra intervale (-100;100), tai dar turi kopijuoti skirtingus ilgius), tiesiog nuskaitai į string[9] (šiuo atveju), o paskui į integer.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...