Sunteți pe pagina 1din 66

Tablouri

unidimensionale
Algoritmi
fundamentali

Realizat de
Carmen Rus

Maxime si Minime
Cutare binar

Cutari de
elemente
Cutare
liniar

Parcurgeri

Sume si numrri
Oare de ce dai daca apesi butonul acesta ??

Puin teorie. Dac vrei


bineneles.

Daca nu apsai

Cautari de
elemente

Probleme

{Cunoscandu-se numele, inaltimea si greutateaa n elevi sa se afiseze


numele acestora in ordinea descrescatoare a inaltimi. Daca exista doi
elevicu aceeasi inaltime se va afisa cel care are greutatea mai mare.}

uses crt;
var aux,i,j,n,k,min:integer;
a,e:array[1..100] of string;
b,c,d,f:array[1..100] of integer;
aux1:string;
begin
clrscr;
writeln('Dati numarul de
elevi 1<=n<=100 ');readln(n);
writeln('Dati numele,inaltimea si
greutatea celor ',n,' elevi:');
for i:=1 to n do begin
readln(a[i]);
readln(b[i]);
d[i]:=b[i];
readln(c[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if b[i]<b[j] then begin
aux:=b[i];
b[i]:=b[j];
b[j]:=aux;
end;

for i:=1 to n do
for j:=1 to n do
if b[i]=d[j] then begin
e[i]:=a[j];
f[i]:=c[j];
d[j]:=0;
j:=n; end;
for i:=1 to n-1 do
if b[i]=b[i+1] then
if f[i]<f[i+1] then begin
aux1:=e[i];
e[i]:=e[i+1];
e[i+1]:=aux1;
aux:=f[i];
f[i]:=f[i+1];
f[i+1]:=aux
end;
for j:=1 to n do begin
write ('Numele: ',e[j],' ','Inaltimea: ',b[j],'
','Greutatea: ',f[j]);
writeln; end;
readln
end.

{Se citesc n numere intregi. Sa se afiseze cel mai mare


numar obtinut din prima cifra a fiecarui numar.}

var d:array[1..20] of byte;


a,i,c,aux,j,nr,n:longint;
begin
write('dati nr de nr');readln(n);
writeln('Dati elem: ');
for i:=1 to n do
begin
readln(a);
aux:=a;
while aux<>0 do begin
c:=aux mod 10;
aux:=aux div 10; end;
d[i]:=c end;
for i:=1 to n-1 do
for j:=i+1 to n do
if d[i]<d[j] then begin
aux:=d[i];
d[i]:=d[j];
d[j]:=aux end;
for i:=1 to n do nr:=nr*10+d[i];
writeln('Cel mai mare nr este: ',nr);
readln
end.

{Se citesc de la tastatura n numere naturale. Se cere sa se


sorteze sirul in ordinea crescatoare a numarului de apaitii a cifrei
1 in reprezentarea in baza 2 a numerelor.In cazul in care doua
numere au aceeasi numar de cifre egale cu 1 in reprezentare lor
binara atunci ele vor aparea in ordinea in care sunt citite de la
tastatura.}

var a,b,c,d:array[1..100]of longint;


aux,n,k,i,j:integer;
begin
writeln('Dati nr de elemente ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
d[i]:=a[i];
j:=0;
while a[i]>0 do begin
if a[i] mod 2=1 then j:=j+1;
a[i]:=a[i] div 2 {in a[i] o sa am
doar valoarea 0}
end;
b[i]:=j;
c[i]:=j;{retine pozitiile inainte
de sortare}
end;

for i:=1 to n-1 do


for j:=i+1 to n do
if b[i]>b[j] then begin
aux:=b[j];
b[j]:=b[i];
b[i]:=aux {b[i]retine poz
dupa sortare}
end;
k:=0;
for i:=1 to n do begin
for j:=1 to n do
if (b[i]=c[j]) and (b[i]>k) then write(d[j],' ');
k:=b[i]
end;
readln
end.

{Dandu-se un vector cu maxim 100 de numere naturale, sa se


localizeze elmentul maxim si toate elementele dinaintea lui sa se
ordoneze crescator, iar cele de dupa el descrescator.}

var a,b:array[1..100]of integer;


max,aux,n,k,i,j:integer;
begin
writeln('Dati nr de elemente ');readln(n);
max:=-maxint;
for i:=1 to n do begin
for i:=k+1 to n-1 do
write('a[',i,']=');readln(a[i]);
for j:=i+1 to n do
if a[i]>max then begin
if a[i]<a[j] then begin
max:=a[i];
aux:=a[i];
end;
a[i]:=a[j];
end;
a[j]:=aux;
for i:=1 to n do
end;
if a[i]=max then k:=i;
writeln('Vectorul ordonat conform
for i:=1 to k-1 do
cerintei: ');
for j:=i+1 to k do
for i:=1 to n do write (a[i],' ');
if a[i]>a[j] then begin
readln
aux:=a[i];
end.
a[i]:=a[j];
a[j]:=aux
end;
writeln;

Maxime si Minime

Probleme

{Se dau doi vectori x,y cu n componente. Primul contine nume de


elevi, iar al doilea notele la informatica. Se cere sa se afiseze numele
elevilor cu nota cea mai mica. Daca mai multi elevi au aceasta nota
vor fi afisati toti.}

uses crt;
var i,n,min:integer;
x:array[1..100] of string;
y:array[1..100] of integer;
begin
clrscr;
writeln('Dati numarul de elevi
1<=n<=100 ');readln(n);
writeln('Dati numele celor ',n,' elevi:');
for i:=1 to n do readln(x[i]);
writeln('Dati mediile celor ',n,' elevi: ');
for i:=1 to n do read(y[i]);readln;
min:=y[1];
for i:=2 to n do
if y[i]<min then min:=y[i];
for i:=1 to n do
if min=y[i] then write(x[i],' ');
readln;
end.

{Sa se realizeze programul pentru determinare elementului maxim si a


tuturor pozitilor unde apare el intr-un vector A de numere intregi cu
dimensinea N.}

var a:array[1..100]of longint;


max,n,k,i,j:integer;
begin
writeln('Dati nr de elemente ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
max:=-maxint;
for i:=1 to n do begin
if (a[i]>max) then
max:=a[i];end;
writeln('Nr maxim este ', max );
writeln('pozitile maximului in vector
sunt: ');
for i:=1 to n do
if a[i]=max then write (i,' ');
readln
end.

{Sa se determine elementele cu numar maxim de divizori si


elementele cu
numar minim de divizori dintr-un vector x de numere intregi.}

var a,b:array[1..100]of integer;


max,min,n,k,i,j:integer;
begin
writeln('Dati nr de elemente ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
k:=0;
for j:=1 to a[i] do begin
writeln('Componenetele cu nr maxim de
if a[i] mod j=0 then begin
divizori sunt: ');
k:=k+1;
for i:=1 to n do
b[i]:=k
if b[i]=max then write (a[i],' ');
end
writeln;writeln('Componenetele cu nr minim
end
de divizori sunt: ');
end;
for i:=1 to n do
max:=-maxint;min:=maxint;
if b[i]=min then write (a[i],' ');
for i:=1 to n do begin
readln
if (b[i]>max) then
end.
max:=b[i];
if b[i]<min then
min:=b[i]
end;

{Se da un vector continand litere. Sa se afiseze frecventa aparitiei fiecarei


litere in vector si literele cu cea mai mare frecventa, respectiv cea mai mica
frecventa de aparitie.}

var a,b:array[1..100]of char;


c,d,e:array[1..100] of
integer;
max,min,n,k,i,j,l:integer;aux:c
har;
begin
writeln('Dati nr de elemente
');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then begin
aux:=a[j];
a[j]:=a[i];
a[i]:=aux
end;

l:=1;
for i:=ord('A') to ord('Z') do begin
k:=0;
for j:=1 to n do
if i=ord(a[j])then k:=k+1;
c[l]:=k;
l:=l+1;
end;
l:=1;
for i:=ord('a') to ord('z') do begin
k:=0;
for j:=1 to n do
if i=ord(a[j]) then k:=k+1;
d[l]:=k;
l:=l+1;
end;

min:=maxint;max:=-maxint;
for i:=1 to l do begin
e[i]:=c[i]+d[i];
end;
for i:=1 to l do begin
if (e[i]<min) and (e[i]>0) then min:=e[i];
if e[i]>max then max:=e[i]
end;
writeln('Litera/Literele cu cea mai mare
frecventa de aparitie este/sunt:');
for i:=1 to l do
if e[i]=max then write(chr(64+i),' ');writeln;
writeln('Litera/Literele cu cea mai mica
frecventa de aparitie este/sunt:');
for i:=1 to l do
if e[i]=min then write(chr(64+i),' ');
{ for i:=1 to n do write (a[i],' ');}
readln
end.

{Se citeste de la tastatura un sir cu n elemente numere naturale,


nu neaparat distincte. Sa se afiseze elementul care apare de cele mai
multe ori in sir. Daca exista mai multe astfel de elmente,se vor afisa
toate.}

var a,b:array[1..100]of longint;


max,n,k,i,j:integer;aux:longint;
begin
writeln('Dati nr de elemente ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then begin
aux:=a[j];
a[j]:=a[i];
a[i]:=aux
end;
k:=1;j:=0;
for i:=1 to n do begin
if a[i]=a[i+1] then inc(k)
else begin
j:=j+1 ;
b[j]:=k;
if i=n-1 then b[j+1]:=1;
k:=1;
end;
end;

max:=-maxint;
for i:=1 to j+1 do
if b[i]>max then max:=b[i];
{write(max:5);writeln;}
k:=1;
for i:=1 to j+1 do
if b[i]=max then begin
write(a[k],' ');
k:=k+b[i]
end
else
k:=k+b[i];
readln
end.

{Se considera un sir cu n numere naturale. Se cere sa se afiseze un


numar din sir care in scrierea sa cat mai multe cifre distincte. Daca exista
mai multe numere cu aceasta proprietate se va afisa primul dintre ele.}

var t,k,i,j,l,n,aux:longint;
a,b,c,d:array[1..100]of longint;
begin
write('Dati n: ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
t:=1;k:=0;d[i]:=a[i];
repeat
k:=k+1;
b[k]:=a[i] mod 10;
a[i]:=a[i] div 10;
until a[i]=0;
for j:=1 to k-1 do
for l:=j+1 to k do
if b[j]>b[l] then begin
aux:=b[j];
b[j]:=b[l];
b[l]:=aux
end;

for j:=1 to k-1 do


if b[j]<>b[j+1] then t:=t+1;
c[i]:=t
end;
l:=c[1];
for i:=2 to n do if l<c[i] then begin
l:=c[i];
k:=i ;
end;
write('primul numarul cu cele mai multe
cifre distincte este',d[k]:5);
readln
end.

Cautare binara
a)pe structura
repeat..until
b)pe structura
while..do

a
)

program cautare_binara;
var n,i,j,aux,x,ls,ld,mij:integer;
a:array[byte] of integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('x=');readln(x);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
end;

ls:=1;
ld:=n;
repeat
mij:=(ls+ld) div 2;
if a[mij]=x then
writeln('cautare cu succes')
else
if a[mij]>x then
ld:=mij-1
else
ls:=mij+1;
until (a[mij]=x) or (ls>ld);
if ls>ld then
write('nu exista ',x,' in vector');
readln
end.

b)
program cautarebinara;
var
n,i,j,aux,x,ls,ld,mij,sw:inte
ger;
a:array[byte] of integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('x=');readln(x);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
end;

ls:=1;
ld:=n;
mij:=(ls+ld) div 2;
sw:=0;
while (a[mij]<>x) and (ls<=ld) do
begin
if a[mij]>x then
ld:=mij-1
else
ls:=mij+1;
mij:=(ls+ld) div 2;
end;
if a[mij]=x then
writeln('este in vector')
else
writeln('nu exista ',x,' in vector');
readln
end.

Cautare liniara

program cautare_liniara;
var a:array[1..50] of integer;
x:integer;
i,n,sw:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('x=');readln(x);
sw:=0;
for i:=1 to n do
if a[i]=x then
sw:=1;
if sw=0 then write(x,' nu se afla in
vector')
else write('cautare cu succes');
readln
end.

Parcurgeri
Sume si numarari

Probleme

{Scrieti un program care tipareste elementele pare aflate pe pozitii


divizibile cu 3 dintr-un vector de nr intregi.}
var a:array[1..30] of integer;
s,n,i:integer;
begin
write ('n= ');readln(n);
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i])
end;
i:=3;
while i<=n do begin
if a[i] mod 2=0 then
write(a[i]:5);
i:=i+3;
end;
readln
end.

{Fiid dat un vector de numere intregi,sa se determine suma elementelor


pozitive din vector.}
var a:array[1..30] of integer;
s,n,i:integer;
begin
write ('n= ');readln(n);
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i])
end;
s:=0;
for i:=1 to n do
if a[i]>0 then s:=s+a[i];
writeln('Suma este: ', s);
readln;
end.

{Sa se afiseze doar elementele pare dintr-un vector de numere intregi.}


var a:array[1..30] of integer;
s,n,i:integer;
begin
write ('n= ');readln(n);
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i])
end;
for i:=1 to n do
if a[i] mod 2=0 then write ('Numerele sunt: a[i],',');
readln
end.

{Se citeste de la tastatura un vector cu n componente de tip intreg.


Se cere sa se construiasca si sa se afiseze un nou vector cu
componentele patrate perfecte din vectorul initial.}
var a,b:array[1..100] of integer;
n,i,j,p,k:integer;
begin
write ('n= ');readln(n);k:=0;
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i]);
if a[i]>=0 then
for j:=1 to trunc(sqrt(a[i])) do
if j*j=a[i] then begin
k:=k+1;
b[k]:=a[i]
end;
end;
writeln('Componentele patrate din vectorul dat sunt: ');
for i:=1 to k do write(b[i], ' ');
readln
end.

{Sa se calculeze suma elementelor negative si de valoare para


dintr-un vector de nr intregi}
var a:array[1..30] of integer;
s,n,i:integer;
begin
s:=0;
write ('n= ');readln(n);
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i]);
if (a[i]<0) and (a[i] mod 2=0) then s:=s+a[i];
end;
writeln('Suma este: ',s);
readln
end.

{Se da un vector v cu n elemente numere intregi.Sa se copieze


intr-un vector u elementele pozitive ale vectorului initial}
var a,b:array[1..30] of integer;
n,i,j:integer;
begin
write ('n= ');readln(n);j:=0;
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i]);
if a[i]>0 then begin
j:=j+1;
b[j]:=a[i]
end;
end;
for i:=1 to j do write(b[i],' ');
readln;
end.

{Se da un vector de numere reale.Sa se determine procentul


de numere din vector mai mici strict decat MA si procentul
de numere din vector mai mari strict decat MA,unde am notat cu MA
media aritemtica a componentelor din vector.}
var a:array[1..30] of real;
n,i,p,k:integer;ma,s:real;
begin
s:=0;
write ('n= ');readln(n);
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i]);
s:=s+a[i];
end; ma:=s/n;
for i:=1 to n do
if a[i]>ma then k:=k+1
else if a[i]<ma then p:=p+1;
writeln('Procentul celor strict mai mari decat MA este:
',k/n*100:5:2,'%');
write(' Procentul celor strict mai mici decat MA este:
',p/n*100:5:2,'%');
readln;
end.

{Scrieti un program care citeste de la tastatura cele n numere reale


ce compun vectorul a si apoi cele m numere reale ce constituie
componentele vectorului b si afiseaz pe ecran cate din componentele
lui a sunt strict mai mici decat toate componentele vectorului b.}
var a,b:array[1..30] of real;
n,i,m,j:integer;
begin
write ('n= ');readln(n);write ('m= ');readln(m);
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i]);
end;
for j:=1 to m do begin
write ('b[',j,']=');readln(b[j]);
end;
for i:=1 to n do
if a[i]<b[i] then write(a[i]:5:2,' ');
readln;
end.

{Fiind dat un vector v cu n elemente numere intregi ,sa se construiasca


alti doi vectori :primul care va contine numai elemente pare ,iar al
doilea numai elem impare din vectorul initial}
var a,b,c:array[1..30] of integer;
n,i,m,p:integer;
begin
write ('n= ');readln(n);m:=0;p:=0;
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i]);
if a[i] mod 2=0 then begin
inc(m);
b[m]:=a[i];
end
else begin
inc(p);
c[p]:=a[i];
end;
end;
readln
end.

{Fie un vector x de numere intregi. Sa se formeze un vector y de numere


intregi, in care y[i] sa fie restul impartiri lui x[i] la suma cifrelor lui x[i].}
type vector=array[1..100] of integer;
var x,y:vector;aux,s:integer;
i,n,c:byte;
begin
Writeln('Dati dimensiunea vector,<=100 ');read(n);
writeln('Introduceti cele ',n,' componente:');
for i:=1 to n do begin
readln(x[i]);aux:=x[i];s:=0;
while aux<>0 do begin
c:=aux mod 10;
s:=s+c;
aux:=aux div 10
end;
y[i]:=x[i] mod s;
end;
for i:=1 to n do write(y[i],' ');
readln
end.

{La codificarea unui text scris cu cel mult primele n litere mici ale afabetului
englez, se folosesc cele mai mici n numere naturale care au exact 3 divizori
naturali. Pentru litera 'a' se foloseste cel mai mic nr cu proprietatea respectiva,
pentr 'b' cel mai mic numar diferit de cel folosit pentru 'a',si asa mai departe.
a)Sa se afiseze, separate prin cate un spatiu, cele n numere folosite la
codificare.
b)Pentru un text dat de la tastatura,se cere sa se afiseze codificarea textului,
fiecare caracter fiind inlocuit cu numarul corespunzator si orice doua coduri
conscutive vor fi separate printr-un spatiu.}

var n,i,d,j,c:integer;
a:array[1..25] of char;
b:array[1..25] of integer;
begin
writeln('Dati nr de litere -vezi
enunt');readln(n);
writeln('Dati textul');
for i:=1 to n do read(a[i]);
i:=4;
repeat
d:=2;c:=1;
while(d<=i) do begin
if (i mod d=0) then
begin
c:=c+1;
d:=d+1
end
else d:=d+1;
end;

if c=3 then begin


j:=j+1;
b[j]:=i;
end;
i:=i+1
until j=n;
writeln('Nr cu 3 divizori folosite la
codificare: ');
for i:=1 to n do write(b[i], ' ' );
writeln;
writeln('Textul dat se codifica astfel:');
for i:=1 to n do begin
c:=ord(a[i])-ord('a');
write(b[c+1],' ');
end;
readln
end.

{Sa se calculeze cmmdc(x1,x2,x3,...,xn)}


type vector=array[1..100] of integer;
var a:vector;cmmdc:integer;
i,n:byte;
begin
Writeln('Dati dimensiunea vector,<=100 ');read(n);
writeln('Introduceti cele ',n,' componente pozitive nenule:');
for i:=1 to n do read(a[i]);
readln;
cmmdc:=a[1];
for i:=2 to n do begin
while a[i-1]<>a[i] do
if a[i-1]>a[i] then a[i-1]:=a[i-1]-a[i]
else a[i]:=a[i]-a[i-1];
end;
cmmdc:=a[n];
writeln('Cmmdc este: ',cmmdc);
readln
end.

{Cate numere perfecte exista in tabloul x=(x1,x2,..,xn) de numere intregi citite de


la tastatura. Un numar este perfect daca este egal cu suma divizorilor sai mai
mici ca el.}
var a:array[1..100]of integer;
d,s,n,k,i,j:integer;
begin
writeln('Dati nr de elemente ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;k:=0;
write('Numerele perfecte sunt: ');
for i:=1 to n do begin
s:=0;
for j:=1 to a[i] do
if a[i] mod j=0 then s:=s+j ;
if (2*a[i]=s) and (a[i]>0) then begin
k:=k+1;
write(a[i],' ')
end; end;
write('Avem ',k,' numere perfecte. ');
readln
end.

{Cate elemente dintr-un vector de numere intregi sunt prime cu un nr dat.}


var a:array[1..100]of integer;
q,n,k,i,j,t:integer;
begin
writeln('Dati nr de elemente ');readln(n);
writeln('Dati un nr. k ');readln(k);q:=k;
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
writeln('Nr care sunt prime cu ',k ,' sunt: ');
for i:=1 to n do begin
t:=a[i];
while a[i]<>k do
if a[i]>k then a[i]:=a[i]-k
else k:=k-a[i];
k:=q;
if a[i]=1 then begin
j:=j+1;
write(t,' ')
end; end;
writeln;writeln('Avem: ',j,' nr prime cu ',q);
readln
end.

{Se considera un sir de n numere reale. Sa se scrie un program care elimina di


sir valorile ce se afla in afara intervalului [a,b].}
var c,d:array[1..30]of integer;
a,b,i,n,aux,k:integer;
begin
writeln('Dati a si b');readln(a);readln(b);
writeln('dati nr de componente: ');readln(n);k:=0;
for i:=1 to n do begin
write('c[',i,']=');read(c[i]); end;
if a>b then begin
aux:=b;
b:=a;
a:=aux;
end;
for i:=1 to n do
if (c[i]>=a) and (c[i]<=b) then begin
k:=k+1;
d[k]:=c[i];
end;
for i:=1 to k do
write(d[i],' ');
readln
end.

{Fie un vector de numere intregi.Sa se afiseze toate tripletele de numere


consecutive din x,in care al treilea numar este media aritmetica a primului
cu cel de al doilea.}
var i,n:integer;
a:array[1..100]of integer;
begin
write('Dati n: ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n-2 do
if a[i+2]=(a[i]+a[i+1])/2 then
write('(',a[i],' ',a[i+1],' ',a[i+2],')');
readln
end.

{Sa se calculeze ultima cifra a numarului x[1]+x[2]+..+x[n],unde x este


un vector cu n componente numere naturale citite de la tastatura.}
var a,b:array[1..30] of integer;
i,n,s:integer;
begin
writeln('Dati nr de componente: ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n do begin
b[i]:=a[i] mod 10;
s:=s+b[i];
end;
writeln('ultima cifra a sumei este: ',s mod 10);
readln
end.

{Fie un vector de numere intregi.Sa se afiseze toate tripletele de numere


consecutive din x,in care al treilea numar este restul inmpartirii primului
la al doilea.}
var i,n:integer;
a:array[1..100]of integer;
begin
write('Dati n: ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n-2q do
if a[i] mod a[i+1]=a[i+2] then
write('(',a[i],' ',a[i+1],' ',a[i+2],')');
readln
end.

1.Stiind

ca variabila x este utilizata intr-un program


pentru a memora mediile din semestrul al doilea ale
uni elev de clasa a XII-a la cele 16 discipline din
catalog,stabiliti care este declararea
corespunzatoare x ?

a)
b)
c)
d)

var x:byte;
var x:array[1..16,1..12] of byte;
var x:array[1..16] of byte;
var x:array[1..15] of byte;

Next

2.Se considera algoritmul reprezentat in limbaj pseudocod:


citeste n;
pentru I= 1, n executa
citeste ai;
citeste p;
pentru I= 1, n executa
inceput
aux<- ai;
cat timp ai <>0 executa
inceput
s<- s+ ai mod 10;
ai<- ai div 10;
sfarsit
daca s mod p=0 atunci scrie aux;

Ce valori vor fi afisate pentru n=5, p=6, a[23, 33, 123,


12, 93]:
a) 33, 23, 123

b) 33, 123, 93
c) 23, 12, 93
d) 23, 33, 123, 12, 93

Next

3.Se da urmatorul program. Ce


face el ?
var a:array[1..30] of integer;
s,n,i:integer;
begin
s:=0;
write ('n= ');readln(n);
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i]);
if (a[i]<0) and (a[i] mod 2=0) then
s:=s+a[i];
end;
writeln('Suma este: ',s);
readln
end.

Next

a) calculeaza suma elementelor negative si de


valoare para dintr-un vector
b) calculeaza suma elementelor negative si numa
atat
c) calculeaza suma elementelor de valoare para
dintr-un vector

4.Se da urmatorul program:

var a:array[1..30] of integer;


s,n,i:integer;
begin
write ('n= ');redln(n);
for i:=1 to n do begin
write ('a[',i,']=');readln(a[i])
end;
for i:=1 to n do
Next
if a[i] mod 2=0 then wrte ('Numerele sunt:
a[i],',');
readln
Dupa efectuarea acestui program se vor afis
end.

a)Vectorul
b)Si elmetele pare si cele impare
dintr-un vector
c)Numerele care impartite la 2
dau restul zero
d)Nimic deoarece este gresit

5. Daca vectorul a contine


3, 4, 6, 2, 1 atunci vectorul
b va fi:
24
42
241
-3 4 2

J:= 0;
For I:= n downto 1 do
if (I mod 2= 0) and (a[I] mod
2= 0) then begin
inc (j);
b[j]:= a[I];
End;

Next

DA

NU

Puin teorie. Dac vrei


bineneles.

Daca nu apsai

Ai rspuns greit
Mai cearc
Back

Mai pune-ti pofta in cui

Gandeti bine !

Back

tiu ca v-a placut


Daca nu, imi pare rau,
dar altul nu mai fac !

Sfarit