Sunteți pe pagina 1din 28

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ 1. S se calculeze: S=1+1*2+1*2*3++1*2*3**n, unde n se citete de la tastatur.

. program pr_1; var n,i,s,p:longint; begin writeln('n=');readln(n); s:=0; p:=1; for i:=1 to n do begin p:=p*i; s:=s+p; end; writeln('suma s=1+1*2+1*2*3+ ... +1*2*3..*n=',s); readln; end. 2. Se citete un numr natural n. Afiai al n-lea termen al irului lui Fibonacci. Folosii o funcie care ntoarce cel de-al n-lea termen al irului lui Fibonacci. program pr_2; var i,n:integer; sf:array[1..100] of longint; function nf(n:integer):longint; begin sf[1]:=1; sf[2]:=1; i:=2; while i<n do begin i:=i+1; sf[i]:=sf[i-1]+sf[i-2]; end; if n=1 then nf:=sf[1] else nf:=sf[i]; end; begin write('n=');readln(n); writeln(nf(n)); end. 3. Se citesc de la tastatur 2 numere ntregi a i b (a<b). Creai fiierul a.txt care s conin toate numerele prime din intervalul [a,b] program Pr_3; var f:text;

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ a,b,i:integer; function prim(x:integer):boolean; var d:integer; begin d:=2; prim:=TRUE; while d<=sqrt(x) do begin if x mod d=0 then begin prim:=FALSE; exit; end; d:=d+1; end; end; begin write('a=');readln(a); write('b=');readln(b); if a<=1 then a:=2; assign(f,'a.txt'); rewrite(f); for i:=a to b do if prim(i) then write(f,i,' '); close(f); end. 4. Se citesc de la tastatur 2 numere ntregi a i b (a<b). Afiai numrul care are suma cifrelor maxim. Pentru aflarea sumei cifrelor unui numr se va folosi o funcie care are ca parametru un numr ntreg i returneaza suma cifrelor lui. program Pr_4; var a,b,i:integer; function sumcif(x:integer):integer; var d:integer; begin d:=0; repeat d:=d+(x mod 10); x:=x div 10; until x=0; sumcif:=d; end; begin write('a=');readln(a); write('b=');readln(b); if sumcif(a)>(sumcif(b)) then writeln(a)

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ else writeln(b); end. 5. Creai fiierul trei.out care s conin pe prima linie toate numerele de trei cifre divizibile cu suma cifrelor lor. program pr_5; var i,x:integer; f:text; function suma(n:integer):integer; var r,s:integer; begin s:=0; while n<>0 do begin r:=n mod 10; n:=n div 10; s:=s+r; end; suma:=s; end; begin assign(f,'trei.out'); rewrite(f); for i:=100 to 999 do begin x:=suma(i); if i mod x=0 then write(f,i,' '); end; close(f); readln; end. 6. S se afieze n fiierul tri1.txt triunghiul de numere: n n-1 n-23 2 1 3 2 1 2 1 1 unde n este un numr natural citit de la tastatur. program pr_6; var n,i,j:integer; begin write('n=');readln(n); for i:=1 to n do begin for j:=1 to N+1-I do write(j,' '); writeln;

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ end; end. 7. S se afieze n fiierul tri2.txt triunghiul de numere: 1 2 3. N 1 2 3 1 2 1

unde n este un numr natural citit de la tastatur. program pr_7; var n,i,j:integer; begin write('n=');readln(n); for i:=1 to n do begin for j:=1 to n+1-i do write(j,' '); writeln; end; end. 8. Se citesc doi vectori u i v cu cte n elemente fiecare. Scriei un program care determina i afieaz suma celor doi vectori. Citirea, afiarea i suma vectorilor se vor face folosind proceduri. program pr_8; type vector=array[1..100]of real; var v,u,s:vector; i,n:integer; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure citire1(n:integer;var u:vector); begin for i:=1 to n do begin write('u[',i,']='); readln(u[i]); end; end; procedure tiparire(n:integer;s:vector); begin for i:=1 to n do write(s[i]:4:2,' '); readln;

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ end; procedure suma(n:integer;var v,u:vector); begin for i:=1 to n do s[i]:=v[i]+u[i]; end; BEGIN writeln('n=');readln(n); citire(n,v); citire(n,u); suma(n,v,u); tiparire(n,s); readln; end. 9. Se citete de la tastatur un ir de numere reale. Scriei programul care afieaz valoarea elementului minim din ir. Pentru citirea, afiarea irului precum i pentru determinarea minimului din ir se vor folosi subprograme. program pr_9; type vector=array[1..100]of real; var v:vector; min:real; i,n:integer; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire; begin for i:=1 to n do write(v[i]:4:2,' '); readln; end; procedure minim(n:integer;var v:vector); begin min:=v[1]; for i:=2 to n do if v[i]<min then min:=v[i]; writeln('Minimul este:',min :4 :2 ); end; BEGIN writeln('n=');readln(n); citire(n,v); minim(n,v); tiparire; readln; end.

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ 10. Se citete de la tastatur un ir de numere intregi. Scriei programul care afieaz valoarea elementului maxim din ir. Pentru citirea, afiarea irului precum i pentru determinarea maximului din ir se vor folosi subprograme program pr_10; type vector=array[1..100]of integer; var v:vector; i,n,max:integer; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire; begin for i:=1 to n do write(v[i],' '); readln; end; procedure maxim(n:integer;var v:vector); begin max:=v[1]; for i:=2 to n do if v[i]>max then max:=v[i]; writeln('Maximul este:',max ); end; BEGIN writeln('n=');readln(n); citire(n,v); maxim(n,v); tiparire; readln; end. 11. Se citete de la tastatur un vector de numere ntregi i un numr natural k nenul. Creai un nou vector care s conin toate elementele din vectorul dat care se divid cu k. Crearea noului vector se va realiza intr-un subprogram. program pr_11; type vector=array[1..100] of integer; var i,n,k,l:integer; a,b:vector; procedure calcul(var a:vector; n:integer); begin l:=1; for i:=1 to n do if a[i] mod k=0 then begin

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ b[l]:=a[i]; l:=l+1; end; end; procedure citire(var a:vector; n:integer); begin for i:=1 to n do begin write('a[',i,']='); read (a[i]); end; end; procedure afisare(var a:vector; n:integer); begin for i:=1 to l-1 do write(b[i]:3); end; begin write('n=');readln(n); write('k=');readln(k); citire(a,n); calcul(a,n); afisare(a,n); readln; end. 12. Se citete de la tastatur un vector de numere reale. Scriei programul care afieaz valoarea elementului minim din vector precum i poziiile pe care acesta apare n vector. Pentru citirea, afiarea elementelor vectorului precum i pentru determinarea minimului din vector se vor folosi subprograme. De recalculat pozitiile program pr_12; type vector=array[1..100]of real; var v,u:vector; i,n,l:integer; min:real; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire; begin for i:=1 to n do write(v[i]:4:2,' '); readln; end; procedure minim(n:integer;var v:vector);

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ begin min:=v[1];l:=1; for i:=2 to n do if v[i]<min then begin min:=v[i]; v[l]:=i; l:=l+1; end; writeln('Minimul este:',min:4:2) ; for i :=1 to l do write( si se afla pe pozitia ',u[l]); end; BEGIN write('n=');read(n); citire(n,v); minim(n,v); tiparire; readln; end. 13. Se citete de la tastatur un vector de numere ntregi (folosind un subprogram). Sunt toate elementele din vector nenule? program pr_13; type vector=array[1..100]of integer; var v,a:vector; i,n,l:integer; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure verific_elemente_nule(n:integer;var v:vector); begin l:=0; for i:=1 to n do if v[i]<>0 then l:=1; if l=0 then writeln('toate elementele sunt nule') else writeln('exixta elemente nenule in vector'); end; procedure tiparire; begin for i:=1 to n do write(v[i],' '); readln; end; BEGIN write('n=');read(n);

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ citire(n,v); verific_elemente_nule(n,v); tiparire; readln; end. 14. Se citete de la tastatur un vector de numere ntregi pozitive. Creai un nou vector care sa conina inversul fiecrui element din vectorul dat Afiai noul vector. Pentru aflarea inversului unui numar se va folosi o functie. Obs: inversul lui 123 este 321. program pr_14; type vector=array[1..100]of integer; var v:vector; i,n,l,m,nn:integer; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire; begin for i:=1 to n do write(v[i],' '); readln; end; function inv(nr:integer):integer; var m,nn:longint; begin m:=v[i]; nn:=0; repeat nn:=nn*10+m mod 10; m:=m div 10; until m=0; inv:=nn; end; procedure calculez_invers(n:integer;var v:vector); begin for i:=1 to n do v[i]:=inv(v[i]); end; BEGIN write('n=');read(n); citire(n,v); calculez_invers(n,v); tiparire; readln; end.

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ 15. Se citete de la tastatur un vector de numere ntregi Afiai cte numere perfecte sunt n vector. Un numr este perfect dac este egal cu suma divizorilor si mai mici dect el. (ex: 6=1+2+3) se va folosi un subprogram care verifica aceasta proprietate. program pr_15; type vector=array[1..100]of integer; var v,a:vector; i,n,l,j:integer; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire; begin for i:=1 to n do write(v[i],' '); readln; end; procedure perfecte(n:integer;var v:vector); var s:integer; begin l:=0; for i:=1 to n do begin s:=0; for j:=1 to v[i]-1 do if v[i] mod j=0 then s:=s+j; if s=v[i] then l:=l+1; end; writeln('In sir sunt ', l, ' numere perfecte'); end; BEGIN write('n=');read(n); citire(n,v); perfecte(n,v); tiparire; readln; end. 16. Se citete de la tastatur un vector de numere ntregi (folosind un subprogram). S se scrie un program care calculeaz i afieaz maximul dintre elementele pare ale vectorului sau afieaz un mesaj n cazul n care nu exist numere pare n vector. program pr_16; const max_inf=1.e-5; type vector=array[1..100]of integer; var v:vector; i,n,l:integer;

10

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ max:real; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire; begin for i:=1 to n do write(v[i],' '); readln; end; procedure maxim (n:integer;var v:vector); begin max:=max_inf; for i:=1 to n do if v[i]mod 2 =0 then if v[i]>max then max:=v[i]; if max<>max_inf then writeln('Maximul este:',max:4:2) else writeln(' Nu exista elemente pare'); end; BEGIN write('n=');read(n); write(1.e-5); citire(n,v); maxim(n,v); tiparire; readln; end. 17. Se citete de la tastatur un vector de numere ntregi (folosind un subprogram). S se scrie un program care calculeaz i afieaz media aritmetic a elementelor impare din vector sau afieaz un mesaj n cazul n care nu exist numere impare n vector. program pr_17; type vector=array[1..100]of integer; var v:vector; i,n,l,s:integer; ma:real; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire;

11

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ begin for i:=1 to n do write(v[i],' '); readln; end; procedure media_aritmetica (n:integer;var v:vector); begin l:=0;s:=0; for i:=1 to n do if v[i]mod 2 <>0 then begin s:=s+v[i]; l:=l+1; end; if l<>0 then ma:=s/l else ma:=0; if ma<>0 then writeln('Media ariotmetica este:',ma:4:2) else writeln(' Nu exista elemente impare'); end; BEGIN write('n=');read(n); citire(n,v); media_aritmetica(n,v); tiparire; readln; end. 18. Se citete de la tastatura un vector cu n elemente numere reale. Afiai vectorul obinut dup ordonarea cresctoare a elementelor sale. Ordonarea se va face ntr-un subprogram ce primete ca parametru elementele irului i le returneaz ordonate. program pr_18; type vector=array[1..100] of real; var v:vector; i,n:integer; aux:real; gasit:boolean; procedure citire(var v:vector; n:integer); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire; begin for i:=1 to n do write(v[i]:4:2,' '); readln; end; procedure ordonare (var v:vector;n:integer); begin

12

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ repeat gasit:=true; for i:=1 to n-1 do if v[i]>v[i+1] then begin aux:=v[i]; v[i]:=v[i+1]; v[i+1]:=aux; gasit:=false; end; until gasit; end; BEGIN write('n=');read(n); citire(v,n); ordonare(v,n); tiparire; readln; end. 19. Se citete de la tastatura o matrice cu n linii i m coloane. S se afieze matricea i suma elementelor pozitive din matrice. Calculul sumei se va face cu ajutorul unui subprogram ce primete ca parametru matricea i returneaz suma. program Pr_19; type matrice=array[1..100,1..100] of integer; var n,m,i,j,s:integer; a:matrice; procedure suma(var a:matrice); begin s:=0; for i:=1 to n do for j:=1 to m do if a[i,j]>0 then s:=s+a[i,j]; end; begin write('n=');readln(n); write('m=');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; suma(a); writeln('Suma elementelor pozitive este ',s); for i:=1 to n do begin for j:=1 to n do write(a[i,j],' ' ); writeln;

13

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ end; readln; end. 20. Se citete de la tastatura o matrice ptratic. S se afieze matricea i elementul minim din matrice. Calculul valorii minime se va face cu ajutorul unui subprogram ce primeste ca parametru matricea i returneaz minimul elementelor ei. program Pr_20; type matrice=array[1..100,1..100] of integer; var n,m,i,j,min:integer; a:matrice; procedure minim(var a:matrice); begin min:=a[1,1]; for i:=1 to n do for j:=1 to m do if a[i,j]<min then min:=a[i,j]; end; begin write('n=');readln(n); write('m=');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; minim(a); writeln('Minimul elementelor este ',min); for i:=1 to n do begin for j:=1 to n do write(a[i,j],' ' ); writeln; end; readln; end. 21. Se citete de la tastatura o matrice ptratic. S se afieze matricea i elementul maxim din matrice. Calculul valorii maxime se va face cu ajutorul unui subprogram ce primeste ca parametru matricea i returneaz maximul elementelor ei. program Pr_21; type matrice=array[1..100,1..100] of integer; var n,m,i,j,max:integer; a:matrice; procedure maxim(var a:matrice); begin min:=a[1,1];

14

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ for i:=1 to n do for j:=1 to m do if a[i,j]>max then max:=a[i,j]; end; begin write('n=');readln(n); write('m=');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; maxim(a); writeln('Maximul elementelor este ',max); for i:=1 to n do begin for j:=1 to n do write(a[i,j],' ' ); writeln; end; readln; end. 22. Se citete de la tastatura un numr natural N. Afiai al N-lea termen al irului lui Fibonacci. Folosii o funcie care ntoarce cel de-al N-lea termen al irului lui Fibonacci. program Pr_22; var i,n:integer; sf:array[1..100] of longint; function nf(n:integer):longint; begin sf[1]:=1; sf[2]:=1; i:=2; while i<n do begin i:=i+1; sf[i]:=sf[i-1]+sf[i-2]; end; if n=1 then nf:=sf[1] else nf:=sf[i]; end; begin write('n=');readln(n); writeln(nf(n)); end.

15

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ 23. Se citesc notele unui student obinute la cele n examene din timpul unui an universitar. S se determine numrul de examene nepromovate precum i care a fost cea mai mare not obinut. program pr_23; type vector=array[1..100]of real; vector1=array[1..100] of integer; var v:vector; u:vector1; i,n,l:integer; max:real; procedure citire(n:integer;var v:vector); begin for i:=1 to n do begin write('v[',i,']='); readln(v[i]); end; end; procedure tiparire; begin writeln('Notele obtinute de student sunt: ' ); for i:=1 to n do write(v[i]:4:2,' '); readln; end; procedure verific(n:integer;var v:vector); begin max:=v[1];l:=0; for i:=1 to n do begin if v[i]<5 then l:=l+1; if v[i]>max then max:=v[i]; end; writeln('Nota maxima este:',max:4:2) ; writeln('numarul de examene nepromovate este ', l); end; BEGIN write('Introduceti notele studentului');read(n); citire(n,v); verific(n,v); tiparire; readln; end. 24. Se consider o matrice neptratic (nxm) care conine elemente de tip real. Afiai matricea i maximul de pe fiecare coloan a unei matrice. program pr_24; type matrice=array[1..10,1..10] of integer; var a:matrice; m,n,max:integer;

16

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ procedure citire(var a:matrice); var i,j:integer; begin for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; end; procedure afisare(var a:matrice); var i,j:integer; begin for i:=1 to n do begin for j:=1 to m do write (a[i,j]:3); writeln; end; end; procedure maxim; var i,j:integer; begin for j:=1 to m do begin max:=a[1,j]; for i:=1 to n do if max<a[i,j] then max:=a[i,j]; writeln('maximul de pe coloana ',j,'este',max); end; end; begin write('n=');readln(n); write('m=');readln(m); citire(a); afisare(a); maxim; readln; end. 25. Se d o matrice A nepatratic (n*m). S se construiasc o matrice B cu 2 coloane i n linii care s conin indicii elementelor subunitare pozitive ale matricei A. Afiai cele 2 matrici. program pr_25; var n,m,i,j,k:integer; a:array [1..100,1..100] of real; b:array [1..100,1..2] of integer; begin write('n=');readln(n); write('m=');readln(m); for i:=1 to n do for j:=1 to m do begin

17

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ write('a[',i,',',j,']='); readln(a[i,j]); end; k:=0; for i:=1 to n do for j:=1 to m do if (k<=n) and (a[i,j]>0) and (a[i,j]<1) then begin k:=k+1; b[k,1]:=i; b[k,2]:=j; end; writeln('matricea a are elementele: '); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:3:1,' '); writeln; end; writeln('maricea b are elementele: '); for i:=1 to n do begin for j:=1 to 2 do write(b[i,j],' '); writeln; end; end. 26. Se d o matrice ptratic A. Afiai matricea. S se nlocuiasc elementele situate pe diagonala principal i pe diagonala secundar cu valoarea 0 (zero). Afiai noua matrice. program Pr_26; type matrice=array[1..100,1..100] of integer; var n,i,j:integer; a:matrice; begin write('n=');readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to n do begin j:=i; a[i,j]:=0; end; for i:=1 to n do begin

18

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ j:=n+1-i; a[i,j]:=0; end; for i:=1 to n do begin for j:=1 to n do write(a[i,j],' ' ); writeln; end; readln; end. 27. Se d o matrice ptratic A. Afiai matricea i numrul elementelor pare de sub diagonala principal. program Pr_27; type matrice=array[1..100,1..100] of integer; var n,i,j,l:integer; a:matrice; begin write('n=');readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']='); readln(a[i,j]); end; l:=0; for i:=2 to n do for j:=1 to i-1 do if a[i,j] mod 2=0 then l:=l+1; writeln('sub diagonala principala sunt',l,' numere pare'); for i:=1 to n do begin for j:=1 to n do write(a[i,j],' ' ); writeln; end; readln end. 28. Se consider o matrice de dimensiune n*m care conine elemente ntregi. S se afieze suma elementelor pare de pe fiecare coloan. program Pr_28; type matrice=array[1..100,1..100] of integer; var n,m,i,j,l:integer; a:matrice; begin write('n=');readln(n);

19

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ write('m=');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; for j:=1 to m do begin s:=0; for i:=1 to n do; s:=s+a[i,j]; writeln('Suma elementelor pe coloana ',j,' este',s); end; for i:=1 to n do begin for j:=1 to n do write(a[i,j],' ' ); writeln; end; readln; end. 29. Se consider o matrice de dimensiune n*m care conine elemente ntregi. S se afieze numrul elementelor impare de pe fiecare linie. program Pr_29; type matrice=array[1..100,1..100] of integer; var n,m,i,j,s:integer; a:matrice; begin write('n=');readln(n); write('m=');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to n do begin s:=0; for j:=1 to m do if a[i,j]mod 2 <>0 then s:=s+1; writeln('Numartul de elemente impare pe linia ',i,' este',s); end; for i:=1 to n do begin for j:=1 to m do write(a[i,j],' ' );

20

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ writeln; end; readln; end. 30. S se construiasc un tablou ptratic de dimensiune n2 (1<= n<=50) cu primele n2 numere pare ncepnd cu 2. Exemplu: Pentru n=4 se va afia: 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 program Pr_30; type matrice=array[1..100,1..100] of integer; var n,i,j,s:integer; a:matrice; begin write('n=');readln(n); s:=0; for i:=1 to n do for j:=1 to n do begin s:=s+2; a[i,j]:=s; end; for i:=1 to n do begin for j:=1 to n do write(a[i,j],' ' ); writeln; end; readln end. 31. Se d un tablou bidimensional cu n linii i m coloane (1<= n, m< =50) avnd componente ntregi. S se determine cel mai mare numr de pe marginea tabloului Program pr_31; type matrice=array [1..10,1..10] of integer; var a:matrice; m,n :integer; procedure citire (var a:matrice); var i,j :integer; begin for i:=1 to n do for j:=1 to m do begin write ('a[',i,',',j,']=');readln(a[i,j]); end; end;

21

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ procedure tiparire (var a:matrice); var i,j :integer; begin for i:=1 to n do begin for j:=1 to m do write (a[i,j] :3); writeln end; end; procedure maxim (var a:matrice); var i,j,max :integer; begin max := a[1,1]; for i:=1 to n do for j:=1 to m do begin if (i=1) or (j=1) or (i=n) or (j=n) then if a[i,j] >max then max:=a[i,j]; end; writeln('cel mai mare',max); end; begin write('n=');readln(n); write('m=');readln(m); citire(a); tiparire(a); maxim(a); readln; end. 32. S se verifice dac o matrice patratic este triunghiular superioar (toate elementele aflate sub diagonala principal sunt nule ). program Pr_32; type matrice=array[1..100,1..100] of integer; var n,i,j,l:integer; a:matrice; begin write('n=');readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']='); readln(a[i,j]); end; l:=0; for i:=2 to n do for j:=1 to i-1 do if a[i,j]<>0 then l:=1; if l=0 then writeln('Matricea este superior triunghiulara') else writeln('Matricea nu este superior triunghiulara');

22

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ for i:=1 to n do begin for j:=1 to n do write(a[i,j],' ' ); writeln; end; readln end. 33. Se d o matrice ptratic A de dimensiune n*n. S se verifice dac matricea este simetric (adic aij=aji , 1<=i,j<=n). program Pr_33; type matrice=array [1..100,1..100]of integer; var a:matrice; n,i,j:integer; q:boolean; begin write('n=');readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']='); readln(a[i,j]); end; q:=true; for i:=1 to n do for j:=1 to n do if a[i,j]<>a[j,i] then q:=false; if q then write('matricea este simetrica') else write('matricea nu este simetrica'); readln; end. 34. Se citete de la tastatur un ir de caractere s ce reprezint un cuvnt din dicionarul limbii romne. S se scrie acest cuvnt n limba psreasc, adic se insereaz n ir dup fiecare vocal subirul format din litera p i vocala respectiv. Exemplu: s= acoperire Rezult s =apacoporeperipirepe program pr_34 ; var vocale:set of char; s:string; i,n:integer; begin vocale :=['a','e','i','o','u']; write('s=');readln(s); n:=length(s); for i:=1 to n do if s[i] in vocale then write (s[i],'p',s[i]) else write (s[i]);

23

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ readln; end. 35. Se citete de la tastatur un ir de caractere s ce reprezint un cuvnt din dicionarul limbii romne. Afiai toate sufixele irului s. Ex: s=vara se va afia a ra ara vara program pr_35; var s:string; j,i,l,n:integer; begin write('Dati sirul de caractere: '); readln(s); l:=length(s); for i:=l downto 1 do begin for j:=i to l do write(s[j]); writeln; end; readln; end. 36. Se citete de la tastatur un ir de caractere s ce reprezint un cuvnt din dicionarul limbii romne. Afiai toate prefixele irului s. Ex: s=vara se va afis v va var vara Program pr_36 ; var s:string; n,i,j:integer; begin write ('s='); readln (s); n:=length (s); for i:= 1 to n do begin for j:= 1 to i do write (s[j]); writeln ; end; readln ; end. 37. Se citete de la tastatur un ir de caractere s ce reprezint un cuvnt din dicionarul limbii romne. Afiai irul obinut prin transformarea literelor mari n mici i a celor mici n mari. program Pr_37; var s:string;

24

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ i,l,m:integer; begin write('dati cuvantul:'); readln(s); l:=length(s); for i:=1 to l do if (ord(s[i])>=65) and (ord(s[i])<=90) then begin m:=ord(s[i])+32; s[i]:=chr(m); end else if (ord(s[i])>=97) and (ord(s[i])<=122) then begin m:=ord(s[i])-32; s[i]:=chr(m); end; writeln(s); readln; end. 38. Se citete de la tastatur un ir de caractere (maxim 25 caractere). Verificati dac cuvantul are proprietatea de palindrom (dac cuvantul citit invers este identic cu cel dat). Ex: cojoc palindrom program Pr_38; var s:string; n,i,j:integer; ok:boolean; begin write('s=');readln(s); n:=length(s); j:=n; ok:=true; for i:=1 to n do begin if s[i]<>s[j] then ok:=false; j:=j-1 end; if ok then write(s,' este palindrom') else write(s,' nu este palindrom'); readln; end. 39. Se definete o nregistrare cu numele MAINA care conine urmtoarele cmpuri: MARCA de tip string; CULOARE de tip string; PRE de tip real; Se citesc n nregistrri de tip MAINA, n numr ntreg. S se afieze toate mainile avnd o anumit culoare citit de la tastatur i cu preul mai mic dect o valoare dat p (citit de la tastatur).

25

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ program Pr_39; type masina=record marca, culoarea:string; pret:real; end; vector=array[1..100] of masina; var v:vector; i,n:integer; min:real; begin write('n='); readln(n); for i:=1 to n do begin write('marca:');readln (v[i].marca); write('culoarea:');readln(v[i].culoarea); write('pret:');readln(v[i].pret); end; min:=v[1].pret; for i:=1 to n do if v[i].pret<min then min:=v[i].pret; for i:=1 to n do if min=v[i].pret then begin writeln(v[i].marca); writeln(v[i].culoarea); writeln(v[i].pret:3:2); end; readln; end. 40. S se determine termenul al n-lea din irul lui Fibonnaci folosind un subprogram recursiv. program Pr_40; var n:word; function fib(n:word):word; begin if n=0 then fib:=1 else if n=1 then fib:=1 else fib:=fib(n-1)+fib(n-2) end; begin write('n=');readln(n); writeln('fib(',n,')=',fib(n)); readln; end. 41. S se calculeze suma primelor n numere naturale folosind un subprogram recursiv.

26

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ program Pr_41; var n:byte; function suma(n:byte):longint; begin if n=0 then suma:=0 else suma:=n+suma(n-1); end; begin write('n=');readln(n); writeln(suma(n)); readln; end. 42. S se afieze suma cifrelor unui numr folosind un subprogram recursiv. program Pr_42; var n:integer; function s(n:integer):integer; begin if n=0 then s:=0 else s:=n mod 10+s(n div 10); end; begin write('n=');readln(n); writeln(s(n)); readln; end. 43. S se afieze cifrele unui numr (fiecare cifr pe o nou linie) folosind un subprogram recursiv. program pr_43; {nerecursiv} var n,x:integer; function cifre(var n:integer):integer; begin x:=n mod 10; n:=n div 10; writeln(x); end; begin writeln('numarul este:');readln(n); repeat cifre(n); until n=0; readln; end. 44. Scriei o funcie recursiv care ridic un numr A la puterea N (A i N numere ntregi) program pr_44;

27

Subiecte de atestat Limbajul Pascal ___________________________________________________________________________ var n,A:byte; function putere(A,n:byte):longint; begin if n=0 then putere:=1 else putere:=A*putere(A,n-1); end; begin write('n=');readln(n); write('A=');readln(A); if A<>0 then writeln(putere(A,n)) else writeln('0'); readln; end. 45. Scriei o funcie recursiv care ntoarce N factorial. program pr_45; var n:byte; function fact(n:byte):longint; begin if n=0 then fact:=1 else fact:=n*fact(n-1); end; begin write('n=');readln(n); writeln(fact(n)); readln; end.

28

S-ar putea să vă placă și