Set 4 - tipul articol
1. La o statie de benzina exista mai multe masini caracterizate prin numar, marca si culoare. Se cere:
a) sa se determine numarul de masini Dacia
b) sa se ordoneze masinele dupa culoare
type masina=record
marca:string[20];
culoare:string[10];
end;
var a:array[1..100]of masina;
n:byte;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
writeln('masina ',i);
write('marca =');readln(a[i].marca);
write('culaore=');readln(a[i].culoare);
end;
end;
procedure afisare;
var i:byte;
begin
for i:=1 to n do
writeln(a[i].marca,' ',a[i].culoare);
writeln;
end;
procedure numar_dacia;
var i,nr:byte;
begin
nr:=0;
for i:=1 to n do
if a[i].marca='Dacia' then nr:=nr+1;
writeln('nr de masini Dacia=', nr);
end;
procedure sortare;
var i,j:byte;aux:masina;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i].culoare>a[j].culoare then
begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
end;
end;
BEGIN
citire;
afisare;
numar_dacia;
sortare;
afisare;
end.
2. Pentru evidenta produselor cosmetice ditnr-undepozit, se defineste o structura cu urmatoarele informatii: codul produslui, denumire,pretul produsului. Cititi informatiile tutror produselor si afisati produsele cu noile preturi (valoarea lui x este 7 daca codul produsului este mai mic decat 500 si 11 in caz contrar). Afisati produsele cu cel mai mare pret dupa scumpire.
type produs=record
cod:integer;
pret:real;
denumire:string[30];
end;
var n:byte;
a:array[1..100]of produs;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do
with a[i] do
begin
writeln('produsul ',i);
write('denumire=');readln(denumire);
write('cod=');readln(cod);
write('pret=');readln(pret);
end;
end;
procedure afisare;
var i:byte;
begin
for i:=1 to n do
writeln(a[i].denumire,' ',a[i].cod,' ',a[i].pret:5:2);
writeln;
end;
procedure schimb_pret;
var i:byte;
begin
for i:=1 to n do
if a[i].cod<500 then a[i].pret:=7
else a[i].pret:=11;
end;
procedure produse_cu_pret_max;
var i:byte;
begin
for i:=1 to n do
if a[i].pret=11 then writeln(a[i].denumire);
end;
BEGIN
citire;
afisare;
schimb_pret;
afisare;
writeln('produse cu pret max');
produse_cu_pret_max;
end.
3. Se citesc de la tastara numele si media generala a n elevi. Se cere sa se afiseze lista elevilor in ordinea descrescatoare a mediilor.
type elev=record
nume:string[40];
medie:real;
end;
var n:byte;
a:array[1..100]of elev;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
with a[i] do
begin
write('pt elevul ',i);
write('nume=');readln(nume);
write('media=');readln(medie);
end;
end;
procedure sortare;
var aux:elev;i,j:byte;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i].medie<a[j].medie then begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
end;
end;
procedure afisare;
var i:byte;
begin
for i:=1 to n do
with a[i] do
writeln(nume,' ',medie);
end;
begin
citire;
sortare;
afisare;
end.