Započni novu temu Odgovori na temu  [ 10 Posta ] 
Autoru Poruka
 Tema posta:
PostPoslato: 21.12.2002. 00:34:44 

Pridružio se: 15.01.2002. 00:30:21
Postovi: 73
Lokacija: uzice
Oki, program sluz za citanje datoteke, u kojoj se nalaze redom prvo visina pa tezina ucenika.Program treba da izracuna srednju vrednost poslednjih 5(Kod mene je to ostavljeno korisniku) studenata.Pri testiranju se pokazalo da ne daje tacno resenje.Trazio sam gresku, cak mi je i asisten pomagao ali nismo uspeli da je pronadjemo.Znam da je program mogao inteligentnije da se resi.Ali citanje datoteke sa while not eof je uslovilo ovak vid resenja (Moglo je i preko sloga da se rese, ali mislim da je ovako brze).
Kod:
Program domac3;
uses crt;
const
perr='Pogresan unos!Pokusajte ponovo!'#7;
type
  f=file of real;
  tniz=array [1..100] of real;
var
  datoteka:f;
  brojac:integer;
  visina,tezina:tniz; {Kraj definicije promenjivih glavnog programa}


  procedure dalje;   {Nastavak uslovljava pritisak nekog tastera}
  begin
  writeln('za nastavak pritisnite neki taster');
  readln;
  end;


  procedure provunosa (var izlaz:integer);  {procedura sluzi za proveru unosa
     unos joj je samo vrednost promenjive na izlazu, unos je u okviru nje}
           var
           unos:string[10];
           kontrolna:integer;
             begin
              repeat
              writeln ('Unesi Trazenu vrednost ');
              readln (unos);
              val (unos,izlaz,kontrolna);  {Uzavisnosti od potreba ispraviti drugu uslovnu}
              if (izlaz<0) or (izlaz>7) or (kontrolna<>0) then writeln (perr);
              until (izlaz>-1) and (izlaz<8) and (kontrolna=0);
             end;

  procedure citaj(var brojac:integer;var visina,tezina:tniz;var datoteka:f);
  {treba da iscita datoteku}
  var
  log:boolean;{Za repeat petlju kod provere teke}
  i:integer;        {I da upise vrednosti u dva nova niza ,tezina i visina}
  putanja:string[255];
  begin
    brojac:=1;{Da prebroji koliko ukupno ima clanova}
    i:=0;  {Za indeksiranje oba niza}
    writeln ('    Molimo vas dajte putanju do datoteke');
    repeat
    readln (putanja);  {Mogucnost da sam korisnik definise putanju ka datoteci}
    assign(datoteka,putanja);{$i-}
    reset(datoteka);
    {$i+}       {Provera ispravnosti same datoteke}
    if ioresult<>0 then
         begin
           writeln(perr);dalje;log:=false;
         end
                  else log:=true;
    {ako datoteka nije u redu sistem salje poruku o gresci i gasi program}
    until log=true;

  while not eof (datoteka) do {Koristio while to je odmah povuklo Koriscenje ovih
  metoda}
    begin
    i:=i+1;  {Jer sam na pocetku stavio 0}
    read (datoteka,visina[i],tezina[i]);
    brojac:=brojac +1;
    end;
  close(datoteka);brojac:=brojac-1;
  end;

           {Srz programa-esencija}
  function esenci(nizx:tniz;brojac:integer;oduzmi:integer ):real;
  var      {Data funkcija treba da vrati vrednost srednje vrednosti proizvodnog
  broja zadnjih clanova niza}
  i:integer;
  sre:real;
  BEGIN
  sre:=0; begin
  FOR i:=(brojac - oduzmi) to brojac do
  sre:=sre+nizx[i];  end;
  esenci:=sre/oduzmi;
  end;

    procedure Uvod;  {Smesna procedura ali mora se}
  begin
  writeln;
  writeln;
    writeln('     Ovaj program Sluzi za odredjevanje srednje visene');
    writeln('     i tezine proizvodnog broja studenata');
    writeln;
  end;

     procedure Meni(visina,tezina:tniz;brojac:integer);  {Meni, trebalo ga je jos rasclaniti
     jer se jedan deo operacija izvrsava i u njemu}
  var izbor:char;
      poruka:string;x:integer;
  begin
    repeat
     writeln('********************************');
     writeln('*            M E N I           *');
     writeln('*                              *');
     writeln('* 1.Odresi srednju visinu ');
     writeln('* 2.Odresi srednju tezinu *');
     writeln('* 3.KRAJ                       *');
     writeln('********************************');
     writeln;
     writeln;
     writeln('Vas izbor je: ');
     izbor:=readkey;
     case izbor of
       '1':begin
       writeln ('Sada unesite za koji broj poslednjih studenata');
       writeln ('se izracunava srednja vrednost');
       provunosa(x); {Unosi se opcioni broj zadnjih}
       writeln;
       writeln ('srednja visina poslednjih ',x,' Studenata je ');
       writeln(esenci(visina,brojac,x):10:4);    {Treba da vrati rezultat}
       writeln;end;
       '2':begin
       writeln ('Sada unesite za koji broj poslednjih studenata');
       writeln ('se izracunava srednja vrednost');
       provunosa(x);                         {Slicno gore navedenom}
       writeln ('srednja tezina poslednjih ',x,' studenata je');
       writeln(esenci(tezina,brojac,x):10:3);
           end;
       '3':begin
             writeln('Izabrali ste KRAJ!');
           end;
     else
       writeln;
       writeln;
       writeln('Greska u unosu!');
     end;
   until izbor='3';
  end;
(*********************************)
{pocetak glavnog programa}
begin
textBackground (9);
 textcolor (3);
 clrscr;
uvod;

{Ovim sam samo pri startovanju}
{Inicirao citanje datoteke i time smanjio vreme pristupa}
{I omogucio da se parametri predju proceduri meni }
citaj(brojac,visina,tezina,datoteka);

{Koja dalje te parametre predaje proceduri esencija}
meni(visina,tezina,brojac);
end.                                {Nema vise narode}

_________________
www.root-sys.com/lug/forum lug, uclanite se


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 21.12.2002. 01:14:28 

Pridružio se: 17.01.2002. 01:08:22
Postovi: 261
Lokacija: /home/kruzer/
a gde je greska? kako se ispoljava? opisi malo...
nemam kompajler pa ne mogu da je od oka vidim(da je C++ mozda bih i mogao;))), bilo bi dobro da si napisao gde je greska(u kojoj funkciji-proceduri kako se to kaze u pascalu)...

jel znas da koristis debager u borland tp, ako taj koristis?

btw: jel zna neko neki drugi kompajler za pascal a da je besplatan i da je za windows NT(2000)?


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 22.12.2002. 04:07:43 

Pridružio se: 15.01.2002. 00:30:21
Postovi: 73
Lokacija: uzice
Pa greska je u rezultatu, recimo ako iz datoteke cita po 7 puta 6 za visinu i tezinu, srednja vrednost za poslednja 4 bila bi 5.4 (tu negde), znaci zadatak radi, ali ne mogu da skontam gde je greska.Postavljao sam i tacke prekida ali ovde sa njima nista ne postizem, takodje sam proverio i vrednosti koje dobija procedura citaj i one su tacne.Zaista nisam skontao u cemu je greska, cak je i asistent za 5 minuta koje je pregledao i pokusao da otkrije gresku nije uspeo.

A naraavno da imas free kompajler za paskal.Probaj freepascal , mislim da ima i za windows.

_________________
www.root-sys.com/lug/forum lug, uclanite se


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 23.12.2002. 01:48:03 
Moderator
Korisnikov avatar

Pridružio se: 13.11.2001. 08:45:08
Postovi: 4717
Lokacija: Novi Bgd.
Godina: Dipl.
Smer: IS
Re

_________________
Oni hipotetički kostrukti o kojima se može govoriti kao o konzistentnim i relativno trajnim dinamičkim sistemima koji objašnjavaju veći deo procesa motivacije, obuhvatajući i ciljeve i motive kroz njihove međusobne relacije, čime se mogu uslovno..


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 23.12.2002. 15:08:38 

Pridružio se: 15.01.2002. 00:30:21
Postovi: 73
Lokacija: uzice
da i ja sam otkrio u cemu je fazon.Da ce se for izbvrsiti for i:=1 to 1 do se izvrsava, najgore sto ni asistentu to nije palo napamet, stvarno suygava greska.

_________________
www.root-sys.com/lug/forum lug, uclanite se


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 26.12.2002. 18:49:17 

Pridružio se: 15.01.2002. 00:30:21
Postovi: 73
Lokacija: uzice
E znam da ima inteligentnije resenje.Znaci treba napisati program koji iz text datoteke, broji sve recenice, pod recenicom se smatra ona koja na kraju ima !,.i ,.... Cak mi treba i jedno rekurzivno resenje.Takodje ovaj zadatak ima i jedan nedostatak, jer nisam znao kako da odradim da recenica zahteva sem tacke i minimum jedno slovo.

Kod:
program recenice;
uses
  crt;
var
  ime_dat:string;
  datoteka:text;
  kraj:boolean;

(***Procedura za obradu datoteke****)

procedure Obrada(var datoteka:text;ime_dat:string);
var
  ch:char;
  br_rec:integer;
begin
  clrscr;
  gotoxy(30,10);
  writeln('OBRADA U TOKU...');
  gotoxy(1,1);
  br_rec:=0;
  ch:=' ';
  assign(datoteka,ime_dat);
  {$I-}
  reset(datoteka);
  if ioresult=0 then
  begin
    repeat
    read(datoteka,ch);
    if (ch='.') or (ch='!') or (ch='?') then br_rec:=br_rec+1;
    until eof(datoteka);
  clrscr;
  writeln('Statistike za datoteku "',ime_dat,'": ');
  writeln;
  if br_rec<>0 then
    writeln('Broj recenica: ',br_rec)
  else
    writeln('Broj recenica: 0 ,datoteka nema recenica ili nije txt tipa.');
  end
  else
    begin
      clrscr;
      writeln('Datoteka "',ime_dat,'" ne postoji.');
    end;
  {$I+}
  close(datoteka);
  end;

(****Procedura za uvodni text i upis****)

procedure Uvod(var ime_dat:string);
begin
  clrscr;
  writeln('Ovaj program na osnovu zadate tekstualne datoteke');
  writeln('kao rezultat daje broj recenica u toj datoteci.');
  writeln;
  writeln('Potrebno je napisti putanju i/ili ime datoteke');
  writeln('koju zelite da obradite (obavezno na kraju stavite');
  writeln('ekstenziju datoteke npr. txt ili dat): ');
  writeln;
  writeln('Za izlaz stisnite "q".');
  writeln;
  write('Ime datoteke je: ');
  readln(ime_dat);
  if (ime_dat='q') or (ime_dat='Q') then halt;
  Obrada(datoteka,ime_dat);
end;

(****Pocetak glavnog programa****)

begin
  kraj:=false;
  repeat
  Uvod(ime_dat);
  until kraj;
end.
 


_________________
www.root-sys.com/lug/forum lug, uclanite se


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 27.12.2002. 16:25:02 
Moderator
Korisnikov avatar

Pridružio se: 13.11.2001. 08:45:08
Postovi: 4717
Lokacija: Novi Bgd.
Godina: Dipl.
Smer: IS
Evo ti nerekurzivno re

_________________
Oni hipotetički kostrukti o kojima se može govoriti kao o konzistentnim i relativno trajnim dinamičkim sistemima koji objašnjavaju veći deo procesa motivacije, obuhvatajući i ciljeve i motive kroz njihove međusobne relacije, čime se mogu uslovno..


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 27.12.2002. 18:39:29 

Pridružio se: 15.01.2002. 00:30:21
Postovi: 73
Lokacija: uzice
Ma program nisam ni testirao,odradio sam ga za 10 minuta, cisto da vidim sta iskusniji kazu.Hvala na kritikama, sve su na mestu.A o stilu, sta da kazem, nisam stigao da obrazlozim, uglavnom to i radim, ali rekoh brzina.


Fora je sto me bas zanima rekurzivan nacin, a ja nisam skontao kako da ovo odradim, u sustini, vadjenje ce mi biti da ga uradim rekurzivno, posto sam se u proslom zadatku sje*ao sa for petljom.Hvala zlatko.

_________________
www.root-sys.com/lug/forum lug, uclanite se


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 28.12.2002. 14:32:07 
Moderator
Korisnikov avatar

Pridružio se: 13.11.2001. 08:45:08
Postovi: 4717
Lokacija: Novi Bgd.
Godina: Dipl.
Smer: IS
Evo i rekurzije:
[code]
program recenice;
{uses
   crt;}
   
(***Rekurzivna procedura koja

_________________
Oni hipotetički kostrukti o kojima se može govoriti kao o konzistentnim i relativno trajnim dinamičkim sistemima koji objašnjavaju veći deo procesa motivacije, obuhvatajući i ciljeve i motive kroz njihove međusobne relacije, čime se mogu uslovno..


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 11.01.2003. 00:35:04 

Pridružio se: 15.01.2002. 00:30:21
Postovi: 73
Lokacija: uzice
Samo sta cemo posto readln ne moze da cuita ceo red, vec samo prvih 255 znakova (string ogranicenje), ipak i ovo mora sa repeat-until petljom i read.U svakom slucaju oki.Hvala ti , puno mi je pomoglo.

_________________
www.root-sys.com/lug/forum lug, uclanite se


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 10 Posta ] 


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 36 gostiju


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
cron
Copyleft FONForum 2001-2014 | Powered by phpBB © phpBB Group