HanuAncutei.com - ARTA de a conversa!
Haine Dama designer roman

Bine ati venit ca musafir! ( Logare | Inregistrare )

> Ajutor Pascal, Ajutor Pascal
Yusuke
mesaj 13 Apr 2008, 01:10 PM
Mesaj #1


Musteriu
*

Grup: Musterii
Mesaje: 1
Inscris: 13 April 08
Forumist Nr.: 11.490



Buna. Doresc sa fac un program in pascal (un catalog).
Acesta este codul:
program catalog;
uses crt;
type materie=record
nume:string[15];
notabs:array[1..20]of string[2];
teza:1..10;
media_sem:array[1..2] of 1..10;
media_anuala:real;
end;
elevi=record
nume:string[30];
materii:array[1..20] of materie;
media_generala:real;
end;
vector=array[1..30] of elevi;
var a,m,n,i,k,j,l:byte;
clasa:vector;
s,aux:string;
d,f,g,h:text;
nteza:array[1..20] of string[15];
procedure aranjare (var clasa:vector); {aranjeaza numele elevilor in ordine alfabetica}
var i,j:byte;
begin
for i:=1 to n-1 do
for j:=2 to n do
if clasa[i].nume>clasa[j].nume then begin
aux:=clasa[i].nume;
clasa[i].nume:=clasa[j].nume;
clasa[j].nume:=aux;
end;
end;
procedure citire; {px citeste datele dintr-un catalog deja existent}
begin
assign(f,'c:/bp/bin/atestat/note.txt');
assign(g,'c:/bp/bin/atestat/materii.txt');
assign(h,'c:/bp/bin/atestat/elevi.txt');
reset(f);
reset(g);
reset(h);
i:=1; j:=1; n:=1; m:=1;
while not eof(h) do begin
readln(h,clasa[i].nume);
i:=i+1;
n:=n+1;
end;
while not eof(g) do begin
readln(g,clasa[1].materii[j].nume);
j:=j+1;
m:=m+1;
end;
for i:=2 to n do
for j:=1 to m do
clasa[i].materii[j].nume:=clasa[1].materii[j].nume;
for i:=2 to n do
for j:=1 to m do
begin
k:=1;
while (not eoln(f))and (not eof(f)) do
begin
read(f,clasa[i].materii[j].notabs[k]);
k:=k+1;
end;
readln(h);
end;
close(f);
close(g);
close(h);
end;
procedure crearecat; {Initializeaza vectorii cu valori si citeste elevii si materiile}
begin
write('Dati nr. de elevi din cls. ');
readln(n);
for i:=1 to n do
begin
write('Dati numele elevului ',i,': ');
readln(clasa[i].nume);
end;
aranjare(clasa);
write('Dati nr. de materii al unei clase:');
readln(m);
for i:=1 to m do
begin
write('Introduceti materia ',i,': ');
readln(clasa[1].materii[i].nume);
end;
for i:=2 to n do
for j:=1 to m do
clasa[i].materii[j]:=clasa[1].materii[j];
for i:=1 to n do
for j:=1 to m do
for k:=1 to 20 do
clasa[i].materii[j].notabs[k]:=' ';
end;
procedure notateza;
var i,j,k:byte;
aux1,aux2:string;
begin
repeat
writeln('Dati numele elevului: ');
readln(aux1);
i:=0;
while (aux1<>clasa[i].nume) and (i<=n) do
i:=i+1;
until aux1=clasa[i].nume;
repeat
writeln('Introduceti materia: ');
readln(aux2);
j:=0;
while (j<=m) and (aux2<>clasa[i].materii[j].nume) do
j:=j+1;
until aux2=clasa[i].materii[j].nume;
writeln('Introduceti teza:');
readln(clasa[i].materii[j].teza);
end;
procedure update; {Actualizeaza note sau absente in catalog}
var i,j,k:byte;
aux1,aux2:string;
begin
repeat
writeln('Dati numele elevului: ');
readln(aux1);
i:=0;
while (aux1<>clasa[i].nume) and (i<=n) do
i:=i+1;
until aux1=clasa[i].nume;
repeat
writeln('Introduceti materia: ');
readln(aux2);
j:=0;
while(aux2<>clasa[i].materii[j].nume) and (j<=m) do
j:=j+1;
until aux2=clasa[i].materii[j].nume;
k:=1;
while clasa[i].materii[j].notabs[k]<>' ' do
k:=k+1;
repeat
writeln('introduceti nota sau "da" pentru absenta elevului ',clasa[i].nume,' la materia ',clasa[i].materii[j].nume,':');
readln(clasa[i].materii[j].notabs[k]);
until(clasa[i].materii[j].notabs[k]='1') or (clasa[i].materii[j].notabs[k]='2') or (clasa[i].materii[j].notabs[k]='3')
or (clasa[i].materii[j].notabs[k]='4') or (clasa[i].materii[j].notabs[k]='5') or (clasa[i].materii[j].notabs[k]='6')
or (clasa[i].materii[j].notabs[k]='7') or (clasa[i].materii[j].notabs[k]='8') or (clasa[i].materii[j].notabs[k]='9')
or (clasa[i].materii[j].notabs[k]='10') or (clasa[i].materii[j].notabs[k]='da');
end;
procedure salvare; {Salveaza in fisier text}
begin
assign(d,'c:/bp/bin/atestat/teza.txt');
assign(f,'c:/bp/bin/atestat/note.txt');
assign(g,'c:/bp/bin/atestat/materii.txt');
assign(h,'c:/bp/bin/atestat/elevi.txt');
rewrite(d);
rewrite(g);
rewrite(h);
rewrite(f);
for i:=1 to n do
writeln(h,clasa[i].nume);
for j:=1 to m do
writeln(g,clasa[1].materii[j].nume);
for i:=1 to n do
for j:=1 to m do begin
for k:=1 to 20 do
write(f,clasa[i].materii[j].notabs[k],' ');
writeln(f);
end;
for i:=1 to n do begin
for j:=1 to m do
writeln(d,clasa[i].materii[j].teza,' ');
writeln(d);
end;
close(d);
close(f);
close(g);
close(h);
end;
procedure afisare; {afiseaza pe ecran notele si absentele unui elev la o anumita materie}
var aux1:string[30];
aux2:string[15];
begin
repeat
writeln('Dati numele elevului: ');
readln(aux1);
i:=0;
while (aux1<>clasa[i].nume) and (i<=n) do
i:=i+1;
until aux1=clasa[i].nume;
repeat
writeln('Introduceti materia: ');
readln(aux2);
j:=0;
while(aux2<>clasa[i].materii[j].nume) and (j<=m) do
j:=j+1;
until aux2=clasa[i].materii[j].nume;
writeln('Elevul selectat este: ',clasa[i].nume);
writeln('Materia selectata este: ',clasa[i].materii[j].nume);
writeln('Notele acestui elev sunt: ');
a:=0;
for k:=1 to 20 do
if clasa[i].materii[j].notabs[k]='da' then a:=a+1
else write( clasa[i].materii[j].notabs[k],' ');
writeln;
writeln('Nota din teza este: ',clasa[i].materii[j].teza);
writeln;
writeln(clasa[i].nume,' are ',a,' absente la ',clasa[i].materii[j].nume);
end;
begin {Program principal}
citire;
clrscr;
writeln('Introduceti 1 pentru a crea un catalog');
writeln('Introduceti 2 pentru a da note unui elev');
writeln('Introduceti 3 pentru a da nota de la teza');
writeln('Introduceti 4 pentru a vizualiza notele unui elev la o anumita materie');
writeln('Introduceti 5 pentru a iesi din program');
readln(a);
while (a>0) and(a<5) do
begin
case a of
1:crearecat;
2:update;
3:notateza;
4:afisare;
end;
salvare;
writeln('Introduceti 1 pentru a crea un catalog');
writeln('Introduceti 2 pentru a da note unui elev');
writeln('Introduceti 3 pentru a da nota de la teza');
writeln('Introduceti 4 pentru a vizualiza notele unui elev la o anumita materie');
writeln('Introduceti 5 pentru a iesi din program');
readln(a);
salvare;
clrscr;
end;
writeln;
clrscr;
end.

Il rulez, creez catalogul cu elevi, materii si note/absente dar nu-mi functioneaza procedura de citire , care ar trebui sa citeasca datele dintr-un catalog creat anterior, ca sa pot adauga date in plus.
Ma poate ajuta cineva cu ceva indicatii?


Go to the top of the page
 
+Quote Post

Mesaje in acest topic


Reply to this topicStart new topic

 



RSS Versiune Text-Only Data este acum: 25 April 2024 - 12:38 PM
Ceaiuri Medicinale Haine Dama Designer Roman