Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Formiranje nove datoteke iz postojece pod izvesnim kriterijumom

[es] :: Pascal / Delphi / Kylix :: Formiranje nove datoteke iz postojece pod izvesnim kriterijumom

[ Pregleda: 3368 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

overdose

Član broj: 33563
Poruke: 51
*.cvz.es



Profil

icon Formiranje nove datoteke iz postojece pod izvesnim kriterijumom07.09.2004. u 12:11 - pre 239 meseci
Imam program koji iz postojece datoteke studenata student.dat,u kojoj se nalaze razno-razni podaci o studentu (vidi kod),selektuje one ciji je prosek ocena >= 8 i upisuje u novu datoteku student8.dat. Posto sam hteo da vidim da to stvarno radi kreirao sam jos 2 programa: jedan za kreiranje datoteke studenata (student.dat) i drugi za citanje datoteke (da bih proverio sadrzaj nove datoteke student8.dat). Zatim sam uneo informacije o dvojici studenata. Jednog ciji je prosek iznad 8 i drugog ciji je prosek ispod 8.Zatim pokrenuo glavni program i dobio neocekivane rezutlate?! Novonastala datoteka je bila identicna staroj! Evo kodova,pa ako neko moze da pomogne.

Code:

program Kreiranje (input,datstud);
  type
    zapstud=record
              ime:string;
          indeks:record
                   regbr:1..9999;
               godupisa:75..99
             end;
          profil:string;
          semestar:1..10;
          brocena:0..50;
          ocene:array [1..50] of record
                                  predmet:string;
                      datum:record
                              dan:1..31;
                          mesec:1..12;
                          godina:75..99
                        end;
                      ocena:5..10
                    end
        end;
  var 
    datstud: file of zapstud;
    student:zapstud;
    i,n,j:integer;
    
begin
  assign(datstud,'student.dat'); rewrite(datstud);
  write('Koliko studenata zelite da upisete ? ');
  readln(n);
  for i:=1 to n do
    begin
      write('Unesite ime studenta: '); readln(student.ime);
      write('Unesite registarski broj [1-9999]: '); readln(student.indeks.regbr);
      write('Unesite godinu upisa [75-99]: '); readln(student.indeks.godupisa);
      write('Unesite profil: '); readln(student.profil);
      write('Unesite semestar [1-10]: '); readln(student.semestar);
      write('Unesite broj polaganih ispita [0-50]: '); readln(student.brocena);
      for j:=1 to student.brocena do
        begin
      write('Unesite ',j,'. predmet: '); readln(student.ocene[i].predmet);
      write('Dan polaganja: '); readln(student.ocene[i].datum.dan);
      write('Mesec polaganja: '); readln(student.ocene[i].datum.mesec);
      write('Godina polaganja [75-99]: '); readln(student.ocene[i].datum.godina);
      write('Dobijena ocena je: '); readln(student.ocene[i].ocena)
    end;
      write(datstud,student)
    end
end.  


Code:

program Modifikacija (datstud,prosek8);
  type
    zapstud=record
              ime:string;
          indeks:record
                   regbr:1..9999;
               godupisa:75..99
             end;
          profil:string;
          semestar:1..10;
          brocena:0..50;
          ocene:array [1..50] of record
                                  predmet:string;
                      datum:record
                              dan:1..31;
                          mesec:1..12;
                          godina:75..99
                        end;
                      ocena:5..10
                    end
        end;
  var 
    datstud,prosek8: file of zapstud;
    student:zapstud;
    i,n:integer;
    prosek:real;
    
begin
  assign(datstud,'student.dat'); reset(datstud);
  assign(prosek8,'student8.dat'); rewrite(prosek8);
  while not eof(datstud) do
    begin
      read(datstud,student);
      prosek:=0;
      n:=0;
      for i:=1 to student.brocena do
        if student.ocene[i].ocena>5 then
      begin
        prosek:=prosek+student.ocene[i].ocena;
        n:=n+1
      end;
      if n>0 then
        begin
      prosek:=prosek/n;
      if prosek>=8 then write(prosek8,student)
    end
    end
end.


Code:

program Citanje (prosek8,output);
  type
    zapstud=record
              ime:string;
          indeks:record
                   regbr:1..9999;
               godupisa:75..99
             end;
          profil:string;
          semestar:1..10;
          brocena:0..50;
          ocene:array [1..50] of record
                                  predmet:string;
                      datum:record
                              dan:1..31;
                          mesec:1..12;
                          godina:75..99
                        end;
                      ocena:5..10
                    end
        end;
  var 
    prosek8: file of zapstud;
    student:zapstud;
    
begin
  assign(prosek8,'student8.dat'); reset(prosek8);
  writeln('***** SPISAK STUDENATA SA PROSEKOM >= 8 *****');
  while not eof(prosek8) do 
    begin
      read(prosek8,student);
      writeln(student.ime)
    end
end.


Ovaj code tag je malo ruzno izformatirao c&p kod,ali mislim da je i dalje razumljivo.

 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.221.EUnet.yu



+1 Profil

icon Re: Formiranje nove datoteke iz postojece pod izvesnim kriterijumom07.09.2004. u 21:09 - pre 238 meseci
Iskopirao sam tvoj kod u Delphi, malo izmenio, ali sustina je ista, i sve radi. Pitanje je da li pravis gresku pri unosu podataka. Evo koda koji sam probao (nije slozen zbog brzine):


Code:

procedure TForm1.Button1Click(Sender: TObject);
Var
    datstud: file of zapstud;
    student:zapstud;
    i,n,j:integer;
begin
  assignfile(datstud,'c:\student.dat');
  rewrite(datstud);
  n := 2;
  student.brocena := 2;
  student.ocene[1].ocena := 9;
  student.ocene[2].ocena := 9;
  write(datstud,student);
  student.brocena := 2;
  student.ocene[1].ocena := 7;
  student.ocene[2].ocena := 7;
  write(datstud,student);
  CloseFile(datstud);
end;

procedure TForm1.Button2Click(Sender: TObject);
var 
    datstud,prosek8: file of zapstud;
    student:zapstud;
    i,n:integer;
    prosek:real;
    
begin
  assignFile(datstud,'c:\student.dat'); reset(datstud);
  assignFile(prosek8,'c:\student8.dat'); rewrite(prosek8);
  while not eof(datstud) do
    begin
      read(datstud,student);
      prosek:=0;
      n:=0;
      for i:=1 to student.brocena do
        if student.ocene[i].ocena>5 then
      begin
        prosek:=prosek+student.ocene[i].ocena;
        n:=n+1
      end;
      if n>0 then
        begin
      prosek:=prosek/n;
      if prosek>=8 then write(prosek8,student)
    end
    end;

    CloseFile(datstud);
    CloseFile(prosek8);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
    prosek8: file of zapstud;
    student:zapstud;
    i : integer;
begin
  i := 0;
  assignFile(prosek8,'c:\student8.dat');
  reset(prosek8);
  while not eof(prosek8) do
    begin
       read(prosek8,student);
       Inc(i);
    end
   Caption := IntToStr(i);
   CloseFile(prosek8);
end;
 
Odgovor na temu

overdose

Član broj: 33563
Poruke: 51
*.cvz.es



Profil

icon Re: Formiranje nove datoteke iz postojece pod izvesnim kriterijumom08.09.2004. u 18:29 - pre 238 meseci
Milose,hvala na proveri.Naveo si me da posumnjam da Free Pascal Compiler pravi problem i sto je najludje to je ispalo tacno.Isti kod sam preveo GNU Pascal Compiler-om i sve je radilo savrseno!

OvErDoSe
 
Odgovor na temu

stameni
Ivan Stamenković

Član broj: 6739
Poruke: 538



+9 Profil

icon Re: Formiranje nove datoteke iz postojece pod izvesnim kriterijumom08.09.2004. u 20:01 - pre 238 meseci
Koju verziju FPC-a si koristio? Ja probah 1.0.10, i kada je target DOS sve prolazi Ok, mereno pod Win32, a verujem da bi prošlo i kad je target Win32.

Moguće je da si koristio Linux kao target...?
 
Odgovor na temu

overdose

Član broj: 33563
Poruke: 51
*.cvz.es



Profil

icon Re: Formiranje nove datoteke iz postojece pod izvesnim kriterijumom08.09.2004. u 20:21 - pre 238 meseci
Koristio sam isto tu verziju.Pozivao sam bez parametara fpc kod.pas.Kompajlirano na Linux-u,izvrsavano na Linux-u.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Formiranje nove datoteke iz postojece pod izvesnim kriterijumom

[ Pregleda: 3368 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.