Una dintre colegele mele a extras din variantele de bac exerciţiile cu structuri.
Archive for the ‘Structuri/ Tipul record’ Category
Structuri – grile bac
Posted in Structuri/ Tipul record, tagged structuri on 11/12/2011| Leave a Comment »
Note lucrare RECORD
Posted in Structuri/ Tipul record, tagged record on 23/01/2010| Leave a Comment »
Grile rezolvate – RECORD
Posted in Structuri/ Tipul record, tagged grila, record on 15/01/2010| Leave a Comment »
1.În declararea alăturată, câmpurile x şi y ale înregistrării pot memora coordonatele carteziene ale unui punct din planul xOy. Scrieţi o secvenţă de instrucţiuni prin executarea căreia se calculează şi se afişează pe ecran distanţa dintre două puncte ale căror coordonate sunt memorate de variabilele A şi B.
type punct=record
x,y:real
end;
var A,B:punct;
d:real;
d:=sqrt(sqr(b.x-a.x)+sqr(b.y-a.y));
writeln(d:2:2);
3.În declararea alăturată, câmpurile x şi y ale înregistrării pot memora numărătorul, respectiv numitorul unei fracţii. Scrieţi secvenţa de instrucţiuni prin executarea căreia se construieşte în variabila f o fracţie obţinută prin însumarea fracţiilor memorate în variabilele f1 şi f2.
type fractie =record
x,y:integer
end;
var f,f1,f2:fractie;
f.x:=f1.x*f2.y+f2.x*f1.y;
f.y:=f1.y*f2.y;
Probleme rezolvate – RECORD
Posted in Structuri/ Tipul record, tagged probleme, record on 15/01/2010| Leave a Comment »
4.Pentru cei n elevi ai unei clase se cunosc următoarele date: numele, prenumele, numărul de absenţe, media generală. Să se scrie un program care citeşte aceste informaţii, calculează media generală a clasei şi afişează toate informaţiile în ordinea descrescătoare a mediei generale.
type elev=record
nume, prenume:string[50];
nrabs:byte;
media:real;
end;
var v:array[1..30] of elev;
n,i:byte; s:real; aux:elev; ordonat:boolean;
begin
write(‘n=’); readln(n);
for i:=1 to n do
with v[i] do
begin
writeln(‘Datele elevului ‘,i);
write(‘Nume:’); readln(nume);
write(‘Prenume:’); readln(prenume);
write(‘Numarul de absente:’); readln(nrabs);
write(‘Media generala:’); readln(media)
end;
s:=0;
for i:=1 to n do
s:=s+v[i].media;
writeln(‘Media generala a clasei: ‘,s/n:2:2);
repeat
ordonat:=true;
for i:=1 to n-1 do
if v[i].media<v[i+1].media then begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
ordonat:=false
end
until ordonat;
for i:=1 to n do
writeln(v[i].nume,’ ‘,v[i].prenume,’ ‘,v[i].nrabs,’ ‘,v[i].media);
end.
6.Pentru elevii clasei a IX-a profesorul diriginte are nevoie de următoarele informaţii: numele, prenumele, numărul de absenţe, numărul de absente nemotivate, media la purtare.Dintre aceste informaţii, numele, prenumele, numărul de absenţe şi absenţele nemotivate se preiau din catalog (se cunosc), iar media la purtare se calculează în funcţie de absenţele nemotivte astfel:
– între 0-9 absenţe nota 10
– între 10-20 absenţe nota 9
– între 21-27 absenţe nota 8
– între 28-35 absenţe nota 7
– între 36-42 absenţe nota 6
– între 43-50 absenţe nota 5
– peste 50 absenţe nota 4
Să se scrie un program care calculează notele la purtare ale elevilor, le afişează, apoi afişează o listă a elevilor ordonată după numărul total de absenţe.
type elev=record
nume, prenume:string[50];
nrabs, nrabsn,mp:byte
end;
var v:array[1..30] of elev;
n,i:byte; aux:elev; ordonat:boolean;
begin
write(‘n=’); readln(n);
for i:=1 to n do
with v[i] do
begin
writeln(‘Datele elevului ‘,i);
write(‘Nume:’); readln(nume);
write(‘Prenume:’); readln(prenume);
write(‘Numarul de absente:’); readln(nrabs);
write(‘Numarul de absente nemotivate:’); readln(nrabsn);
case nrabsn of
0..9 : mp:=10;
10..20: mp:= 9;
21..27 : mp:=8;
28..35 :mp:= 7;
36..42: mp:= 6;
43..50:mp:= 5
else mp:= 4
end;
writeln(‘Media la purtare: ‘,mp)
end;
repeat
ordonat:=true;
for i:=1 to n-1 do
if v[i].nrabs>v[i+1].nrabs then begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
ordonat:=false
end
until ordonat;
for i:=1 to n do
writeln(v[i].nume,’ ‘,v[i].prenume,’ ‘,v[i].nrabs,’ ‘,v[i].nrabsn,’ ‘,v[i].mp);
end.
9.Pentru a scrie catalogul, dirigintele are nevoie de numele şi prenumele elevilor.Se citeşte n (numărul elevilor) apoi n perechi de date.Să se ordoneze alfabetic, după nume, iar pentru elevii cu acelaşi nume să se ordoneze alfabetic după prenume.
type elev=record
nume, prenume:string[50];
end;
var v:array[1..30] of elev;
n,i:byte; aux:elev; ordonat:boolean;
begin
write(‘n=’); readln(n);
for i:=1 to n do
with v[i] do
begin
writeln(‘Datele elevului ‘,i);
write(‘Nume:’); readln(nume);
write(‘Prenume:’); readln(prenume);
end;
repeat
ordonat:=true;
for i:=1 to n-1 do
if v[i].nume>v[i+1].nume then begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
ordonat:=false
end
else if v[i].nume=v[i+1].nume then
if v[i].prenume>v[i+1].prenume then
begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
ordonat:=false
end
until ordonat;
for i:=1 to n do
writeln(v[i].nume,’ ‘,v[i].prenume);
end.
10.N ferme au găini, raţe, porci, vaci şi cai.Se citeşte n, apoi n mulţimi de numere reprezentând numărul găinilor, raţelor, porcilor, vacilor şi al cailor.Să se afişeze ferma care are cele mai multe găini, raţe, porci, vaci, cai şi care are cele mai multe animale.
type ferma=record
nrgaini, nrrate, nrporci, nrvaci, nrcai:integer;
end;
var v:array[1..30] of ferma;
n,i:byte;
begin
write(‘n=’); readln(n);
for i:=1 to n do
with v[i] do
begin
writeln(‘ Numarul animalelor de la ferma ‘,i);
write(‘Numar gaini:’); readln(nrgaini);
write(‘Numar rate:’); readln(nrrate);
write(‘Numar porci:’); readln(nrporci);
write(‘Numar vaci:’); readln(nrvaci);
write(‘Numar cai:’); readln(nrcai);
end;
maxg:=v[1].nrgaini;
maxr:=v[1].nrrate;
maxp:=v[1].nrporci;
maxv:=v[1].nrvaci;
maxc:=v[1].nrcai;
max:=maxg+maxr+maxp+maxv+maxc;
for i:=2 to n do
begin
if v[i].nrgaini>maxg then maxg:=v[i].nrgaini;
if v[i].nrrate>maxr then maxr:=v[i].nrrate;
if v[i].nrporci>maxp then maxp:=v[i].nrporci;
if v[i].nrvaci>maxv then maxv:=v[i].nrvaci;
if v[i].nrcai>maxc then maxc:=v[i].nrcai;
if v[i].nrgaini+v[i].nrrate+v[i].nrporci+v[i].nrvaci+v[i].nrcai>max then
max:=v[i].nrgaini+v[i].nrrate+v[i].nrporci+v[i].nrvaci+v[i].nrcai;
end;
write(‘Fermele cu nr maxim de gaini: ‘);
for i:=1 to n do
if v[i].nrgaini=maxg then write(i,’ ‘);
writeln;
write(‘Fermele cu nr maxim de rate: ‘);
for i:=1 to n do
if v[i].nrrate=maxr then write(i,’ ‘);
writeln;
write(‘Fermele cu nr maxim de porci: ‘);
for i:=1 to n do
if v[i].nrporci=maxp then write(i,’ ‘);
writeln;
write(‘Fermele cu nr maxim de vaci: ‘);
for i:=1 to n do
if v[i].nrvaci=maxv then write(i,’ ‘);
writeln;
write(‘Fermele cu nr maxim de cai: ‘);
for i:=1 to n do
if v[i].nrcai=maxc then write(i,’ ‘);
writeln;
write(‘Fermele cu nr maxim de animale: ‘);
for i:=1 to n do
if v[i].nrgaini+v[i].nrrate+v[i].nrporci+v[i].nrvaci+v[i].nrcai=max then write(i,’ ‘);
end.
Grile record
Posted in Structuri/ Tipul record, tagged grila, record on 12/01/2010| Leave a Comment »
Un set de probleme grila referitoare la tipul de date record luate din variantele de bac:
Probleme propuse record
Posted in Structuri/ Tipul record, tagged probleme, record on 08/01/2010| 1 Comment »
Probleme record: TIPUL RECORD culcluj
Record 3
Posted in Structuri/ Tipul record, tagged probleme, record on 08/01/2010| Leave a Comment »
– accesul simplificat la câmpuri
– vector de înregistrări
1.Se citesc de la tastatură numere complexe. Să se calculeze şi să se afişeze suma şi produsul cel 2 numere.
type complex=record
re, im:integer;
end;
var x,y:complex;
begin
write(‘Introduceti partea reala a primului numar: ‘); readln(x.re);
write(‘Introduceti partea imaginara a primului numar: ‘); readln(x.im);
write(‘Introduceti partea reala a celui de-al doilea numar: ‘); readln(y.re);
write(‘Introduceti partea imaginara a celui de-al doilea numar: ‘); readln(y.im);
writeln(‘Suma celor 2 numere este: ‘, x.re+y.re,’+’, x.im+y.im,’i’);
writeln(‘Produsul celor 2 numere este:’, x.re*y.re-x.im*y.im,’+’, x.re*y.im+x.im*y.re,’i’)
end.
Record 2
Posted in Structuri/ Tipul record, tagged record on 07/01/2010| Leave a Comment »
Continuare:
– atribuire la nivel de variabila record
– accesarea unui câmp al unei varaibile de tip record
– citirea unei variabile de tip record
– afişarea unei variabile de tip record
– record-uri imbricate
Un alt tip de date – tipul record
Posted in Structuri/ Tipul record, tagged record on 06/01/2010| Leave a Comment »
Tipul de date record
– declaraţie
– observaţii
– memorie alocată
– operaţii – atribuirea la nivel de variabilă record