Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
Situatie olimpici - Atestat informatica
2. Situatie olimpici
Ne propunem sa scriem un program ce va tine evidenta notelor luate de olimpici. Programul va contine campurile "Nume si prenume", "Materie", "Medie" si "Admis". La campul "Admis" vor fi admisi primii "n" elevi de la fiecare materie, "n" fiind dat de utilizator. In acest camp se va completa automat cu "admis" sau "respins". Se va tine cont de conditia ca la o nota sub 8, elevul nu se considera admis.
3. Exlicatia programului
Programul a fost scris in limbajul de programare Pascal si a fost compilat de Free Pascal compiler. Acesta contine sase optiuni pentru gestionarea bazei de date si inca o optiune pentru iesirea din program.
Prima optiune ce raspunde la apasarea tastei 1, se ocupa cu adaugarea datelor intr-un fisier. Va fi cerut numele fisierului si in caz ca se constata neexistenta sa, veti avea la alegere intre crearea fisierului si reintroducerea numelui fisierului. Va urma apoi introducerea datelor in fisier.
Dupa efectuarea fiecarei operatii veti fi intrebat daca doriti una noua. Daca doriti atunci apasati tasta ENTER sau oricare caracter. In caz contrar, introduceti combinatia "nu".
A doua optiune afiseaza datele din memoria interna. Inainte de a alege aceasta optiune efectuati o operatie de adaugare in fisier sau de extragere din fisier.
Optiunea 3 extrage datele dintr-un fisier cu numele dat de utilizator.
A patra optiune afla primii n elevi de la fiecare materie.
A cincea optiune salveaza datele prelucrate anterior de program in fisierul de unde provin.
Optiunea 6 aranjeaza in ordine alfabetica numele elevilor.
Optiunea 0 opreste executia programului. Apasati apoi tasta ENTER pentru a iesi din program.
4. Codul programului
program situatie_olimpici;
type OLIMPICI=record
nume:string;
materie:string;
medie:real;
admis:string;
end;
vector=array[1..100] of OLIMPICI;
var v:vector;
i,n,optiune:integer; alege,nume_fisier:string;
b_alege:boolean;
procedure adaugare_text;
var f:text; nr,loc:integer; str:string; nr2:real;
begin
writeln;
if length(nume_fisier)=0 then
begin
write('Dati numele fisierului: ');
readln(nume_fisier);
end
else
begin
write('Doriti sa adaugati in alt fisier?('da' daca doriti) ');
readln(alege);
if alege='da' then
begin
write('Dati numele fisierului: ');
readln(nume_fisier);
end;
end;
assign(f,nume_fisier);
reset(f);
repeat
if ioresult<>0 then
begin
writeln('Fisierul ',nume_fisier,' nu exista!');
writeln('1: Creare fisier');
writeln('2: Reintroducere nume fisier');
writeln('Dati optiunea: ');
readln(optiune);
case optiune of
1: begin
rewrite(f);
reset(f);
end;
2: begin
write('Dati numele fisierului: ');
readln(nume_fisier);
assign(f,nume_fisier);
reset(f)
end
else
writeln('Optiune incorecta!');
end;
end;
until ioresult=0;
write('Dati numarul de elevi ce doriti sa adaugati: ');
readln(nr);
append(f);
for i:=1 to nr do
with v[i] do
begin
writeln;
write('nume si prenume: '); readln(nume);
writeln(f,nume);
write('materia: ');readln(materie);
writeln(f,materie);
write('medie: '); readln(medie);
writeln(f,medie:2:2);
admis:='necunoscut';
writeln(f,admis);
end;
reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
with v[i] do
begin
readln(f,nume);
readln(f,materie);
readln(f,str);val(str,nr2,loc); medie:=nr2;
readln(f,admis);
end;
end;
n:=i;
close(f);
writeln;
writeln('Datele au fost adaugate in fisierul ',nume_fisier);
end;
procedure afisare;
begin
writeln;
writeln(' Nr | Nume si prenume | Materie | Medie | Admis ');
writeln('-------- ----- ------ - -------- ----- ------ -');
for i:=1 to n do
with v[i] do
writeln(i:3,' |',nume:20,' |',materie:16,' |',medie:8:2,' |',admis:13);
end;
procedure extragere_text;
var f:text; loc:integer; str:string; nr:real;
begin
if length(nume_fisier)=0 then
begin
write('Dati numele fisierului: ');
readln(nume_fisier);
end
else
begin
write('Doriti sa extrageti din alt fisier?('da' daca doriti) ');
readln(alege);
if alege='da' then
begin
write('Dati numele fisierului: ');
readln(nume_fisier);
end;
end;
assign(f,nume_fisier);
reset(f);
repeat
if ioresult<>0 then
begin
write('Fisierul nu exista; reintroduceti: ');
readln(nume_fisier);
assign(f,nume_fisier);
reset(f);
end;
until ioresult=0;
i:=0;
while not eof(f) do
begin
inc(i);
with v[i] do
begin
readln(f,nume);
readln(f,materie);
readln(f,str); val(str,nr,loc); medie:=nr;
readln(f,admis);
end;
end;
n:=i;
close(f);
afisare;
writeln;
writeln('Datele au extrase din fisierul ',nume_fisier);
end;
procedure suprascriere;
var f:text;
begin
writeln;
if length(nume_fisier)=0 then
begin
write('Nu este memorat numele fisierului; reintroduceti numele: ');
readln(nume_fisier);
assign(f,nume_fisier);
rewrite(f);
end;
assign(f,nume_fisier);
rewrite(f);
for i:=1 to n do
with v[i] do
begin
writeln(f,nume);
writeln(f,materie);
writeln(f,medie:2:2);
writeln(f,admis);
end;
close(f);
writeln;
writeln('Datele au fost suprascrise!');
end;
procedure ordonare;
var aux:OLIMPICI;j:integer;
begin
writeln;
for i:=1 to n do
for j:=1 to n-1 do
if v[j].nume > v[j+1].nume then
begin
aux:=v[j];
v[j]:=v[j+1];
v[j+1]:=aux;
end;
afisare;
end;
procedure aflare_olimpici;
var nr,j,k,m:integer; aux:OLIMPICI;
b:array[1..100] of integer;
begin
writeln;
write('Dati nr maxim de elevi admisi: ');
readln(nr);
for i:=1 to n do
for j:=1 to n-1 do
if v[j].materie > v[j+1].materie then
begin
aux:= v[j];
v[j]:=v[j+1];
v[j+1]:=aux;
end;
i:=1;j:=1; b[j]:=0;
while i<=n do
begin
if v[i].materie=v[i+1].materie then
inc(i)
else
begin
inc(j);
b[j]:=i;
inc(i);
end;
end;
m:=j;
for j:=1 to m-1 do
begin
for i:=b[j]+1 to b[j+1] do
for k:=b[j]+1 to b[j+1]-1 do
if v[k].medie < v[k+1].medie then
begin
aux:= v[k];
v[k]:=v[k+1];
v[k+1]:=aux;
end;
if nr < (b[j+1]-b[j]) then
begin
for i:=(b[j]+1) to b[j]+nr do
with v[i] do
begin
if medie >8 then
admis:='admis'
else
admis:='respins';
end;
for i:=b[j]+nr+1 to b[j+1] do
v[i].admis:='respins';
end
else
begin
for i:=b[j] to b[j+1] do
if v[i].medie >= 8 then
v[i].admis:='admis'
else
v[i].admis:='respins';
end;
for i:=b[j]+1 to b[j+1] do
for k:=b[j]+1 to b[j+1]-1 do
if v[k].nume > v[k+1].nume then
begin
aux:=v[k];
v[k]:=v[k+1];
v[k+1]:=aux;
end;
end;
afisare;
end;
begin
writeln('SITUATIE OLIMPICI':45);
repeat
b_alege:=false;
writeln;
writeln('1: Adaugare date intr-un fisier sau creare fisier si introducere date');
writeln('2: Afisare date');
writeln('3: Extragere date dintr-un fisier');
writeln('4: Evidentierea primilor 'n' olimpici admisi la etapa urmatoare');
writeln('5: Salvarea datelor din memoria programului peste datele din fisierul deschis');
writeln('6: Aranjare in ordine alfabetica');
writeln('0: Iesire din program');
writeln;
write('Dati optiunea: ');
readln(optiune);
case optiune of
1: adaugare_text;
2: afisare;
3: extragere_text;
4: aflare_olimpici;
5: suprascriere;
6: ordonare;
0: break
else
writeln('Optiune incorecta!');
end;
writeln;
write('Doriti sa efectuati o alta operatie?('nu' daca nu doriti) ');
readln(alege);
if alege='nu' then
b_alege:=true;
until b_alege;
writeln;
writeln('Ati ales sa iesiti din SITUATIE OLIMPICI');
readln;
end.
5. Bibliografie
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre:
|
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |