probleme atestat informatica rezolvate

5
{PB.1 sa se calculeze 1+1*2+1*2*3+.. +1*2*3*...*n. unde n se citeste de la tastatura} program test; var n,s,p,i:integer; begin write('n=');readln(n); s:=0; p:=1; for i:=1 to n do begin p:=p*i; s:=s+p; end; writeln('suma este: ',s); readln; end. {PB.2 se citeste un numar natural n. Afisati al n-ea termen al sirului lui Fibonacci. Folositi o functie care intoarce ce de-al n-lea termen al sirului lui Fibonacci } program fibonaci; var n:longint; function fib(n:longint):longint; begin if n=0 then fib:=0 else if n=1 then fib:=1 else fib:=fib(n- 1)+fib(n-2); end; begin write('n=');readln(n); writeln('elemntul al ',n,'-lea al sirului lui Fibonacci este: ',fib(n)); readln; end. {PB.3 Se citesc de la tastatura 2 numere intregi a si b (a<b). Creati fisierul "a.txt" care sa contina toate numerele prime din intervalul [a,b]} program prim; var a,b,i,k,j:integer; f:text; begin repeat write('a=');readln(a); write('b=');readln(b); until a<b; assign(f,'a.txt'); rewrite(f); i:=a; repeat k:=0; j:=2; while j<=round(sqrt(i)) do begin if i mod j=0 then k:=1; j:=j+1; end; if k=0 then write(f,i,' '); i:=i+1; until i>=b; close(f); readln; end. {PB.4 se citesc de la tastatura 2 numere intregi a si (a<b).Afisati numarul care are suma cifrelor maxima.Pentru aflarea sumei cifrelor unui numar se ca folosi o functie care are ca parametru un numar intreg si returneaza suma cifrelor lui} program sumaa; var a,b:longint; function suma(n:longint):integer; var s:integer; begin s:=0; while n<>0 do begin s:=s+n mod 10; n:=n div 10; end; suma:=s; end; begin repeat write('a=');readln(a); write('b=');readln(b); until a<b; if suma(a)>suma(b) then write('nr care are suma cifrelor maxima este: ',a) else write('nr care are suma cifrelor maxima este: ',b); readln; end. PB.5 Creati fisierul "trei.out" care sa contina pe prima linie toate numerele de 3 cife divizibile cu suma cifrelor lor} program test; var i,n,s,x :integer; f:text; begin assign(f,'trei.out'); rewrite(f); for i:=100 to 999 do begin s:=0; x:=i; while x<>0 do begin s:=s+x mod 10; x:=x div 10; end; if i mod s=0 then write(f,i:4); end; close(f); end. {PB.6 Sa se afiseze in fisierul "tri1.txt" triunghiul de numere n n-1 n- 1 ...3 2 1 ............ .. 3 2 1 2 1 1 unde n este numar natural citit de la tastatura.} program test; var i,n,j:integer; f :text; begin write('n=');readln(n); assign(f,'tri1.txt'); rewrite(f); for i:=n downto 1 do begin for j:=i downto 1 do write(f,j:4); writeln(f); end; close(f); end. {PB.7. Sa se afiseze in fisierul "tri2.txt" triunghiul de numere: 1 2 3 .... n ............ 1 2 3 1 2 1 unde n este un numarul natural citit de la tastatura.} program test; var i,n,j:integer; f:text; begin write('n='); readln(n); assign(f,'tri2.txt'); rewrite(f); for i:=n downto 1 do begin for j:=1 to i do write(f,j:4); writeln(f); end; close(f); end. PB.8 Se citesc 2 vectori u si v cu cate n elemente fiecare.Scrieti un program care determina si afiseaza suma celor doi vectori.Citirea, afisarea si suma vectorilor se vor face folosind proceduri} program test; type sir=array[1..50] of integer; var u,v,s:sir; n,i:integer; procedure citire(var u,v:sir; var n:integer); var i:integer; begin write('introdu nr de elemente:'); readln(n); writeln('introdu primul vector'); for i:=1 to n do begin write('u[',i,']=');readl n(u[i]); end; writeln('introdu al doilea vector'); for i:=1 to n do begin write('v[',i,']=');readl n(v[i]);end; end; procedure afisare(x:sir;n:integer) ; var i:integer; begin for i:=1 to n do write(x[i]:3); writeln ; end; procedure suma(var s:sir;n:integer); var i:integer; begin for i:=1 to n do s[i]:=u[i]+v[i]; end; begin citire(u,v,n); afisare(u,n); afisare(v,n); suma(s,n); afisare(s,n); readln; end. {PB.9 Se citeste de la tastatura un sir de numere reale.Scrieti programul care afiseaza valoarea elementului minim din sir. Pentru citirea,afisarea sirului precum si pentru determinarea minimului din sir se vor folosi subprograme} program test; type sir=array[1..50] of real; var a:sir; n,i:integer; procedure citire(var a:sir; var n:integer); var i:integer; begin write('introdu nr de elemente:');readln(n); writeln('introdu vectorul:'); for i:=1 to n do begin write('a[',i,']=');readl n(a[i]); end;end; procedure afisare(a:sir;n:integer) ; var i:integer; begin for i:=1 to n do write(a[i]:7:2); writeln; end; function minim(n:integer;a:sir):r eal; var i:integer;min:real; begin min:=a[1]; for i:=2 to n do if min>a[i] then min:=a[i]; minim:=min; end; begin citire(a,n); writeln('sirul este:'); afisare(a,n); writeln('minimul din sir este: ',minim(n,a):7:2); readln; end. {PB.10 Se citeste de la tastatura un sir de numere intregi.Scrieti programul care afiseaza valoarea elementului maxim din sir. Pentru citirea,afisarea sirului precum si pentru determinarea maximului din sir se vor folosi subprograme} program test; type sir=array[1..50] of integer; var a:sir; n,i:integer; procedure citire(var a:sir; var n:integer); var i:integer; begin write('introdu nr de elemente:');readln(n); writeln('introdu vectorul:'); for i:=1 to n do begin write('a[',i,']=');readl n(a[i]); end;end; procedure afisare(a:sir;n:integer) ; var i:integer; begin for i:=1 to n do write(a[i]:3); writeln; 1

Upload: ovidiu-motz

Post on 03-Aug-2015

853 views

Category:

Documents


3 download

DESCRIPTION

Probleme atestat informatica rezolvate

TRANSCRIPT

Page 1: Probleme atestat informatica rezolvate

{PB.1 sa se calculeze 1+1*2+1*2*3+..+1*2*3*...*n.unde n se citeste de la tastatura}program test;var n,s,p,i:integer;begin write('n=');readln(n);s:=0;p:=1; for i:=1 to n do begin p:=p*i; s:=s+p; end; writeln('suma este: ',s);readln;end.{PB.2 se citeste un numar natural n.Afisati al n-ea termen al sirului lui Fibonacci.Folositi o functie care intoarce ce de-al n-lea termen al sirului lui Fibonacci }program fibonaci;var n:longint;function fib(n:longint):longint;begin if n=0 then fib:=0 else if n=1 then fib:=1 else fib:=fib(n-1)+fib(n-2);end;beginwrite('n=');readln(n);writeln('elemntul al ',n,'-lea al sirului lui Fibonacci este: ',fib(n));readln;end.{PB.3 Se citesc de la tastatura 2 numere intregi a si b (a<b). Creati fisierul "a.txt" care sa contina toate numerele prime din intervalul [a,b]}program prim;var a,b,i,k,j:integer; f:text;begin repeat write('a=');readln(a); write('b=');readln(b); until a<b;assign(f,'a.txt');rewrite(f); i:=a; repeat k:=0; j:=2; while j<=round(sqrt(i)) do begin if i mod j=0 then k:=1; j:=j+1; end; if k=0 then write(f,i,' '); i:=i+1; until i>=b;close(f);readln;end.{PB.4 se citesc de la tastatura 2 numere intregi a si (a<b).Afisati numarul care are suma cifrelor maxima.Pentru aflarea sumei cifrelor unui numar se ca folosi o functie care are ca parametru un numar intreg si returneaza suma cifrelor lui}program sumaa;var a,b:longint;function suma(n:longint):integer;var s:integer;begin s:=0; while n<>0 do begin s:=s+n mod 10; n:=n div 10; end; suma:=s;end;beginrepeat write('a=');readln(a); write('b=');readln(b);until a<b;if suma(a)>suma(b) then write('nr care are suma cifrelor maxima este: ',a) else write('nr care are suma cifrelor maxima este: ',b);readln;end.

PB.5 Creati fisierul "trei.out" care sa contina pe prima linie toate numerele de 3 cife divizibile cu suma cifrelor lor}program test;var i,n,s,x :integer; f:text;begin assign(f,'trei.out'); rewrite(f);for i:=100 to 999 do begin s:=0; x:=i; while x<>0 do begins:=s+x mod 10; x:=x div 10; end; if i mod s=0 then write(f,i:4); end; close(f); end.{PB.6 Sa se afiseze in fisierul "tri1.txt" triunghiul de numere n n-1 n-1 ...3 2 1 .............. 3 2 1 2 1 1 unde n este numar natural citit de la tastatura.}program test;var i,n,j:integer;f :text;beginwrite('n=');readln(n);assign(f,'tri1.txt');rewrite(f);for i:=n downto 1 do begin for j:=i downto 1 do write(f,j:4); writeln(f); end;close(f);end.{PB.7. Sa se afiseze in fisierul "tri2.txt" triunghiul de numere: 1 2 3 .... n ............ 1 2 3 1 2 1 unde n este un numarul natural citit de la tastatura.}program test;var i,n,j:integer; f:text;beginwrite('n=');readln(n);assign(f,'tri2.txt');rewrite(f);for i:=n downto 1 do begin for j:=1 to i do write(f,j:4); writeln(f); end;close(f);end.

PB.8 Se citesc 2 vectori u si v cu cate n elemente fiecare.Scrieti un program care determina si afiseaza suma celor doi vectori.Citirea, afisarea si suma vectorilor se vor face folosind proceduri}program test;type sir=array[1..50] of integer;var u,v,s:sir; n,i:integer;procedure citire(var u,v:sir; var n:integer);var i:integer;begin write('introdu nr de elemente:'); readln(n); writeln('introdu primul vector'); for i:=1 to n do begin write('u[',i,']=');readln(u[i]); end; writeln('introdu al doilea vector'); for i:=1 to n do begin write('v[',i,']=');readln(v[i]);end;end;procedure afisare(x:sir;n:integer);var i:integer;begin for i:=1 to n do write(x[i]:3); writeln ;end;procedure suma(var s:sir;n:integer);var i:integer;begin for i:=1 to n do s[i]:=u[i]+v[i];end;begincitire(u,v,n);afisare(u,n);afisare(v,n);suma(s,n);afisare(s,n);readln;end.{PB.9 Se citeste de la tastatura un sir de numere reale.Scrieti programul care afiseaza valoarea elementului minim din sir. Pentru citirea,afisarea sirului precum si pentru determinarea minimului din sir se vor folosi subprograme}program test;type sir=array[1..50] of real;var a:sir; n,i:integer;procedure citire(var a:sir; var n:integer);var i:integer;begin write('introdu nr de elemente:');readln(n); writeln('introdu vectorul:'); for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;end;procedure afisare(a:sir;n:integer);var i:integer;begin for i:=1 to n do write(a[i]:7:2);writeln;end;function minim(n:integer;a:sir):real;var i:integer;min:real;begin min:=a[1]; for i:=2 to n do if min>a[i] then min:=a[i];minim:=min;end;begincitire(a,n);writeln('sirul este:');afisare(a,n);writeln('minimul din sir este: ',minim(n,a):7:2);readln;end.

{PB.10 Se citeste de la tastatura un sir de numere intregi.Scrieti programul care afiseaza valoarea elementului maxim din sir. Pentru citirea,afisarea sirului precum si pentru determinarea maximului din sir se vor folosi subprograme}program test;type sir=array[1..50] of integer;var a:sir; n,i:integer;procedure citire(var a:sir; var n:integer);var i:integer;begin write('introdu nr de elemente:');readln(n); writeln('introdu vectorul:'); for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;end;procedure afisare(a:sir;n:integer);var i:integer;begin for i:=1 to n do write(a[i]:3);writeln;end;function maxim(n:integer;a:sir):integer;var i,max:integer;begin max:=a[1]; for i:=2 to n do if max<a[i] then max:=a[i];maxim:=max;end;begincitire(a,n);writeln('sirul este:');afisare(a,n);writeln('maximul din sir este: ',maxim(n,a));readln;end.{PB.11 Se citeste de la tastatura un vector de numere intregi si un numar k natural nenul.Creati un nou vector care sa contina toate elementele din vectorul dat care se divid cu k.Crearea noului vector se va realiza intr-un subprogram}program test;type sir=array[1..50] of integer;var a,b:sir; i,n,k,j,m:integer;procedure creare(var b:sir;var m:integer;a:sir;n,k:integer);var j:integer;begin j:=0; for i:=1 to n do if a[i] mod k=0 then beginj:=j+1;b[j]:=a[i];end; m:=j;end;beginrepeat write('numarul de elemente este:');readln(n);until n>0;for i:=1 to n do beginwrite('a[',i,']=');readln(a[i]); end;repeat write('k='); readln(k);until k>0;creare(b,m,a,n,k); if m<>0 then begin writeln('noul vector este:'); for j:=1 to m do write(b[j]:3); end else write('in vectorul initial nu exista nicio valoare care se divide cu ',k);

readln;end.

{pb.12 Se citeste de la tst un vector de numere reale.Scrieti programul care afiseaza valoarea elementului minim din vector precum si poztiile pe care acesta apare in vector.Se vor folosi subprograme}program test;type sir=array[1..50] of real;var a:sir;n,i:integer;procedure citire(var a:sir; var n:integer);var i:integer;begin write('introdu nr de elemente:');readln(n); writeln('introdu vectorul:'); for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;end;procedure afisare(a:sir;n:integer);var i:integer;begin for i:=1 to n do write(a[i]:6:2);writeln;end;function minim(a:sir;n:integer):real;var i,poz:integer; min:real;beginmin:=32767;for i:=1 to n do if min>a[i] then min:=a[i]; minim:=min;end;begincitire(a,n);afisare(a,n);writeln('minimul din sir este ',minim(a,n):7:2,' si se afla pe pozitiile ');for i:=1 to n do if a[i]=minim(a,n) then write(i,' ');readln;end.{pb.13 Se citeste de la tst un vector de numere intregi.(folosind un subprogram). Sunt toate elementele din vector nenule?}program test;type sir=array[1..50] of integer;var a:sir;i,n:integer;procedure citire(var a:sir; var n:integer);var i:integer;begin write('introdu nr de elemente:');readln(n); writeln('introdu vectorul:'); for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;end;procedure afisare(a:sir;n:integer);var i:integer;begin for i:=1 to n do write(a[i]:3);writeln;end;procedure nenul(a:sir;n:integer);var i,k:integer;begin k:=0; for i:=1 to n do if a[i]=0 then k:=1; if k=0 then write('toate elementele sunt nenule') else write('nu sunt toate elementele nenule');end;begincitire(a,n);afisare(a,n);nenul(a,n);readln;end.

1

Page 2: Probleme atestat informatica rezolvate

{PB.14 Se citeste de la tst un vector de numere intregi pozitive. Creati un nou vector care sa contina inversul fiecarui element din vectorul dat.Afisati noul vector.Pentru aflarea inversului unui nr se va folosi o functie}program test;type sir=array[1..50] of word;var a,b:sir;n,i,j:integer;function invers(x:integer):integer;var i,inv:integer;begin inv:=0; while x<>0 do begin inv:=inv*10 + x mod 10; x:=x div 10; end; invers:=inv;end;beginwrite('n:');readln(n);writeln('introdu sirul');for i:=1 to n do begin repeat write('a[',i,']=');readln(a[i]); until a[i]>0; end;j:=0;for i:=1 to n do begin j:=j+1; b[j]:=invers(a[i]); end;writeln('noul vector este:');for j:=1 to n do write(b[j]:5);readln;end.{pb.15 Se citeste de la tst un vector de nr intregi.Afisati cate numere perfecte sunt in vector.Se va folosi un subprogram care verifica aceasta proprietate}program test;type sir= array[1..50] of integer;var a:sir; i,n,nr:integer;procedure perfect(a:sir;n:integer;var nr:integer);var i,k,s:integer;begin for i:=1 to n do begin s:=0; for k:=1 to a[i] div 2 do if a[i] mod k=0 then s:=s+k; if s=a[i] then nr:=nr+1; end;end;beginwrite('introdu nr de elemente');readln(n);writeln('introdu vectorul');for i:=1 to n do begin write('a[',i,']=');readln(a[I]);END;writeln('sirul introdu este:');for i:=1 to n do write(a[i],' '); writeln;perfect(a,n,nr);writeln('in sir sunt ',nr,' numere perfecte');readln;end.

{PB.16 Se citeste de la tst un vector de numere intregi(folosind subprogram). Sa se scrie un program care calculeaza si afiseaza maximul dintre elementele pare ale vectorului sau afiseaza un mesaj in cazul in care nu exista elemente pare in vector}program test;type sir=array[1..50] of integer;var a:sir;i,n,nr,max:integer;procedure citire(var a:sir; var n:integer);var i:integer;begin write('introdu nr de elemente:');readln(n); writeln('introdu vectorul:'); for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;end;procedure afisare(a:sir;n:integer);var i:integer;begin for i:=1 to n do write(a[i]:3);writeln;end; begin citire(a,n); afisare(a,n); max:=-32767; nr:=0; for i:=1 to n do if (a[i] mod 2=0)and(max<a[i]) then beginmax:=a[i];nr:=nr+1;end;if nr<>0 then write('maximul dintre numerele pare este:',max) else write('nu exista elemente pare in sir');readln;end.{pb.17 Se citeste de la tst un vector de numere intregi(folosinf un subprogram). Sa se scrie un program care calculeaza si afiseaza media aritmetica a elementelor impare din vector sau afiseaza un mesaj in cazul in care nu exista elemente impare}program test;type sir=array[1..50] of integer;var a:sir;n,nr,k,i:integer;procedure citire(var a:sir; var n:integer);var i:integer;begin write('introdu nr de elemente:');readln(n); writeln('introdu vectorul:'); for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;end;procedure afisare(a:sir;n:integer);var i:integer;begin writeln('sirul introdu este:'); for i:=1 to n do write(a[i]:5); writeln; end;

begincitire(a,n);afisare(a,n);nr:=0;k:=0; for i:=1 to n do if a[i] mod 2<>0 then begin nr:=nr+a[i];k:=k+1;end;if k<>0 then writeln('media aritmetica este: ',nr/k:5:3) else write('nu exista elemente impare in sir');readln;end.

{pb.18. Se citeste de la tst un vector de n elemente numere reale.Afisati vectorul obtinut dupa ordonarea crescatoare a elementelor sale. Ordonarea se va face intr-un subprogram ce primeste ca parametru elementele sirului si le returneaza ordonate}program test;type sir=array[1..50] of real;var a:sir;n,i:integer;procedure ordonare(var a:sir;n:integer);var i,k:integer; aux:real;begin repeat k:=0; for i:=1 to n-1 do if a[i]>a[i+1] then beginaux:=a[i];a[i]:=a[i+1];a[i+1]:=aux;k:=1;end; until k=0;end;beginwrite('introdu nr de elemente:');readln(n);writeln('introdu sirul');for i:=1 to n do begin write('a[',i,']=');readln(a[i]);end;writeln('sirul introdus este:');for i:=1 to n do write(a[i]:7:2);writeln;ordonare(a,n);writeln('sirul ordonat este:');for i:=1 to n do write(a[i]:7:2);readln;end.{pb19. Se citeste de la tst o matrice cu n linii si m coloane.Sa se afiseze matricea si suma elementelor pozitive din matrice.Calcului sumei se va face cu ajutorul unui subprogram ce primeste ca parametru matricea si returneaza suma}program test;type matrice=array[1..50,1..50] of integer;var a:matrice;i,j,n,m,s:integer;procedure suma(a:matrice;n,m:integer;var s:integer);var i,j:integer;begin 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('introdu nr de linii');readln(n); write('introdu nr de coloane:');readln(m); writeln('introdu matricea'); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']=');readln(a[i,j]);end; writeln('matricea introdusa este:'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:5); writeln; end;suma(a,n,m,s);writeln('suma elementelor pozitive este: ',s);readln;end.

{pb.20 Se citeste de la tst o matrice patratica.Sa se afiseze matricea si elementul minim din matrice.Calculul valorii minime se va face cu ajutorul unui subprogram ce primeste ca parametru matricea si retunrneaza minimul elementelor ei}program test;type matrice=array[1..50,1..50] of integer;var a:matrice;n,i,j:integer;function minim(a:matrice;n:integer):integer;var i,j,min:integer;begin min:=32767; for i:=1 to n do for j:=1 to n do if min>a[i,j] then min:=a[i,j]; minim:=min;end;begin write('introdu nr de coloane si linii:');readln(n); writeln('introdu matricea:'); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']=');readln(a[i,j]);end writeln('matricea introdusa este:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end;writeln('minimul din matrice este: ',minim(a,n));readln;end.{pb.21 Se citeste de la tst o matrice patratica.Sa se afiseze matricea si elementul maxim din matrice.Calculul valorii maxime se va face cu ajutorul unui subprogram de primeste ca parametru matricea si retunrneaza maximul elementelor ei}

program test;type matrice=array[1..50,1..50] of integer;var a:matrice;n,i,j:integer;function maxim(a:matrice;n:integer):integer;var i,j,max:integer;begin max:=-32767; for i:=1 to n do for j:=1 to n do if max<a[i,j] then max:=a[i,j]; maxim:=max;end;begin write('introdu nr de coloane si linii:');readln(n); writeln('introdu matricea:'); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']=');readln(a[i,j]);end; writeln('matricea introdusa este:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end;writeln('maximul din matrice este: ',maxim(a,n));readln;end.

{pb 23. Se citesc notele unui student obtinute la ele n examene din timpul unui an universitar.Sa se determine nr de examene nepromovate precum si care a fost cea mai mare nota obtinuta}program test;var a:array[1..50] of real;n,i,nr:integer; max:real;beginrepeat write('n=');readln(n);until n>0;for i:=1 to n do begin write('a[',i,']=');readln(a[i]);end;nr:=0;max:=0;for i:=1 to n do begin if a[i]<5.00 then nr:=nr+1; if max<a[i] then max:=a[i]; end;writeln('nr de examene nepromovate este:',nr,'iar nota maxima:',max:5:2);readln;end.{pb.24 Se considera o matrice nepatratica(nxm) care contine elemente de tip real. Afisati matricea si maximul de pe fiecare coloana a matricii}program test;var a:array[1..50,1..10] of real;i,j,n,m:integer; max:real;beginwrite('n=');readln(n);write('m=');readln(m);writeln('introdu matricea:');for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']=');readln(a[i,j]);end;writeln('matricea introdusa este:');for i:=1 to n do begin for j:=1 to m do write(a[i,j]:7:2); writeln; end;for j:=1 to m do begin max:=-32767.00; for i:=1 to n do if max<a[i,j] then max:=a[i,j]; writeln('maximul din coloana ',j,' este ',max:5:2); end; readln; end.{pb25.Se da o matrice A nepatratica.Sa se construiasca o matrice B cu 2 coloane si n linii care sa contina indicii elementelor subunitare pozitive ale matrice A.Afisati cele 2 matrici}program test;var a:array[1..50,1..50] of real; b:array[1..50,1..2] of integer; i,j,k,p,l,n,m:integer;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;k:=1;l:=1; for i:=1to n do for j:=1 to m do if (a[i,j]>0) and (a[i,j]<1) then beginb[k,l]:=i;b[k,l+1]:=j;p:=k;k:=k+1;end; for i:=1 to n do begin for j:=1 to m do write(a[i,j]:5:2); writeln; end; for k:=1 to p do begin for l:=1 to 2 do write(b[k,l],' ' ); writeln; end;readln;end.

2

Page 3: Probleme atestat informatica rezolvate

{pb26 Se da o matrice patratica A. Afisat matricea.Sa se inlocuiasca elementele situate pe diagonala principala si secundara cu 0.Afisati noua matrice}program test;var a:array[1..50,1..50] of integer;i,j,n,nr:integer;beginwrite('n=');readln(n);writeln('introdu matrice:');for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']=');readln(a[i,j]);end;writeln('matricea introdusa este;');for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end;for i:=1 to n do for j:=1 to n do begin a[i,i]:=0; a[i,n+1-i]:=0; end; writeln('noua matrice este:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end; readln; end.{pb27 Se da o matrice patratica A. Afisat matricea si nr elementelor pare de sub diagonala principala}program test;var a:array[1..50,1..50] of integer;i,j,n,nr:integer;beginwrite('n=');readln(n);writeln('introdu matrice:');for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']=');readln(a[i,j]);end;writeln('matricea introdusa este;');for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end;for i:=1 to n do for j:=1 to n do if (i>j) and (a[i,j] mod 2=0) then nr:=nr+1; writeln('in matrice, sub diagonala principala se afla ',nr,' elemente pare'); readln; end.{pb 28. se considera o matrice nepatratica care contine elemnte intregi.Sa se afiseze suma elementelor pare de pe fiecare coloana}program test;var a:array[1..50,1..50] of integer;i,j,n,m,s:integer;beginwrite('n=');readln(n);write('m=');readln(m);writeln('introdu matricea ');for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']=');readln(a[i,j]);end;writeln('matricea introdusa este:');for i:=1 to n do begin for j:=1 to m do write(a[i,j]:5); writeln; end;for j:=1 to m do begin s:=0; for i:=1 to n do if a[i,j] mod 2=0 then s:=s+a[i,j]; writeln('suma elementelor pare de pe coloana ',j,' este: ',s); end;readln;end.

{pb 29. Se considera o matrice de dim nxm care contine elemente intregi.Sa se afiseze nr elementelor impare de pe fiecare linie}program test;var a:array[1..50,1..50] of integer;i,j,n,m,nr:integer;beginwrite('n=');readln(n);write('m=');readln(m);writeln('introdu matricea ');for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']=');readln(a[i,j]);end;writeln('matricea introdusa este:');for i:=1 to n do begin for j:=1 to m do write(a[i,j]:5); writeln; end;for i:=1 to n do begin nr:=0; for j:=1 to m do if a[i,j] mod 2<>0 then nr:=nr+1; writeln('pe linia ',i,' sunt ',nr,' elemente impare '); end;readln;end.{pb 30. Sa se construiasca un tablou patratic de dimensiune n*n.(1<=n<=50) avand primele n*n numere pare incepand cu 2. exemeplu: pt n=4 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 }program test;var a:array[1..50,1..50] of integer;i,n,j,x:integer;beginrepeat write('n=');readln(n);until n>0;x:=2;for i:=1 to n do for j:=1 to n do begin a[i,j]:=x; x:=x+2; end;for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end;readln;end.{pb.31 Se sa un tablodu bidimensional cu n linii si m coloane.(1<=n,m<=50) avand componente intregi. Sa se determine cel mai mare nr de pe marginea tabloului}program test;var a:array[1..50,1..50] of integer; max,i,j,n,m:integer;begin write('n=');readln(n); write('m=');readln(m); writeln('introdu matricea'); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']=');readln(a[i,j]);endwriteln(' matricea introdusa este:' ); for i:=1 to n do begin for j:=1 to m do write (a[i,j]:5); writeln; end;max:=a[1,1];for j:=2 to m do if max<a[1,j] then max:=a[1,j];for i:=2 to n do if max<a[i,m] then max:=a[i,m];for j:=m-1 downto 1 do if max<a[n,j] then max:=a[n,j];for i:=n-1 downto 1 do if max<a[i,1] then max:=a[i,1];writeln('maximul de pe exteriorul matricii este: ',max);readln;end.

{pb 32. Sa se verifice daca o matrice patratica este "triunghiulara superioara" (toate elementele aflate sub diagonala principala sunt nule}program test;var a:array[1..50,1..50] of integer;i,j,n,k:integer;beginwrite('n=');readln(n);writeln('introdu matrice:');for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']=');readln(a[i,j]);endwriteln('matricea introdusa este;');for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end;k:=0;for i:=1 to n do for j:=1 to n do if (i>j) and (a[i,j]<>0) then k:=1; if k=0 then write('matricea este triunghiulara superioara') else write('matricea nu este triunghiulara superioara');readln;end.{pb33 Se da o matrice patratica A de dimnesiune n*n. Sa se verifice daca matricea este simetrica(aij=aji, 1<=n,m<50)}program test;var a:array[1..50,1..50] of integer;i,j,n:integer;k:boolean;beginwrite('n=');readln(n);writeln('introdu matricea ');for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']=');readln(a[i,j]);end;writeln('matricea introdusa este:');for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end;k:=true;for i:=1 to n do for j:=1 to n do if a[i,j]<>a[j,i] then k:=false;if k then write('matricea este simetrica') else write('matricea nu este simetrica');readln;end.{pb 34 Se citeste de la tst un sir de caractere s ce reprezinta un cuvant din DEX. Sa se scrie acest cuvant in limba "pasareasca", adica se insereaza in sir dupa foiecare vocala subsirul format din litera p si vocala resp exemplu s=acoperire => apacoporeperipirepe}program test;var s:string; sir:string; n,i:integer; m:set of char;begin write('cuvantul este:');readln(s); m:=['a','e','i','o','u','A','E','I','O','U']; i:=1; repeat if s[i] in m then begin sir:='p'+s[i]; insert(sir,s,i+1); i:=i+3; end else i:=i+1; until i>length(s); writeln('noul cuvant este: ',s);readln;end.

{pb 35 Se citeste de la tst un sir de caractere s ce reprezinta un cuvant din DEX.Afisati toate sufixele sirului exemplu: vara sa va afisa a ra ara vara}program test;var s,p:string; n,m:integer; begin write('cuvantul este:');readln(s); n:=length(s); m:=0; repeat m:=m+1; p:=copy(s,n,m); write(p,' '); n:=n-1; until m=length(s);readln;end.{pb 36 Se citeste de la tst un sir de caractere s ce reprezinta un cuvant din DEX.Afisati toate sufixele sirului exemplu: vara sa va afisa v va var vara}program test;var s,p:string; n,m:integer; begin write('cuvantul este:');readln(s); n:=1; m:=0; repeat m:=m+1; p:=copy(s,n,m); write(p,’ ‘); until m=length(s);readln;end.{pb 37 Se citeste de la tastatura un sir de caractere a ce reprezinta un cuv din dictionarul limbii romane. Afisat sirul obtinut prin transformarea literelor mari in mici si a celor mici in mari}program test;var a:string; i:integer; m,n:set of char;begin write('cuvantul este:');readln(a); m:=['A'..'Z']; n:=['a'..'z'];for i:=1 to length(a) do if a[i] in m then a[i]:=chr(ord(a[i])+32) else if a[i] in n then a[i]:=chr(ord(a[i])-32); writeln('noul cuvant este:',a); readln;end.{pb 38 Se citeste de la tst un sir de caractere(maxim 25). Verificati daca cuvantul are proprietatea de palindrom. ex: cojoc}program test;var a,p:string; n:integer;begin write('cuvantul este:');readln(a); n:=length(a);repeat p:=p+a[n]; n:=n-1; until n=0; if p=a then write('cunvatul este palindrom') else write('cuvantul nu este palindrom');readln;end.

{pb 39 Se defineste o inregistrare de tip MASINA acre contine urmatoarele MARCA de tip string CULOARE de tip string; PRET de tip real; Se citesc n inregistrari de tip masina, nr nr intreg. Sa se afiseze toate masinile avant o anumita culoare citita de la tst si cu preteul mai mic decat o valoare p(citita la tst}program test;type masina=record marca:string; culoare:string; pret:real; end;var i,n:integer; c:string; p:real; a:array[1..50] of masina;beginwrite('introdu numarul de masini:');readln(n);for i:=1 to n do with a[i] do begin write('marca masinii:');readln(marca); write('culoarea masinii:');readln(culoare); write('pretul masinii in euro:');readln(pret); end;writeln('introduceti culoarea care o doriti:');readln(c);writeln('introduceti pretul');readln(p);for i:=1 to n do with a[i] do if (a[i].culoare=c) and (a[i].pret<p) then writeln('marca masinii care are culoarea ',a[i].culoare,' si pretul mai mic de ',p:9:1,' euro este: ',a[i].marca);readln;end.{pb 41 Sa se caluleze suma primelor n numere naturale folosind un subprogram Recursiv}program test;var n:integer;function suma(n:integer):integer;begin if n=0 then suma:=0 else suma:=suma(n-1)+n;end;beginwriteln('introdu numarul:');readln(n);writeln('suma este:', suma(n));readln;end.{pb 42. Sa se afiseze suma cifrelor unui numar folosind un subprogram recursiv}program test;var n:integer;function s(n:integer):longint;beginif n=0 then s:=0 else s:=n mod 10 +s(n div 10);end;beginwriteln('numarul este:');readln(n);writeln('suma cifrelor numarului este: ',s(n));readln;end.{pb 43 Sa se afiseze cirele unui numar (fiecare cifra pe o noua linie) folosind un subprogram recursiv}program test;var n:longint;procedure afisare(n:longint);begin if n<>0 then begin afisare(n div 10); writeln(n mod 10); end;end;beginwrite('numarul este:');readln(n);if n=0 then writeln(' nu exista cifre') else afisare(n);readln;end.

3

Page 4: Probleme atestat informatica rezolvate

{pb 44 scrieti o functie recursiva care ridica un numar A la puterea b}program test;var a,n:integer;function putere(a,b:integer):longint;begin if b=0 then putere:=1 else putere:=putere(a,b-1)*a;end;beginwrite('introdu numarul:'); readln(a);writeln('introdu puterea:');readln(n);writeln(a,' la puterea ',n,' este: ',putere(a,n));readln;end.{pb 45 Scrieti o functie recursiva care intoarce n factorial}program factorial;var n:longint;function fact(n:longint):longint;begin if n=0 then fact:=1 else fact:=n*fact(n-1);end;beginwrite('n=');readln(n);writeln(fact(n));readln;end.

4