• 9 odgovora
  • 3.712 pregleda
Pascal, rad sa datotekama 23.01.2014. u 22:32 · pre 155 meseci #1
Imam zadatak da napravim imenik, tako da se prilikom pokretanja programa pojavljuje pitanje da li želim da unesem informacije ili da ispišem na ekran već postojeće. Ja sam napisao za unos i to valjda radi, ali primetio sam da mi se datoteka ne kreira u direktorijumu kojim sam naveo prilikom pisanja programa, pa pretpostavljam da mi se prilikom ponovnog pokretanja programa neće sačuvati već postojeća imena i brojevi telefona. Imam problem takođe sa ispisivanjem podataka, ne izbacuje mi ništa..
Program moram da odradim bez korišćenja procedura i funkcija.

Ako možete malo da mi pomognete bio bih vam mnogo zahvalan..
Ja ću i dalje da pokušavam da rešim problem, a za to vreme ako još neko može malo da baci oko i proba da pomogne, evo kodova:



[Ovu poruku je menjao zyclon.maya dana 24.01.2014. u 00:09 GMT+1]
Re: Pascal, rad sa datotekama 11.02.2014. u 01:00 · pre 154 meseci #3
Imam datoteku sa slogovima i na primer imam 2 banane, 3 jabuke i 1 krusku.. To je ukupno 6 vocki.. A kako ja da izvucem iz datoteke koliko ukupno imam vrsta vocki.. Kako ja ovde da dobijem broj 3.. Svasta sam pokusavao i da napravim niz, pa da uporedjujem i odstranjujem ali nikako ne uspevam.. Moze li pomoc, dobri ljudi, hvala unapred..

Da preciziram, izgleda otprilike ovako..

voce.naziv
...
...
...

podaci u datoteci:
banana
jabuka
jabuka
kruska
banana
jabuka


kako ja iz datoteke da izvucem koliko ima vrsta voca?

[Ovu poruku je menjao zyclon.maya dana 11.02.2014. u 02:11 GMT+1]
Re: Pascal, rad sa datotekama 11.02.2014. u 15:45 · pre 154 meseci #4

Način koji mi prvi pada na pamet, a najednostavnije je:
- definirati vrste: array [0..maxBrojVrstaVoca] of string
- definirati broj: array [0..maxBrojVrstaVoca] of integer

- čitati redom iz file-a vočke
- provjeravati da li postoji u vrste da li postoji upisana vočka. ako postoji, index na kom je upisana pamtiš
- ako ne postoji upisana u vrste - dodaš ju na kraju, pamtiš index gdje si ju dodao
- broj[index] (index koji si pamtio ranije) povečaš za jedan

ispisuješ sve dok imaš i vrse <> ''
- 'vrsta voća: ' + vrste + ' broj zapisa:' + IntToStr(broj)
Re: Pascal, rad sa datotekama 11.02.2014. u 19:29 · pre 154 meseci #5
franjo_tahi2 ti je vec dao ideju, a evo i primera jedne od mogucnosti, rad sa TStringList:

Code:
var
  i: integer;
  slFajl,
  slVoce: TStringList;
begin
  slFajl := TStringList.Create();
  try
    slFajl.LoadFromFile('voce.txt'); // ucitaj tekst iz fajla
    slVoce := TStringList.Create();
    try
      for i := 0 to slFajl.Count-1 do
      begin
        if (slVoce.IndexOf(slFajl[i]) = -1) then // dodaj novu vocku
          slVoce.Add(slFajl[i]);
      end;
      //
      ShowMessage('Razlicitih vocaka '+ IntToStr(slVoce.Count)
        + ', ukupno ' + IntToStr(slFajl.Count));
    finally
      slVoce.Free();
    end;
  finally
    slFajl.Free();
  end;
end;
Re: Pascal, rad sa datotekama 11.02.2014. u 19:29 · pre 154 meseci #6
Rešio sam ga u međuvremenu, uz pomoć skupova.. Franjo, sinoć sam pokušavao na način sličan tvom, nije davao rezultata...

Hvala obojici..


EDIT: Evo koda, ako nekome nekada zatreba..

Code:
reset(x);
while not eof(x) do
 begin
  read(x,voce);
if (voce.naziv in a) then      //a - prethodno definisan prazan skup
continue;
a:=a+[voce.nazic];
inc(k);                                        //k - br različitih vrsta
end;



[Ovu poruku je menjao zyclon.maya dana 11.02.2014. u 20:41 GMT+1]
Re: Pascal, rad sa datotekama 11.02.2014. u 19:46 · pre 154 meseci #7
Ako se ne varam, sa skupovima si ogranicen na 256 vrsta vocki (Delphi), odnosno 32 (TurboPascal).

Za resenje sa TStringList, zar ne postoji property TStringList.Sorted..? (kad vec koristimo IndexOf())

Pravo resenje bi bilo (ako treba i broj pojavljivanja pojedinih vocki), deklarisati record za svaku vocku (ime i brojac pojavljivanja), i u TList instancu dodavati dinamicki alociran record/vocku po potrebi, odnosno uvecavati brojac pojavljivanja u (vec) alociranom record-u. Takodje ne bi bilo lose TList drzati sortiran, radi brzeg nalazenja (metodom polovljenja) vec unete vocke... tandara broc ;).

Pozz


Re: Pascal, rad sa datotekama 11.02.2014. u 20:37 · pre 154 meseci #8
Citat:
Za resenje sa TStringList, zar ne postoji property TStringList.Sorted..? (kad vec koristimo IndexOf())

Sto, je l` neko rekao da ne postoji? (kad vec pitamo) :) Da, ako listu sortiramo, pretraga ce biti jos brza, hvala na dopuni. Ja ne mislim da sam dao najkompletnije moguce resenje, niti mi je to bio cilj (niti smatram da takvo kao generalno postoji), vec samo jedan vrlo, vrlo prost primer kako konkretno i lako moze da se resi ono sto je postavljacu pitanja zadavalo probleme, i to resi koristeci nesto sto vec postoji i lako se upotrebljava - TStringList.

Inace se slazem da je verovatno najelegantnije resenje koriscenje sopstvenih tipova - kad se ima vremena i znanja (a postoji potreba), mogu se tu lepe klase razviti... ;)
Re: Pascal, rad sa datotekama 12.02.2014. u 10:00 · pre 154 meseci #9
NHF (nema ljutis)... ;)

Pascal je stvorio Wirth da bi naucio svoje studente da pravilno razmisljaju; sto ce reci, tipovi + strukture + algoritmi = Pascal :) . Ili kako negde davno procitah, "Pascal je jezik koji opisuje algoritme". Kako to zvuci spram "nesto jednostavno, samo da radi", ne bih znao.

Pozz
Re: Pascal, rad sa datotekama 12.02.2014. u 19:43 · pre 154 meseci #10
Of skroz ;) Nego kad bi se alati (ne samo programski) koristili iskljucivo onako kako su prvobitno zamisljeni/namenjeni, daleko bi mi do sad dogurali... :D
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme