[ overdose @ 07.09.2004. 12:11 ] @
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. |