Documente Academic
Documente Profesional
Documente Cultură
E Informatica Intensiv C
E Informatica Intensiv C
Variabila x este de tip real. Care dintre urmtoarele expresii C/C++ are valoarea 1 dac i
numai dac numrul real memorat n variabila x aparine intervalului (5,8]?
(4p.)
b. (x<=8) || (x>5)
c. (x>8) || (x<=5)
c)
Scriei n pseudocod un algoritm, echivalent cu cel dat,
n care s se nlocuiasc structura ct timp...execut scrie z
cu o structur repetitiv de alt tip.
(6p.)
d)
(10p.)
Subiectul I
Variabilele x i y sunt tip int. Care dintre expresiile C/C++ de mai jos are valoarea 1
dac i numai dac valorile ntregi nenule memorate n variabilele x i y sunt egale? (4p.)
c. (x<=y) || (y<=x)
d. x*x==y*y
(4p.)
c)
d)
(10p.)
Subiectul I
Care dintre urmtoarele expresii C/C++ are valoarea 1 dac i numai dac numrul real
memorat n variabila x se afl n intervalul (-2,2)?
(4p.)
a. x*x-4<=0
b. 4-x*x>0
c. (2<x)&&(x<-2)
d. (x-2)*(x+2)>0
c)
d)
(10p.)
Subiectul I
a. 2
b. 10
c. 2.75
(4p.)
11*3/2*2/3
d. 11
c)
d)
(10p.)
Subiectul I
Variabila x este de tip real. Care dintre urmtoarele expresii C/C++ are valoarea 1 dac i
numai dac numrul real memorat n variabila x nu aparine intervalului (2,9]?
(4p.)
c. (x<=2) || (x>9)
d. (x<2) || (x>9)
d)
(10p.)
Subiectul I
b. x+y-abs(x-y)/2
c. (x+y+abs(x-y))/2
d. (x+y+abs(x+y))/2
c)
Scriei n pseudocod un algoritm echivalent cu cel dat n scrie s
care s se nlocuiasc structura ct timp ... execut
cu o structur repetitiv cu test final.
(6p.)
d)
(10p.)
Subiectul I
b. x*(y-5)!=0
c. x*(y-5)>=0
d. !(x*(y-5)<=0)
mn
real c, iar cu a%b restul mpririi numrului
ct timp m0 i m%10a execut
ntreg a la numrul ntreg nenul b.
m[m/10]
a)
Scriei valoarea afiat, n urma
executrii algoritmului, dac se citete
dac m0 atunci
pentru n valoarea 232493.
(4p.)
nrnr*10+m%10
b)
Scriei dou valori naturale distincte care
pot fi citite pentru n astfel nct, n urma
scrie nr
executrii algoritmului s se afieze
numrul 9654.
(6p.)
c)
d)
(10p.)
Subiectul I
Care dintre urmtoarele expresii C/C++ are ca valoare cel mai mare dintre numerele
naturale nenule, cu cel mult 4 cifre fiecare, memorate n variabilele ntregi a i b?
(4p.)
a. (a+b+abs(a-b))/2
b. a+b+abs(a-b)/2
c. (a+b-abs(a-b))/2
d. (a+b-abs(a+b))/2
d)
(10p.)
Subiectul I
Care dintre expresiile C/C++ de mai jos este ((a>3) && (a<15)) || (a!=b)
echivalent cu expresia alturat?
(4p.)
b)
c)
d)
n[n/10]
scrie s
Subiectul I
a. 3
b. 4
c. -3
d. -3.75
9/2*2-5
(10p.)
Subiectul I
1.
b)
Dac se citete pentru k valoarea 4, scriei scrie p
cea mai mare valoare de 5 cifre care poate fi
citit pentru n astfel nct numrul afiat n
urma executrii algoritmului s fie 1.
(4p.)
c)
d)
(10p.)
Subiectul I
1.
algoritmul
alturat,
descris
c)
d)
(10p.)
Subiectul I
1.
algoritmul
alturat,
descris
b)
c)
d)
citete a,b
(numere naturale, ab)
k0
pentru ia,b execut
ni; c0
ct timp n>0 execut
dac n%2=1 atunci
cc+1
n[n/10]
dac c>0 atunci
kk+1
scrie k
Subiectul I
a. a=1003 i b=3
c. a=1100 i b=10
b. a=35 i b=35
d. a=1234 i b=12
algoritmul
alturat,
descris
b)
c)
d)
citete x
(numr natural)
n0
ct timp x0 execut
yx; c0
ct timp y>0 execut
dac y%10>c atunci
cy%10
y[y/10]
nn*10+c
citete x
scrie n
Subiectul I
Variabilele x i y sunt de tip ntreg, x memornd valoarea 4, iar y valoarea 2. Care dintre
expresiile C/C++ de mai jos are valoarea 0?
(4p.)
a. x-y!=0
b. x+y>x%y+1
c. x-2*y==0
d. !(x==2*y)
citete a,n
(numere naturale)
pentru i1,n execut
dac i%2=0 atunci
aa-i*i
altfel
aa+i*i
scrie a
a)
b)
c)
Dac pentru variabila a se citete valoarea 18, scriei valoarea care trebuie citit pentru
variabila n, astfel nct s se afieze numrul 8.
(6p.)
d)
Subiectul I
Care dintre urmtoarele instruciuni C/C++ determin inserarea cifrei 7 n faa ultimei cifre a
unui numr natural, cu mai mult de 2 cifre, memorat n variabila x?
(4p.)
a. x=(x/10*10+7)*10+x%10;
b. x=x/10+7+x%10;
c. x=(x%10*10+7)*10+x/10;
d. x=(x/10+7)*10+x%10;
b)
(6p.)
c)
Scriei
programul
algoritmului dat.
d)
C/C++
corespunztor
(10p.)
Subiectul I
a. 300
b. 5000
c. 120
d. 0
b)
c)
d)
citete x,y
(numere naturale)
dac x<y atunci
xx-y
yx+y
xy-x
ct timp xy execut
scrie A
xx-y
scrie B
Subiectul I
Care dintre urmtoarele instruciuni C/C++ determin eliminarea cifrei din mijloc a unui
numr natural, cu exact 5 cifre, memorat n variabila x?
(4p.)
a. x=x/1000*100+x%100;
b. x=x%1000*100+x/100;
c. x=x/100*100+x%100;
d. x=x/1000+x%100;
caracterul *.
(4p.)
c)
d)
Subiectul I
a. 4
b. 6
c. 2
d. 8
b)
c)
Scriei
programul
algoritmului dat.
d)
C/C++
corespunztor
(10p.)
Subiectul I
a. 5
b. 5.833333
x=30;
y=5;
z=(x+y)/6.0;
z=floor(z*100);
z=z/100;
cout<<z; | printf(%0.2f,z);
c. 5.83
d. 583
Subiectul I
b. v1<v2
c. v1==v2
d. v1+v2==9
b)
c)
Scriei programul
algoritmului dat.
d)
C/C++
corespunztor
(10p.)
Subiectul I
d1
pentru i2,[n/2] execut
dac i|n atunci
di
scrie d
a)
b)
c)
Scriei
programul
algoritmului dat.
d)
Scriei o valoare pentru n astfel nct n urma executrii algoritmului obinut prin nlocuirea
structurii
pentru i2,[n/2] execut
...
cu
pentru i[n/2],2,-1 execut
...
C/C++
corespunztor
(10p.)
Subiectul I
b)
c)
d)
citete a,b
(numere naturale nenule)
c0
repet
ia%2
jb%2
dac i+j=0 atunci
cc+1
aa*i+(1-i)*[a/2]
bb*j+(1-j)*[b/2]
pn cnd i*j=1
scrie c
Subiectul I
Care din urmtoarele afirmaii despre operatorii din C/C++ este fals?
(4p.)
algoritmul
alturat,
descris
a)
b)
c)
Scriei
programul
algoritmului dat.
d)
C/C++
corespunztor
(10p.)
citete a,b
(numere naturale)
pa; qb
dac p=0 sau q=0 atunci
pp*q; qp*q
ct timp pq execut
dac p<q atunci
pp+a
altfel
qq+b
scrie p
Subiectul I
b. 3 i 4
c. 5 i 2
d. 2 i 7
ta;
ab; bt
b=20 i c=6.
(6p.)
b)
Scriei un algoritm echivalent cu cel dat n care s se ct timp ab execut
nlocuiasc structura ct timp...execut cu o dac c|a atunci
structur pentru...execut.
(6p.) scrie a
c)
Scriei programul C/C++ corespunztor algoritmului
aa+1
dat.
(10p.)
d)
Scriei o formul care s calculeze cte numere se
afieaz dac ab.
(4p.)
Subiectul I
Care este cea mai mic valoare pe care o poate avea expresia C/C++ x/7-x%7
alturat dac variabila x, de tip int, memoreaz un numr natural cu o
singur cifr?
(4p.)
a. 0
b. 1.14
c. -6
d. 1
b)
Scriei programul C/C++ corespunztor algoritmului dat.
(10p.)
c)
d)
Subiectul I
b)
c)
d)
citeste a,b
(numere naturale)
c0
d0
p1
ct timp a+b+c>0 execut
ca%10+b%10+c
dd+(c%10)*p
pp*10
a[a/10]
b[b/10]
c[c/10]
scrie d
Subiectul I
Cte valori distincte, numere naturale, poate primi variabila x pentru ca valoarea expresiei
x/2/2 scris n C/C++ s fie egal cu 1?
(4p.)
b. 4
c. 2
d. 0
a. 1
b)
c)
d)
citeste x
(numr real pozitiv)
y[x]
xx-y
ct timp x[x] execut
xx*10
Subiectul I
Care dintre urmtoarele expresii C/C++ are valoarea 1 dac i numai dac numrul natural
nenul memorat n variabila x, de tip int, este divizibil cu 100?
(4p.)
a. x%10+x/10%10==0
b. x/100==0
c. x%10+x/10==0
d. x%10+x%10/10==0
b)
c)
d)
citeste n,m
(numere naturale)
ct timp nm execut
nn+1
mm-1
scrie n
Subiectul I
Care dintre urmtoarele expresii C/C++ are valoarea 1 dac i numai dac numrul natural
memorat de variabila x de tip int are exact dou cifre?
(4p.)
a. x/100==0
c. x/10!=0
Subiectul I
Se consider variabila a care memoreaz un numr cu exact 6 cifre. Care dintre expresiile
C/C++ de mai jos are ca valoare numrul format din cele dou cifre din mijloc ale valorii
memorate n a?
(4p.)
a. (a%100)/100
b. a/100%100
c. a/1000+a%1000
d. a/100%10+a/1000%10
d)
Subiectul I
Stabilii care dintre urmtoarele expresii C/C++ are valoarea 1 dac i numai dac numrul
ntreg memorat n variabila x nu aparine intervalului (-35,-20)[17,100].
(4p.)
Subiectul I
Variabila a memoreaz un numr natural care are exact 3 cifre. Care dintre expresiile
C/C++ de mai jos are ca valoare numrul format din prima i ultima cifr a numrului
memorat de a?
(4p.)
a.
a/10+a%100
b.
a/100+a%10
c.
a/100*10+a%10
d.
a-a/10%10
b)
c)
d)
citete a,n
(numere naturale)
j3
pentru i=1,n execut
dac i%2=0 atunci
aa-j
altfel
aa+j
j7-j
scrie a
Subiectul I
1.
Subiectul I
Stabilii care dintre urmtoarele expresii C/C++ are valoarea 1 dac i numai dac
numrul ntreg memorat n variabila x nu aparine intervalului (-35,-20].
(4p.)
a. (x<-35) || (x>-20)
b. (x<=-35) || (x>=-20)
c. (x<=-35) || (x>-20)
Subiectul I
y=x;
while(x<=3)
{
cout<<"*"; | printf("*");
y=y+1; x=x+y;
}
c. 1
d. 4
b
[v/10]%10
numrului real z.
s s + a*10 + b
Scriei ce valoare se va afia dac se citesc, n
a)
citete v
ordine, urmtoarele valori : 114, 123, 517, 3312,
14, 412, 22, 0.
(6p.)
scrie s
b)
c)
d)
(10p.)
Subiectul I
HHHHHH
a. 0
printf(HH);
(4p.)
b. 4
c. 6
d. 5
Subiectul I
Care dintre expresiile urmtoare, scrise n limbajul C/C++, are valoarea 1 dac i numai
dac valorile variabilelor ntregi x i y sunt numere pare?
(4p.)
a. x-y==0
b. (x+y)%2==0
c. (x%2==0) || (y%2==0)
d.
Scriei cea mai mic valoare care poate fi citit scrie [p/(i*2)]
pentru n astfel nct, n urma executrii
algoritmului, n irul valorilor afiate s existe cel
puin 3 numere care au ultima cifr 0 i care s se
afle pe poziii consecutive.
(4p.)
c)
d)
(10p.)
Subiectul I
a. 4
b. 3
c. 2
d. 5
scrie nr
c)
d)
(10p.)
Subiectul I
a. -30
b. 70
(4p.)
c. -20
50-(100300/2/(2+3))
d. 60
b)
c)
d)
Scriei
programul
algoritmului dat.
C/C++
citete x
(numr natural nenul)
d2; y0; z0
ct timp x 1 execut
p 0
ct timp x%d=0 execut
p p+1
x [x/d]
dac p0 atunci
dac y=0 atunci yd
zd
d d+1
scrie y
scrie z
corespunztor
(10p.)
Subiectul I
b. y=x%10;
c. y=x/10;
d. x=x/10;
algoritmul
alturat,
descris
S-a notat cu [x] partea ntreag numrului real x, iar cu citete x (numr natural)
x%y restul mpririi numrului ntreg x la numrul ntreg
d2
nenul y.
scrie x
a)
Scriei numrul care se afieaz dac se citete ct timp xd execut
ct timp x%d=0 execut
valoarea 100.
(6p.)
x[x/d]
b)
Scriei cel mai mare numr natural de dou cifre care scrie x
trebuie citit pentru variabila x, astfel nct algoritmul
s afieze exact dou valori.
(4p.) dd+1
c)
Scriei n pseudocod un algoritm echivalent cu cel dat,
care s conin o singur structur repetitiv.
(6p.)
d)
Subiectul I
tiind c variabilele x i y sunt de tip ntreg, care este instruciunea prin care variabilei x i
se atribuie cifra zecilor numrului natural cu cel puin dou cifre memorat de variabila y?
(4p.)
a. x=y%10/10;
b. x=y/10%10;
c. x=y%10;
d. x=x/100;
y2*z
Scriei valoarea care se va afia la finalul executrii
algoritmului dac se citesc valorile x=15 i y=25. scrie x
(6p.)
b)
Dac pentru y se citete valoarea 3, scriei toate numerele formate dintr-o singur cifr
care pot fi citite pentru variabila x astfel nct, pentru fiecare dintre acestea, la finalul
executrii algoritmului s se afieze o valoare de forma 2p, unde p este un numr
natural.
(4p.)
c)
d)
(10p.)
Subiectul I
Care este instruciunea prin care variabilei x i se atribuie valoarea sumei cifrelor numrului
natural format din exact trei cifre, memorat de variabila ntreag y?
(4p.)
a. x=y/100+y/10%10+y%10;
b. x=y+y/10+y/100;
c. x=y%10+y%10/10+y/100;
d. x=y%10+y%100+y%1000;
xx%y
numrul natural nenul y.
altfel
a)
Scriei valoarea pe care o va afia algoritmul dac se yy%x
citesc, n aceast ordine, numerele 30 i 25. (6p.)
b)
Dac se citete pentru variabila y valoarea 26, scriei scrie x+y
toate numerele naturale de cel mult dou cifre care pot fi
citite pentru variabila x, astfel nct la finalul executrii
algoritmului s se afieze valoarea 13.
(4p.)
c)
d)
Subiectul I
Care este instructiunea prin care variabilei ntregi x i se atribuie valoarea cifrei sutelor
numrului natural cu cel puin 4 cifre memorat n variabila ntreag y?
(4p.)
a. x=y%10/10;
b. x=y/10/10;
c. x=y%100;
d. x=y/100%10;
a)
Scriei numrul care se afieaz dac se citete scrie y
valoarea 274.
(6p.)
b)
Scriei un numr natural de 3 cifre care poate fi citit pentru variabila x, astfel nct, la finalul
executrii algoritmului s se afieze valoarea 1111.
(4p.)
c)
d)
(10p.)
Subiectul I
Care este instruciunea prin care variabilei x i se atribuie numrul obinut prin inversarea
ordinii cifrelor numrului natural format din exact 2 cifre, memorat n variabila ntreag y?(4p.)
a. x=y/10*10+y%10;
b. x=y%10*10+y/10;
c. x=y%10+y/10*10;
d. x=y%10+y/10;
d)
Subiectul I
Variabila ntreag n memoreaz un numr natural impar. Care dintre urmtoarele expresii
C/C++ are valoarea 1?
(4p.)
a. !(n%2)
b. n%2==0
c. n%2!=0
d. !((n+1)%2==0)
Subiectul I
c=2*a-b;
Care dintre urmtoarele variabile nu i modific valoarea n urma
executrii secvenei de instruciuni alturate, oricare ar fi valorile lor a=a-b; a=c-a;
iniiale? (a,b,c sunt variabile de tip int).
(4p.) b=2*a-c;
a. niciuna
b. doar c
c. doar a i c
d. doar a i b
c)
d)
Subiectul I
1.
care trebuie citite pentru variabila x, astfel nct setul ct timp nr>0 execut
de valori afiate n urma executrii algoritmului s fie xx*10+nr%10
identic cu setul de valori citite pentru x .
(4p.) nr[nr/10]
c)
Scriei n pseudocod un algoritm echivalent cu cel dat, n
care s se nlocuiasc structura pentru...execut cu scrie x
o structur repetitiv cu test final.
(6p.)
d)
Subiectul I
Variabila a, de tip int, memoreaz un numr natural impar, iar variabila b, de tip int,
memoreaz un numr natural par. Care dintre urmtoarele expresii C/C++ are valoarea 1? (4p.)
b. !(!(a%2) || b%2)
a. a%2 && b%2
d. !(a%2) || b%2
c. (a+b+1)%2
citete x
(numr natural nenul)
k0
ct timp x0 execut
kk*10+x%10
x[x/10]
ct timp k0 execut
xx*10+k%10
k[k/100]
scrie x
Subiectul I
1.
Subiectul I
Variabila ntreag x memoreaz un numr natural cu exact 4 cifre. Care dintre urmtoarele
instruciuni C/C++ determin, n urma executrii, eliminarea cifrei sutelor numrului
memorat de variabila x?
(4p.)
a. x=x%10+x/10+x/1000;
b. x=x%1000*100+x/100;
c. x=x%1000+x%100+x%10;
d. x=x/1000*100+x%100;
citete x
Subiectul I
Crui interval i aparine valoarea memorat de variabila real x astfel nct expresia
urmtoare, scris n limbajul C/C++, s aib valoarea 1?
(x<=-2) || (x>-1) && !(x>=1) || (x>50)
(4p.)
b. (-,-2) (-1,50)
a. (-,-2] (-1,1) (50, )
d. (-,-2) (-1,1) (50, )
c. (-,-2) (-1,1] (50, )
Subiectul I
Variabila ntreag x memoreaz un numr natural. Care dintre urmtoarele expresii C/C++
are valoarea 0 dac i numai dac numrul memorat de x NU este divizibil cu 3?
(4p.)
a. x%3
b. (1-x%3)+(2-x%3)
c. (1-x%3)*(2-x%3)
d. 3-x%3
b)
c)
d)
citete x
(numr natural nenul)
z0
p1
repet
cx%10
dac c%20 atunci
zz+c*p
pp*10
x[x/10]
pn cnd x = 0
scrie z
Subiectul I
Crui interval i aparine valoarea memorat de variabila real x astfel nct expresia
urmtoare, scris n limbajul C/C++, s aib valoarea 1?
!((x<=1) || (x>50))
(4p.)
a. (1,50)
b. (-,1] (50, )
c. [1,50)
d. (1,50]
c)
Scriei n pseudocod un algoritm echivalent cu
cel dat, n care s se nlocuiasc structura
scrie s
repetitiv pentru...execut cu o structur
repetitiv cu test final.
(6p.)
d)
Scriei programul
algoritmului dat.
C/C++
corespunztor
(10p.)
Subiectul I
C/C++
este
(4p.)
!((x>=5)&&(x<10))
a. (x<5) || (x>=10)
b. (x<5) || (x>10)
d. (x>=5) || (x<10)
b)
c)
d)
citete n
(numr natural nenul)
citete a
(numr natural)
k0
pentru i2,n execut
citete b
(numr natural)
dac a%10=b%10 atunci
kk+1
altfel
kk-1
ab
scrie k
Subiectul I
Variabilele ntregi x i y memoreaz cte un numr natural nenul. Cel mai mic multiplu
comun al valorilor lor este egal cu numrul memorat n y dac i numai dac urmtoarea
expresie C/C++ are o valoare nenul:
(4p.)
a. y%x
b. y%x==0
c. x%y
d. x%y==0
Subiectul I
a. x%10+y%10==0
b. y%10==x%10
c. x+y%10==0
d. (x%10+y%10)%10==0
ii+3
scrie q
a)
b)
c)
Scriei
programul
algoritmului dat.
d)
C/C++
corespunztor
(10p.)
Subiectul I
tiind c variabila ntreag n memoreaz un numr natural cu cel puin 3 cifre, care dintre
urmtoarele expresii C/C++ are ca valoare numrul obinut dup eliminarea ultimelor 2
cifre ale lui n?
(4p.)
a. n%10/10
b. n%10
c. n/100
d. n/10%10
b)
c)
d)
(6p.)
n[n/5]
scrie q
Subiectul I
Fiecare dintre variabilele ntregi x, y i t memoreaz cte un numr natural de cel mult 4
cifre. tiind c x<y, care dintre urmtoarele expresii C/C++ este egal cu 1 dac i numai
dac numrul memorat de variabila t aparine intervalului nchis [x,y]?
(4p.)
c. (t>=x) || (t<=y)
d. (t<x) || (t>y)
d)
(10p.)
Subiectul I
Fiecare dintre variabilele ntregi x, y i t memoreaz cte un numr natural de cel mult 4
cifre. tiind c x<y, care dintre urmtoarele expresii C/C++ este egal cu 1 dac i numai
dac numrul memorat de variabila t nu aparine intervalului deschis (x,y)?
(4p.)
a. (t<=x) || (t>=y)
b. (t>x) || (t<y)
d)
Subiectul I
Variabilele ntregi x i y memoreaz dou numere naturale cu cel mult 4 cifre fiecare. Care
dintre expresiile de mai jos are valoarea 1, dac i numai dac valoarea memorat de x
aparine intervalului [10,100] i valoarea memorat de y aparine intervalului [5,30]?
(4p.)
(4p.)
a[a/10]
c)
Scriei programul C/C++ corespunztor algoritmului b[b/10]
dat.
(10p.)
scrie n
Scriei n pseudocod un algoritm echivalent cu cel dat
d)
n care structura ct timp...execut s fie
nlocuit cu o structur repetitiv cu test final.
(6p.)
Subiectul I
b. Secvena
conine
o
instruciune
alternativ urmat de o instruciune
repetitiv.
d. Secvena conine o instruciune
alternativ inclus ntr-o instruciune
repetitiv.
algoritmul
alturat,
descris
b)
c)
d)
citete x
(numr natural)
auxx
t1
ct timp aux>9 execut
auxaux/10
tt*10
auxx
repet
cx%10
x[x/10]
xc*t+x
scrie x
pn cnd x=aux
Subiectul I
b)
c)
Scriei programul
algoritmului dat.
d)
C/C++
corespunztor
(10p.)
citete n, d
(numere naturale nenule)
b0
v0
pentru i1,n execut
citete x (numr natural nenul)
a0
auxx
ct timp x % d = 0 execut
aa+1
x[x/d]
ba
vaux
scrie v, ,b
Subiectul I
Variabila ntreag a memoreaz un numr natural format din exact trei cifre, toate cifrele
fiind nenule i distincte. Care dintre urmtoarele instruciuni C/C++ atribuie variabilei e
suma cifrelor lui a?
(4p.)
a.
e=a%10/10+a/100%10+a%10;
b.
e=a/10+a/100+a/1000;
c.
e=a*10/1000+a/10%10+a%10;
d.
e=a*10/1000+a%100%10+a%10;
kk+1
variabila n astfel nct, n urma executrii
exact 6 ori.
(4p.)
scrie k
c)
Scriei programul C/C++ corespunztor
algoritmului dat.
(10p.)
d)
Subiectul I
1.
repet
a)
Scriei valorile care se vor afia dac se citete
numrul n=1327.
(6p.) cn%10
vv*10+c
b)
Scriei dou valori diferite, cu exact 4 cifre fiecare, ce dac c=u atunci
pot fi citite pentru variabila n astfel nct, n urma mm+1
executrii algoritmului, valoarea afiat pentru m s
n[n/10]
fie 3.
(4p.)
pn cnd n=0
c)
Scriei programul C/C++ corespunztor algoritmului
scrie v, m
dat.
(10p.)
d)
Subiectul I
1.
n0
repet
citete x (numr natural)
dac x0 atunci
dac x%5=0 atunci
nn+1
altfel
nn-1
pn cnd x=0
dac n=0 atunci
scrie DA
altfel
scrie NU
Subiectul I
1.
b)
c)
d)
scrie z
Subiectul I
1.
citete x
(numr natural nenul)
nr 0
pentru i1,x execut
citete n (numr ntreg)
dac n%x=0 atunci
nrnr+1
scrie nr
Subiectul I
b)
c)
Scriei
programul
C/C++
corespunztor
algoritmului dat.
(10p.)
Scriei n pseudocod un algoritm echivalent
cu cel dat n care s se nlocuiasc structura
repet...pn
cnd cu o structur
repetitiv cu test iniial.
(6p.)
d)
citete x,y
(numere naturale nenule)
t0
u1
repet
dac x%10 > y%10
atunci
z x%10
altfel
z y%10
tt+z*u
uu*10
x[x/10]
y[y/10]
pn cnd x=0 i y=0
scrie t
Subiectul I
Care dintre expresiile C/C++ de mai jos, are valoarea 1 dac valoarea variabilei ntregi x este
un numr ntreg par i strict pozitiv ?
(4p.)
b. (x%2!=0)||(x<0)
a. !((x%2!=0)||(x<=0))
d. ((x+1)%2==0)&&(x>=2)
c. !((x%2==0)||(x>0))
citete x,y
(numere naturale nenule)
dac x<y atunci
xy
n0
ct timp x>=y execut
xx-y
nn+1
scrie n, x
a)
b)
c)
d)
Subiectul I
x [x/10]
a)
Scriei valoarea ce se va afia dac se citesc
pentru n valoarea 5 i pentru x, n aceast ordine,
valorile: 523, 4256, 324, 4, 86935.
(6p.) pentru j1,i-1 execut
x x*10
b)
Dac n = 4, scriei un ir de valori pare care pot fi
citite pentru x astfel nct s se afieze 1234. s s + x
(6p.)
scrie s
c)
Scriei
programul
C/C++
corespunztor
algoritmului dat.
(10p.)
d)
Scriei n pseudocod un algoritm echivalent cu cel dat care s utilizeze n locul structurii
ct timp...execut o structur repetitiv condiionat posterior.
(4p.)
Subiectul I
Care dintre urmtoarele expresii C/C++ are valoarea 1 dac numrul natural memorat de
variabila n este divizibil cu 12?
(4p.)
a. (n%4 == 0) || (n%3 == 0)
Se
nlocuiete
prima
structur
dac...atunci cu atribuirea j4.
Modificai condiia logic din cadrul
structurii ct timp...execut astfel
nct, pentru n=4, algoritmul s afieze:
****
***
**
*
(4p.)
ji-n
altfel
jn-i
ct timp j 0 execut
scrie *
jj-1
b1
dac b 0 atunci
salt la rnd nou (sfrit de rnd)
c)
algoritmului dat.
(10p.)
d)
Subiectul I
Variabilele numerice a, b i aux sunt de acelai tip. Care dintre urmtoarele secvene
interschimb corect valorile variabilelor a i b?
(4p.)
a. aux = b; b = a; a = aux;
b. aux = a; b = a; b = aux;
c. aux = b; aux = a; a = b;
d. b = aux; aux = a; a = b;
b)
Dac a=110, iar p=18, scriei cel mai
d)
(10p.)
Subiectul I
Care dintre urmtoarele expresii C/C++ are valoarea 1 dac variabila x memoreaz un
numr natural ptrat perfect?
(4p.)
a. sqrt(x) == floor(sqrt(x))
b. sqrt(x) != floor(sqrt(x))
c. floor(sqrt(x))!=ceil(sqrt(x))
d. x-floor(x)==ceil(x)
a)
Scriei ce se va afia dac se citesc pentru
a valorea 625231, iar pentru b valoarea a [a/10]
425271.
(6p.) b [b/10]
d)
Efectuai un numr minim de modificri asupra algoritmului dat astfel nct prin
executarea algoritmul obinut s se calculeze n variabila c numrul de cifre pare,
comune i aflate pe poziii identice, pe care le au cele dou valori citite.
(4p.)
(10p.)
Subiectul I
b. if -5 < x < 2
{ x=x+1; y=y-1;}
Subiectul I
Care dintre urmtoarele expresii C/C++ are valoarea 1 dac i numai dac valoarea real
memorat de variabila y nu aparine intervalului deschis determinat de valorile reale distincte
memorate de variabilele x i z (x<z)?
(4p.)
a. !((z<x) || (z>y))
b)
c)
d)
scrie p
Subiectul I
a. n=n%100/10;
b. n=n/10%1000;
c. n=n/10%10000;
d. n=n%10/1000;
c)
Scriei programul C/C++ corespunztor algoritmului scrie k
dat.
(10p.)
d)
Subiectul I
b)
Dac se citete un ir de numere naturale distincte
scrie k
dou cte dou, numere de exact dou cifre, scriei
care poate fi valoarea maxim afiat.
(4p.)
c)
d)
(10p.)
Subiectul I
a. 1012.34
b. 10.12
c. 0.12
d. 10
algoritmul
alturat,
reprezentat
b)
c)
d)
dac c0 atunci
kk+x
xx+1
scrie k
Subiectul I
1.
algoritmul
alturat,
reprezentat
b)
c)
d)
citete a
(numr natural)
b0
p1
ct timp a>0 execut
ca%10
dac c%20 atunci
bb+p*c
pp*10
a[a/10]
scrie b
Subiectul I
34.
(6p.)
scrie a
c)
Scriei programul C/C++ corespunztor algoritmului
dat.
(10p.)
d)
Subiectul I
Subiectul I
b)
c)
Scriei
programul
algoritmului dat.
d)
C/C++
corespunztor
(10p.)
x[x/10]
scrie aux
altfel
scrie nu
Subiectul I
citete n
(numr natural, n>1)
ok0
ct timp n>0 execut
cn%10
dac c>5 i c%2=0 atunci
ok11
altfel
ok10
n[n/10]
Subiectul I
b)
c)
Scriei
programul
algoritmului dat.
d)
C/C++
corespunztor
(10p.)
citete n
(numr natural, n>1)
ok0
ct timp n>0 execut
cn%10
dac c%2=1 atunci
ok11
altfel
ok10
n[n/10]
Subiectul I
Variabila ntreag n memoreaz un numr natural, cu cel puin dou cifre. Care dintre
instruciunile C/C++ de mai jos determin nlocuirea cu 0 a ultimei cifre a numrului
memorat n variabila n?
(4p.)
b. n=n/10;
c. n=n-n%10;
d. n=n-n/10;
a. n=n*(n%10);
citete n, k
2. Se consider algoritmul alturat, descris n pseudocod.
(numere naturale nenule)
S-a notat cu x%y restul mpririi numrului natural x la
numrul natural nenul y, iar cu [z] partea ntreag a
pentru i1,n execut
numrului real z.
dac [i/k]=0 atunci
scrie i
Scriei valorile care se vor afia dac se citesc, n
a)
kk-1
ordine, numerele 7 i 5.
(6p.)
altfel
b)
Dac n=11, scriei cea mai mic valoare care poate fi scrie i%k
citit pentru k astfel nct, n urma executrii
algoritmului, s se afieze, n ordine, toate numerele
naturale din intervalul nchis [1,11].
(4p.)
c)
d)
Subiectul I
Care dintre variantele de mai jos declar constanta x astfel nct aceasta s memoreze
corect numrul real 3,14?
(4p.)
const int x=314/100;
const char x=3.14;
b.
const unsigned int x=3.14;
const float x=3.14;
d.
c)
d)
citete a,b,c
(numere naturale nenule)
xa
Scriei cele mai mari trei numere naturale dac x>b atunci
nenule, distincte, cu cel mult dou cifre fiecare,
xb
care pot fi citite pentru a, b respectiv c, astfel
nct s se afieze valoarea 7 la finalul dac x>c atunci
executrii algoritmului.
(4p.)
xc
scrie a
Subiectul I
a.
c.
In secvenele C/C++ urmtoare toate variabilele sunt de tip ntreg i memoreaz numere
cu cel mult 3 cifre. Care dintre variantele de mai jos determin interschimbarea valorilor
memorate de variabilele a i b?
(4p.)
aux=b; a=b; b=aux;
a=a+b; b=a-b; a=a-b;
b.
a=b; b=a;
a=a+b; b=a-b; a=b-a;
d.
algoritmul
alturat,
descris
citete a
(numr natural)
dat.
(10p.)
d)
scrie b
Subiectul I
Variabila ntreg n memoreaz un numr natural format din exact dou cifre nenule. Care
dintre urmtoarele instruciuni C/C++ determin memorarea n variabila ntreag t a
numrului care are aceleai cifre ca i n, dar n ordine invers?
(4p.)
b. t=n/10*10+n%10;
a. t=n%10*10+n/10;
d. t=n%10*10+t/10;
c. t=n%10+n/10;
algoritmul
alturat,
descris
citete n
(numr natural)
Subiectul I
1.
citete a, b, k
(numere naturale)
t a
p 0
ct timp tb execut
dac k=t%10 atunci
scrie t
p1
tt+1
Subiectul I
a. BineRau
b. Foarte bine
c. Rau
d. Bine
yx
b)
Scriei n pseudocod un algoritm echivalent cu cel dat,
x[(x+z/x)/2]
n care s se nlocuiasc structura repet...pn pn cnd x=y
cnd cu o structur repetitiv cu test iniial.
(6p.)
scrie x
c)
d)
Subiectul I
algoritmul
alturat,
descris
b)
c)
d)
citete n
(numr natural nenul)
nr0
y0
pentru i1,n execut
repet
citete x (numr real)
nrnr+1
pn cnd x>=1 i x<=10
yy+x
scrie [y/n]
scrie nr
Subiectul I
1.
b)
c)
d)
citete n,m
(numere naturale, nm)
s0
ct timp n<m execut
ss+n
nn+3
Subiectul I
c)
Scriei n pseudocod un algoritm echivalent cu cel
p 1
dat care s utilizeze o singur structur repetitiv.
pentru i1,k1 execut
(4p.)
p p * 10
d)
Scriei programul C/C++ corespunztor algoritmului
x n2*p + n1
dat.
(10p.)
scrie x
Subiectul I
b)
c)
d)
Scriei n pseudocod un algoritm echivalent cu cel dat care s utilizeze n locul structurii
ct timp...execut o structur repetitiv condiionat posterior.
(4p.)
(10p.)
Subiectul I
c)
Scriei
programul
C/C++
corespunztor
algoritmului dat.
(10p.)
d)
Subiectul I
Scriei n pseudocod un algoritm echivalent cu cel dat, care s nu utilizeze nicio structur
repetitiv.
(4p.)
d)
(10p.)
Subiectul I
Variabila ntreag x memoreaz o valoare mai mare ca 1000, format doar din cifre
distincte. Care dintre urmtoarele instruciuni C/C++ afieaz o singur cifr?
(4p.)
b. cout<<x/100; | printf("%d",x/100);
a. cout<<x/1; | printf("%d",x/1);
c. cout<<x%100; | printf("%d",x%100);
d. cout<<x%10/1;| printf("%d",x%10/1);
c)
d)
citete n
(numr ntreg)
i 1
Scriei toate valorile care pot fi citite pentru n
astfel nct s se afieze 4.
(6p.) ct timp i*i n execut
i i+1
(10p.)
Subiectul I
1.
citete x
(numr ntreg)
S-a notat cu x%y restul mpririi numrului natural x la dac x<0 atunci
x -x
numrul natural nenul y.
p 1
a)
Scriei ce se va afia pentru x=8.
(6p.)
pentru i1,x execut
b)
Scriei toate numerele naturale, de cte o singur cifr, p (p*4)%10
care, citite pentru x, determin afiarea valorii 4. (6p.)
scrie p
c)
Scriei n pseudocod un algoritm echivalent cu cel dat
care s nu utilizeze nicio structur repetitiv.
d)
(4p.)
Subiectul I
tiind c iniial variabilele ntregi x, y i z au valorile x=1, y=2 respectiv z=3, n ce ordine
trebuie scrise atribuirile urmtoare astfel nct, n final, expresia x+y+z s aib valoarea
maxim?
(4p.)
I) x=x+y-z;
II) y=x-y+z;
III) z=z-x+y;
a. III
II
b. I
II
III
c. III
II
d. I III
II
citete a
b)
Scriei cel mai mic i cel mai mare numr, fiecare ab
avnd exact 3 cifre, care pot fi citite astfel nct, n pn cnd a<10
ambele cazuri, s se afieze valoarea 7.
(6p.)
scrie b
c)
Scriei programul C/C++ corespunztor algoritmului
dat.
(10p.)
d)
Subiectul I
Cte grafuri neorientate, distincte, cu 4 vrfuri, se pot construi? Dou grafuri se consider
distincte dac matricele lor de adiacen sunt diferite.
(4p.)
6
6
24
4
4
2
b.
c.
d.
a.
4.
Prin nlimea unui arbore cu rdcin nelegem numrul de muchii ale celui mai lung lan
format din noduri distincte care are una dintre extremiti n rdcina arborelui. Scriei care
este nlimea i care sunt frunzele arborelui descris prin urmtorul vector de tai:
(6,6,5,0,6,4,4,7).
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur dou numere naturale nenule n i m
(2m10, 2n10) i care construiete n memorie i apoi afieaz o matrice A cu n linii
(numerotate de la 1 la n) i m coloane (numerotate de la 1 la m) cu proprietatea c fiecare
element Aij memoreaz cea mai mic dintre valorile indicilor i i j (1in, 1jm).
Matricea se va afia pe ecran, cte o linie a matricei pe cte o linie a ecranului, elementele
fiecrei linii fiind separate prin cte un spaiu.
1 1 1 1 1
Exemplu: pentru n=4 i m=5 se va afia matricea alturat.
(10p.) 1 2 2 2 2
1 2 3 3 3
1 2 3 4 4
Subiectul II
Cte grafuri neorientate, distincte, cu 8 vrfuri se pot construi? Dou grafuri se consider
distincte dac matricele lor de adiacen sunt diferite.
(4p.)
14
14
28
b. 2
c. 4
d. 64
a. 4
2.
Se consider o stiv n care iniial au fost introduse, n aceast ordine, elementele cu valorile
1, 2 i 3. Se noteaz cu AD(x) operaia prin care se adaug elementul cu valoarea x n
vrful stivei i cu EL operaia prin care se elimin elementul din vrful stivei. Asupra acestei
stive se execut urmtoarea secven de operaii: AD(4);EL;AD(5);EL;AD(6);EL;EL.
a) Care este valoarea elementului din vrful stivei n urma executrii acestei secvene de
operaii?
(3p.)
b) Care este suma valorilor elementelor aflate n stiv n urma executrii acestei secvene de
operaii?
(3p.)
4.
5.
S se scrie un program C/C++ care citete de la tastatur un cuvnt format din cel mult 20
de caractere, doar litere mici ale alfabetului englez. Programul determin transformarea
cuvntului citit prin nlocuirea fiecrei vocale a cuvntului, cu un ir format din dou caractere
i anume vocala respectiv urmat de litera mare corespunztoare, restul literelor
nemodificndu-se, ca n exemplu. Programul afieaz pe ecran cuvntul obinut, pe o
singur linie. Se consider vocale literele din mulimea {a,e,i,o,u}.
s = 0;
for(j = 0; j < n/2; j++)
{
.............
}
printf("%d",s);|cout<<s;
Subiectul II
1.
Cte frunze are arborele cu rdcin descris prin urmtorul vector de tai:
(6,5,5,2,0,3,3,3,8,7,7)?
(4p.)
b. 2
c. 5
d. 4
a. 1
2.
4.
5.
struct fractie
{
int x,y;
}f,f1,f2;
//C
//C++
n=strlen(s);
for(i=0;i<n;i++)
if (s[i]==e) printf(%c,*);
else printf("%c%c",e,s[i]);
n=strlen(s);
for(i=0;i<n;i++)
if (s[i]==e) cout<<*;
else cout<<'e'<<s[i];
Subiectul II
1.
2.
vrf
2
1
4.
Fie s o variabil ce memoreaz un ir de caractere, format doar din litere ale alfabetului
englez, i i o variabil de tip int. Scriei instruciunile ce pot nlocui punctele de suspensie
din secvena de program alturat astfel nct i=0;
executarea ei s determine eliminarea tuturor while (i<strlen(s))
literelor mici din irul s i apoi afiarea irului
...............
obinut.
(6p.) printf("%s",s); | cout<<s;
5.
Subiectul II
ntr-un graf neorientat cu 20 muchii, fiecare nod al grafului are gradul un numr nenul. Doar
patru dintre noduri au gradul un numr par, restul nodurilor avnd gradele numere impare.
Care este numrul maxim de noduri pe care poate s le aib graful?
(4p.)
b. 36
c. 10
d. 16
a. 32
Variabila d, declarat alturat, memoreaz n cmpurile a i b struct dreptunghi
limea i, respectiv, lungimea unui dreptunghi. Care dintre {
float a,b,aria;
urmtoarele instruciuni atribuie cmpului aria al variabilei d
valoarea ariei dreptunghiului respectiv?
(4p.) }d;
b. aria.d=a.d*b.d;
a. d.aria==d.a*d.b;
aria.d=d.a*d.b;
c.
d. d.aria=d.a*d.b;
2.
4.
5.
i=0;
j=strlen(s)-1;
while (i<j)
{
.........
}
Subiectul II
int a[5][6];
d. a[10*5]
while (...)
Se consider o list liniar simplu nlnuit
p=p->urm;
alocat dinamic, cu cel puin dou
delete p->urm; | free (p->urm);
elemente. Fiecare element al listei reine n
p->urm=NULL;
cmpul urm adresa elementului urmtor din
list sau NULL dac nu exist un element
urmtor.
tiind c variabila p reine adresa primului element din list, care dintre expresiile urmtoare
poate nlocui punctele de suspensie n secvena de instruciuni de mai sus astfel nct, n
urma executrii acesteia, s fie eliminat ultimul element al listei?
(4p.)
a. p->urm->urm!=NULL
b. p->urm!=NULL
d. p->urm->urm==NULL
c. p!=NULL
2.
4.
5.
Se consider un text cu maximum 255 de caractere n care cuvintele sunt separate prin
unul sau mai multe spaii. Primul caracter din textul citit este o liter, iar cuvintele sunt
formate numai din litere mici ale alfabetului englez. Scriei un program C/C++ care citete
de la tastatur textul i l transform, nlocuind prima liter a fiecrui cuvnt cu litera mare
corespunztoare, restul caracterelor rmnnd nemodificate. Textul astfel transformat va fi
afiat pe ecran.
Exemplu: dac de la tastatur se introduce textul: mare
frig rosu
se va afia pe ecran: Mare
Frig Rosu
(10p.)
(6p.)
Subiectul II
1.
2.
while (p->urm!=NULL)
{ if (p->urm->info<p->info)
p->urm->info=p->info;
p=p->urm;
}
cout<<p->info;
| printf(%d,p->info);
Dac variabila p reine adresa primului element al listei atunci, n urma executrii secvenei
de program de mai sus se afieaz ntotdeauna:
(4p.)
b. cea mai mare dintre valorile memorate de
a. cea mai mic dintre valorile memorate de
elementele din list
elementele din list
c. valoarea memorat de
d. valoarea memorat de primul element din
penultimul
element din list
list
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
3.
4.
5.
Se consider un text cu maximum 255 de caractere, format din litere mici ale alfabetului
englez i spaii. Textul conine cel puin o consoan. Scriei un program C/C++ care citete
de la tastatur textul i apoi determin transformarea acestuia, eliminnd numai ultima
consoan care apare n text, ca n exemplu. Programul va afia pe ecran textul obinut.
Exemplu: dac de la tastatur se introduce textul: mare frig saci
pe ecran se va afia: mare
frig
sai
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
(10p.)
Subiectul II
a. 3
b. 2
c. 1
d. 4
2.
strcpy(s+2,s+4);
cout<<s<< <<strlen(s);
| printf(%s %d,s,strlen(s));
s=...;
while ( ... )
{
p=p->urm;
s=s+p->info;
}
cout<<s; | printf(%d,s);
4.
5.
Subiectul II
a.
b.
c.
d.
2.
a.
4.
5.
strcpy(x,s+4);
strcpy(s+4,123);
strcat(s,x);
cout<<s; | printf(%s,s);
Subiectul II
a.
b.
c.
d.
2.
ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare element reine n cmpul info
o valoare ntreag, iar n cmpul urm adresa elementului urmtor din list sau NULL dac
nu exist un element urmtor. Variabila p reine adresa primului element din list.
Lista conine, ncepnd de la while((p->urm!=NULL)&&(p!=NULL))
primul element, n aceast ordine, { p->urm=p->urm->urm;
valorile: 2, 3, 4, 5, 6, 7, 8. Ce se
p=p->urm;
va afia n urma executrii
cout<<p->info<< ; | printf(%d ,p->info);
secvenei
de
instruciuni
}
alturate?
(4p.)
b. 2 4 8
a. 2 5 8
d. 4 6 8
c. 2 4 6 8
4.
5.
0 4 16
36 64 100
Subiectul II
0
0
0
0
1
1
d. 5
a. 4
b. 3
c. 1
1
0
0
0
1
0
1
0
0
1
0
1
0
0
0
0
0
0
0
1
0
1
0
0
0
1
0
0
1
0
2.
Cte grafuri neorientate, distincte, cu 5 vrfuri, se pot construi? Dou grafuri se consider
distincte dac matricele lor de adiacen sunt diferite.
(4p.)
4
2
10
10
a. 5
b. 5
c. 2
d. 4
ntr-o list liniar simplu nlnuit, alocat dinamic, cu cel puin 3 noduri, fiecare element
reine n cmpul nr un numr real, iar n cmpul urm adresa urmtorului element din list
sau valoarea NULL n cazul n care este ultimul nod al listei. Dac p reine adresa primului
element din list, scriei o expresie C/C++ a crei valoare este egal cu suma valorilor reale
reinute n primele trei noduri ale listei.
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur dou valori naturale nenule m i n
(m10, n10) i apoi m*n numere naturale nenule cu cel mult 4 cifre fiecare, reprezentnd
elementele unei matrice cu m linii i n coloane. Programul determin apoi valorile minime de
pe fiecare linie a matricei i afieaz pe ecran cea mai mare valoare dintre aceste minime.
3 6 5 4 7
(cea mai mic valoare de pe prima linie a matricei este 3, cea mai mic valoare de pe linia a
doua este 6, cea mai mic valoare de pe linia a treia este 2. Cea mai mare dintre aceste trei
valori este 6).
(10p.)
Subiectul II
a. 1, 3, 4, 5
2.
b. 2, 3, 4, 5
c. 1, 4, 5, 6
0
0
1
0
0
0
1 1 0
0 1 1
1 0 1
0 0 0
1 0 0
1 0 0
d. 2, 3,
0
0
0
1
0
1
5
0
1
0
0
0
0
ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare element reine n cmpul inf
un numr ntreg, iar n cmpul urm adresa urmtorului nod din list sau NULL n cazul
ultimului nod al listei. Adresa primului element al listei este reinut n variabila prim, iar p
este o variabil de acelai tip cu prim. Dac n list sunt memorate, n aceast ordine,
numerele 1, 2, 3, 4 ca n figura de mai jos, care va fi coninutul listei n urma executrii
secvenei de instruciuni alturate?
(4p.)
p=prim;
prim=p->urm;
p->urm=NULL;
prim->urm->urm->urm=p;
a. 1 3 2 4
b. 2 3 4 1
c. 4 1 2 3
d. 1 4 3 2
4.
Scriei ce se afieaz pe
ecran n urma executrii
secvenei
de
program
alturate, n care variabila s
memoreaz un ir de cel mult
12 caractere, iar variabila i
este de tip ntreg.
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<25) i apoi
construiete n memorie o matrice cu n linii i n coloane, numerotate de la 1 la n, ale crei
elemente primesc valori dup cum urmeaz: elementul din linia i i coloana j primete ca
valoare ultima cifr a produsului i*j (1in i 1jn).
Programul va afia matricea astfel construit pe ecran, cte o linie a matricei 1 2 3 4
pe o linie a ecranului, elementele fiecrei linii fiind separate prin cte un 2 4 6 8
3 6 9 2
spaiu.
4 8 2 6
Exemplu: pentru n=4 se va afia matricea alturat.
(10p.)
char s[13]="informatica";
cout<<strlen(s); | printf("%d",strlen(s));
for (i=0;i<strlen(s);i++)
if (strchr("aeiou",s[i])!=NULL)
s[i]= '*';
cout<<" "<<s;
| printf(" %s",s);
Subiectul II
a. 0 0 5 7 6 5 1
b. 1 0 0 7 6 5 0
c. 7 4 5 0 4 5 4
d. 7 4 5 0 4 5 7
2.
a=p;
while (a->ref != NULL)
{ b=a;
a=a->ref;
}
Scriei listele de adiacen prin care este reprezentat un exemplu de graf neorientat conex,
cu 6 noduri, numerotate de la 1 la 6, care este eulerian, dar NU este hamiltonian.
(4p.)
4.
Scriei ce se afieaz pe
ecran n urma executrii
secvenei
de
program
alturate, n care variabila s
memoreaz un ir de cel mult
12 caractere, iar variabila i
este de tip ntreg.
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<25) i apoi
construiete n memorie o matrice cu n linii i n coloane, numerotate de la 1 la n, ale crei
elemente primesc valori dup cum urmeaz:
- elementele aflate pe diagonala secundar sunt toate nule;
- elementele de pe coloana i (1in), aflate deasupra diagonalei secundare, au valoarea
egal cu i;
- elementele de pe linia n-i+1 (1in), aflate sub diagonala secundar, au valoarea egal
cu i.
Programul afieaz pe ecran matricea construit, cte o linie a matricei pe 1 2 3 0
cte o linie a ecranului, elementele fiecrei linii fiind separate prin cte un 1 2 0 3
1 0 2 2
spaiu.
Exemplu: pentru n=4 se va afia matricea alturat.
(10p.) 0 1 1 1
char s[13]="abcdefghoid";
i=0;
cout<<strlen(s); | printf("%d",strlen(s));
while (i<strlen(s))
if (strchr("aeiou",s[i])!=NULL)
strcpy(s+i,s+i+1);
else i++;
cout<<" "<<s; | printf(" %s",s);
Subiectul II
a. 12
2.
b. 6
c. 4
d. 3
ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare element reine n cmpul inf
un numr ntreg, iar n cmpul ref adresa urmtorului nod din list sau NULL n cazul
ultimului element al listei.
Adresa primului element al listei este reinut n p=prim; s=0;
variabila prim, iar variabila p este de acelai tip cu while (p->ref!=NULL)
prim. Dac n list sunt memorate, n aceast { if (p->inf%5==0)
s=s+p->inf;
ordine, numerele 3, 5, 18, 20, ce se va afia pe
p=p->ref;
ecran n urma executrii secvenei alturate de
program?
(6p.) }
cout<<s; | printf("%d",s);
a. 21
b. 25
c. 5
d. 46
3.
4.
Care sunt etichetele nodurilor de tip frunz ale arborelui cu rdcin, avnd 7 noduri,
numerotate de la 1 la 7, i urmtorul vector de tai: (5,1,5,1,0,7,5)?
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur un numr natural nenul, cu maximum
8 cifre, construiete n memorie i afieaz apoi pe ecran o matrice ptratic, avnd
numrul de linii i de coloane egal cu numrul de cifre ale numrului dat, completat cu
cifrele numrului citit.
Astfel, elementele de pe prima coloan a matricei vor fi toate egale cu
cifra unitilor numrului dat, elementele de pe a doua coloan a
matricei vor fi toate egale cu cifra zecilor numrului dat, i aa mai
departe, ca n exemplu.
Exemplu: dac se citete numrul 1359, matricea construit va fi cea
alturat.
(10p.)
Subiectul II
ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare element reine n cmpul ref
adresa urmtorului nod din list sau NULL n cazul ultimului element al listei, iar n cmpul
inf un numr ntreg.
Adresa primului element al p=prim;
listei este reinut n variabila while ((p->inf%2==0) && (p!=NULL))
p=p->ref;
prim, iar p este o variabil de
if
(p!=NULL)
acelai tip cu prim. Ce va
cout<<(p->inf);
| printf("%d",p->inf);
afia pe ecran n urma
else
executrii
secvenei
de
cout<<"NU"; | printf("NU");
program alturate?
(6p.)
2.
a. 3
b. 1
c. 0
d. 2
4.
5.
Scriei un program C/C++ care citete de la tastatur un numr natural cu exact 5 cifre i
construiete n memorie o matrice cu 6 linii i 6 coloane, numerotate de la 1 la 6, format
astfel:
- elementele aflate pe diagonala principal sunt toate nule;
- elementele de pe linia 1, aflate deasupra diagonalei principale precum i elementele de pe
coloana 1, aflate sub diagonala principal au toate valoarea egal cu cifra unitilor
numrului citit;
- elementele de pe linia 2, aflate deasupra diagonalei principale precum i elementele de pe
coloana 2, aflate sub diagonala principal au toate valoarea egal cu cifra zecilor numrului
citit, i aa mai departe, ca n exemplu.
0 1 1 1 1 1
Matricea astfel construit va fi afiat pe ecran, cte o linie a
1 0 3 3 3 3
matricei pe cte o linie a ecranului, elementele de pe aceeai linie
1 3 0 7 7 7
fiind separate prin cte un spaiu.
Exemplu: dac se citete numrul 28731 matricea construit va fi 1 3 7 0 8 8
1 3 7 8 0 2
cea scris alturat.
(10p.)
1 3 7 8 2 0
Subiectul II
Dac n este un numr natural impar mai mare dect 2, atunci un graf neorientat cu n
noduri, n care fiecare nod este adiacent cu exact n-1 noduri, este ntotdeauna :
(4p.)
a. arbore
b. graf eulerian
c. graf neconex
d. graf aciclic (graf care nu conine niciun
ciclu)
2.
Care dintre urmtoarele variante reprezint o declarare corect pentru o variabil x care
memoreaz simultan vrsta n ani mplinii i media la bacalaureat a unui elev?
(4p.)
ntr-o list liniar simplu nlanuit, alocat dinamic, fiecare element conine n cmpul nr un
numr real, iar n cmpul urm adresa elementului urmtor sau NULL dac nu exist un
element urmtor. Lista are cel puin dou elemente, iar variabila x memoreaz adresa
primului element din list. Cu ce pot fi completate punctele de suspensie din secvena
urmtoare, astfel nct, n urma executrii, s afieze cuvntul ADEVARAT dac media
aritmetic dintre valorile cmpului nr ale primelor dou elemente din list este mai mic sau
cel puin egal cu 4.75, respectiv cuvntul FALS n caz contrar?
if (.....)cout << ADEVARAT; | printf(ADEVARAT);
else cout << FALS; | printf(FALS);
4.
5.
Ce se va afia n urma
executrii secvenei de program
alturate tiind c variabila a
memoreaz un ir cu cel mult
100 de caractere, iar variabilele
i i k sunt de tip ntreg? (6p.)
(6p.)
k=a-A;
strcpy(a,clasa a-XII-a A);
cout<<a<<endl; | printf(%s\n,a);
for(i=0;i<strlen(a);i++)
if(a[i]>=a&& a[i]<=z) a[i]=a[i]-k;
cout<<a; | printf(%s,a);
Subiectul II
ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare element memoreaz n cmpul
nr un numr ntreg, iar n cmpul urm adresa elementului urmtor din list sau valoarea
NULL dac nu exist un element urmtor. Lista conine exact trei elemente ale cror
adrese sunt memorate n variabilele p, q i r. tiind c p->nr==1, q->nr==2, r->nr==3,
p->urm!=NULL i r->urm==q, care este ordinea numerelor din list?
(4p.)
a. 1 3 2
2.
b. 1 2 3
c. 2 1 3
d. 3 2 1
Care dintre urmtoarele variante reprezint o declarare corect pentru o variabil x care
memoreaz simultan codul de identificare al unui candidat la un examen, exprimat printr-un
numr natural de cel mult 4 cifre i media obinut de acesta la examen, exprimat printr-un
numr real?
(4p.)
c. int x.cod ;
float x.media;
Care este gradul maxim posibil i care este gradul minim posibil pentru un nod dintr-un
arbore cu n noduri (n>1)?
(6p.)
4.
5.
Subiectul II
Fiecare element al unei liste circulare, simplu nlnuit, nevid, alocat dinamic,
memoreaz n cmpul val o valoare ntreag, iar n cmpul adr adresa elementului
urmtor din list. tiind c variabila p reine adresa unui element oarecare din list, iar
variabila q este de acelai tip cu p, precizai care dintre urmtoarele secvene de program
afieaz, n urma executrii, toate valorile memorate de elementele listei?
(4p.)
a.
q=p;
while(q!=p) {cout<<q->val;
q=q->adr;}
q=p;
while(q!=p) { printf(%d,q->val);
q=q->adr; }
b.
q=p;
while(q->adr!=p){cout<<q->val;
q=q->adr;}
q=p;
while(q->adr!=p){ printf(%d,q->val);
q=q->adr; }
c.
q=p;
do{ cout<<q->val;
q=q->adr;
}while(q!=p);
q=p;
do{ printf(%d,q->val);
q=q->adr;
}while(q!=p);
d.
q=p->adr;
while(q!=p) {cout<<q->val;
q=q->adr;}
q=p->adr;
while(q!=p) { printf(%d,q->val);
q=q->adr; }
2.
Care dintre urmtoarele variante reprezint o declarare corect pentru o variabil x care
memoreaz simultan coordonatele reale (abscisa i ordonata) ale unui punct n planul
xOy?
(4p.)
b. char x[2];
a. struct punct{float ox,oy;} x;
c. struct x{float ox,oy;};
d. float x;
Un arbore binar este un arbore cu rdcin n care fiecare nod are cel mult 2 descendeni
direci (fii). nlimea unui arbore este reprezentat de numrul maxim de muchii ale unui
lan elementar ce unete rdcina cu un vrf terminal (frunz).
Pentru un arbore binar cu exact 8 noduri, care este nlimea minim posibil i care poate fi
numrul maxim de noduri terminale (frunze) ale arborelui n acest caz?
(6p.)
4.
5.
strcpy(a,informatica);
for(i=0;i<strlen(a);i++)
if(...)
cout<<...; | printf(...);
else
cout<<...; | printf(...);
Subiectul II
Un graf neorientat este complet dac oricare dou noduri distincte ale sale sunt adiacente.
Care este numrul de muchii care trebuie eliminate dintr-un graf neorientat, complet, cu 7
noduri, astfel nct graful parial obinut s fie arbore?
(4p.)
a. 15
2.
b. 1
c. 6
d. 21
Fiecare element al unei liste liniare, simplu nlnuite, alocat dinamic, reine n cmpul nr
un numr ntreg, iar n cmpul adr adresa elementului urmtor din list sau NULL dac nu
exist un element urmtor. Dac p reine adresa primului element, iar lista are cel puin
dou elemente, care dintre urmtoarele secvene de instruciuni copiaz n cmpul nr al
celui de-al doilea element al listei, coninutul cmpului nr al primului element din list?(4p.)
a. p->nr=p->adr->nr;
b. p->adr=p->nr;
c. p->adr->nr=p->nr;
d. p->adr->adr->nr=p->nr;
4.
5.
(6p.)
Subiectul II
Matricea de adiacen a unui graf neorientat G are numrul valorilor de 1 egal cu jumtate
din numrul valorilor de 0. Care dintre numerele de mai jos poate fi numrul de noduri ale
grafului G?
(4p.)
a. 12
2.
b. 14
c. 11
d. 13
Care dintre urmtoarele variante reprezint o declarare corect pentru o variabil x care
memoreaz simultan numrtorul i numitorul unei fracii ireductibile:
(4p.)
a. float x;
b. char x[2];
ntr-o list circular, simplu nlnuit, nevid, alocat dinamic, cu exact 9 elemente,
fiecare element memoreaz n cmpul val o valoare ntreag, iar n cmpul adr adresa
elementului urmtor.
tiind c n list sunt memorate, n ordine, q=p;
numerele de la 1 la 9, i variabila p reine cout<<q->adr->val<<endl;
| printf(%d,q->adr->val);
adresa
elementului cu valoarea 4, iar
while(q->adr!=p)
variabila q este de acelai tip cu p, precizai
q=q->adr;
ce se va afia n urma executrii secvenei
cout<<q->adr->val;
de program alturate?
(6p.)
| printf(%d,q->adr->val);
4.
5.
3
9
24
64
7
4
12
36
94
8
5 6
15 7
34 8
78 9
9 10
Subiectul II
a. p=p*a[21-i][i]*a[i][21-i];
b. p=p*a[i][i]*a[i][20-i];
c. p=p*a[i][i]*a[21-i][21-i];
d. p=p*a[21-i][21-i]*a[i][21-i];
2.
ntr-un graf orientat cu 7 noduri suma gradelor interioare ale tuturor nodurilor este egal cu
10. Care este valoarea sumei gradelor exterioare ale tuturor nodurilor?
(4p.)
5
a.
b.
20
c.
10
17
d.
Se consider declarrile de mai jos, n care variabila ev memoreaz date despre un anumit
elev. Scriei instruciunea C/C++ prin care se iniializeaz anul naterii acestui elev cu
valoarea 1990.
(6p.)
struct data{
int zi;
int luna;
int an;
};
struct elev {
char nume[30];
struct data data_nasterii;
float media;
}ev;
4.
5.
Se consider un text alctuit din cel mult 250 de caractere, n care cuvintele sunt formate doar
din litere mici ale alfabetului englez i sunt separate prin unul sau mai multe caractere *.
Scriei un program C/C++ care citete de la tastatur textul i afieaz pe ecran, pe cte o
linie, toate secvenele formate din cte dou litere identice, ca n exemplu.
Exemplu: dac textul citit este:
perechile alturate.
se
afieaz
ii
ii
oo
(10p.)
Subiectul II
a.
2.
a.
e1=e2+1;
b.
e1.nume[2]=x;
c.
e1=e2;
d.
e1.nota1=e2.nota2+1;
b.
c.
d.
Ce valoare are expresia de mai jos dac variabila s memoreaz irul de caractere
alfabet?
strlen(strcpy(s,s+2))
(4p.)
4.
ntr-un graf neorientat cu 10 noduri, numerotate de la 1 la 10, exist cte o muchie ntre
oricare dou noduri numerotate cu numere consecutive i cte o muchie ntre nodul
numerotat cu 10 i fiecare dintre celelalte noduri. Cte subgrafuri cu exact 3 noduri, toate
adiacente dou cte dou, are graful dat? Scriei pentru fiecare dintre aceste subgrafuri
nodurile din care este format.
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur numerele naturale m i n din intervalul
[1,24], apoi construiete n memorie i afieaz pe ecran un tablou bidimensional cu m
linii i n coloane astfel nct prin parcurgerea acestuia linie cu linie de sus n jos i fiecare
linie de la stnga la dreapta, se obin n ordine descresctoare toate numerele naturale de
la 1 la m*n, ca n exemplu.
Fiecare linie a tabloului este afiat pe cte o linie a ecranului, elementele 12 11 10
9 8 7
aceleiai linii fiind separate prin cte un spaiu.
6 5 4
Exemplu: pentru m=4 i n=3 se va construi i afia tabloul alturat.
(10p.) 3 2 1
Subiectul II
Care din urmtoarele expresii are valoarea 1 dac i numai dac irul de caractere s,
format din exact 10 caractere, este obinut prin concatenarea a dou iruri identice? (6p.)
a. strcmp(s,s+5)==0
b. s==strstr(s,s+5)
c. s==s+5
d. strcmp(s,strcat(s,s+5))==0
2.
a. (3 , 5)
b. (4 , 1)
c. (5 , 3)
1
0
0
0
0
0
0
0
1
0
d. (3 , 2)
Care sunt nodurile care au exact 2 descendeni pentru un arbore cu rdcin, cu 7 noduri,
numerotate de la 1 la 7, dat de vectorul de tai: (3,3,0,1,2,2,4)?
(4p.)
4.
5.
Subiectul II
ntr-o list simplu nlnuit, alocat dinamic, cu cel puin patru elemente, fiecare element
reine n cmpul urm adresa elementului urmtor din list sau NULL dac nu exist un
element urmtor. Dac variabilele p, q i r memoreaz adresele a trei noduri din list astfel
nct p -> urm = = q -> urm -> urm i r-> urm = = q atunci ordinea logic a nodurilor n
list (noduri identificate prin adrese) este:
(4p.)
b. p, r, q
a. r, q, p
d. q, r, p
c. p, q, r
2.
Care din urmtoarele proprieti este adevrat pentru un graf orientat cu n vrfuri i n arce
(n>3) care are un circuit de lungime n:
(6p.)
4.
5.
Scriei un program C/C++ care citete de la tastatur dou iruri de caractere formate din
maximum 100 litere mici ale alfabetului englez i afieaz pe ecran cel mai lung sufix
comun al celor dou iruri de caractere. Dac cele dou iruri nu au niciun sufix comun,
atunci programul va afia pe ecran mesajul NU EXIST.
Exemplu: pentru irurile marina i elena se va afia na
(10p.)
Subiectul II
Structura de date la care se aplic principiul primul venit, primul ieit: (first in, first out)
este:
(4p.)
a. lista nlnuit
b. stiva
c. coada
d. graf orientat
2.
a. x=1
b. x<3
c. x>3
d. nicio valoare
Se consider graful orientat din figura alturat. Care este numrul minim
de arce ce trebuie adugate grafului i care sunt aceste arce, astfel nct
oricare dou vrfuri din graf s fie unite prin drumuri elementare?
(6p.)
4.
Scriei o secven de instruciuni C/C++ care determin, n urma executrii ei, afiarea pe
ecran a mesajului Corect dac un ir de maximum 100 caractere, memorat de variabila s,
este palindrom sau mesajul Incorect n caz contrar. Un ir de caractere este palindrom dac
citit de la nceput la sfrit este identic cu irul citit de la sfrit la nceput.
Exemplu: irul de caractere cojoc este palindrom
(4p.)
5.
Subiectul II
a.
2.
b.
c.
d.
d.
b.
c.
char s[]=raton;
s[1]=s[3];
cout<<s; | printf(%s,s);
Subiectul II
a.
2.
a.
b. 2
c. 3
d. 4
Care este numrul nodurilor de tip frunz din arborele cu rdcin, cu 8 noduri, numerotate
de la 1 la 8, reprezentat prin vectorul de tai (2,0,6,2,4,4,5,5)?
(6p.)
3
b. 4
c. 5
d. 2
4.
p=prim;
O list liniar simplu nlnuit, alocat dinamic,
while(p->urm!=NULL)
reine n cmpul nr al fiecrui element cte un
{p->urm->nr=p->nr*p->urm->nr;
numr natural, iar n cmpul urm, adresa
p=p->urm;
elementului urmtor din list sau NULL dac nu
}
exist un astfel de element. Lista memoreaz, n
acest ordine, doar numerele: 1, 2, 3, 4, 5.
tiind c variabila prim memoreaz adresa primului element al listei i c p este o variabil
de acelai tip cu prim, care va fi valoarea reinut n ultimul element al listei dup
executarea secvenei de program de mai sus?
(4p.)
5.
Subiectul II
a. 1
b. 3
c. 2
d. 5
2.
ntr-un arbore cu rdcin nivelul unui nod este egal cu lungimea lanului format din noduri
distincte care unete rdcina cu acel nod. Rdcina se afl pe nivelul 0. Dac toate
frunzele se afl pe nivelul 3 i oricare nod neterminal aflat pe un nivel k are exact k+1
descendeni direci (fii), care este numrul de noduri din acest arbore ?
(4p.)
b. 9
c. 10
d. 6
a. 8
p=prim; x=p->nr;
while(p->urm!=NULL)
{p->nr = p->urm->nr;
p=p->urm;
}
p->nr=x;
5. irul de caractere s2 este clona irului de caractere s1 dac se poate obine din s1 prin
eliminarea tuturor apariiilor unei singure vocale. Se consider vocal orice liter din
mulimea {a,e,i,o,u}.
Scriei programul C/C++ care citete de la tastatur un cuvnt format din cel mult 20 litere
mici ale alfabetului englez i afieaz pe ecran (dac exist), toate clonele acestui cuvnt,
fiecare pe cte o linie a ecranului.
nformatca
Exemplu: pentru cuvntul informatica se afieaz, nu neaprat n infrmatica
aceast ordine, clonele scrise alturat.
(10p.) informtic
Subiectul II
Care este numrul maxim de noduri de grad 3 ntr-un graf neorientat cu 5 noduri?
a. 4
2.
b. 5
c. 3
(4p.)
d. 2
ntr-un arbore cu rdcin, nivelul unui nod este egal cu lungimea lanului
format din noduri distincte care unete rdcina cu acel nod. Care dintre
noduri trebuie ales ca rdcin n arborele din figura alturat astfel nct
pe fiecare nivel s se gseasc un numr impar de noduri?
(6p.)
a. 2
b. 3
c. 6
d. 4
4.
5.
char s[]=arac;
t=s[1]; s[1]=s[3];
s[3]=t;
cout<<s; | printf(%s,s);
n=0;
while(p!=q && q->urm!=p)
{
p=p->urm;
q=q->prec;
n=n+1;
}
(10p.)
Subiectul II
a. 0
2.
b. 1
c. 2
d. 3
a. 7
b. 15
c. 6
d. 5
Care sunt nodurile de tip frunz din arborele alturat dac se alege ca
rdcin nodul 6?
(6p.)
4.
5.
p=prim;
prim=ultim;
while(p!=prim)
{q=p;p=p->urm;
ultim->urm=q;
ultim=q;
}
ultim->urm=NULL;
Subiectul II
1.
2.
a. {1, 2, 5, 6, 10}
b.
{6, 2, 5}
c. {6}
d. {5, 2}
Scriei definiia corect a unui tip de date necesar pentru a memora simultan, ntr-o singur
variabil de acest tip, urmtoarele caracteristici ale unui autoturism: marca (cuvnt de
maximum 20 caractere) i anul fabricaiei (numr natural format din exact 4 cifre), astfel
nct expresia C/C++ de mai jos s aib ca valoare vechimea mainii ale crei caracteristici
sunt memorate n variabila x.
2008-x.anul_fabricatiei
(6p.)
4.
5.
Se consider o list liniar simplu nlnuit alocat dinamic n care fiecare nod memoreaz
n cmpul info un cuvnt format din cel mult 20 de caractere, doar litere mari ale
alfabetului englez, iar n cmpul urm, adresa urmtorului nod al listei sau NULL dac nu
exist un element urmtor.
Scriei un program C/C++ care citete de la tastatur un numr natural n (n100) i apoi n
cuvinte distincte, fiecare cuvnt fiind format din cel mult 20 de caractere, doar litere mari ale
alfabetului englez, i construiete o list simplu nlnuit, cu acele cuvinte citite, care ncep
i se termin cu aceeai liter. Cuvintele se vor memora n list n ordine invers citirii lor.
Exemplu: pentru n=9 i cuvintele citite:
URSUZU IRI E SUPARAT POP DORIS SI ANA CITESC
lista va fi:
(10p.)
Subiectul II
1.
2.
ntr-o structur de date de tip coad au fost adugate, n aceast ordine, urmtoarele valori:
3, 10, 2, 8 i 6. Care este ultima valoare care s-a extras din coad dac s-au efectuat, n
aceast ordine, urmtoarele operaii: extragerea unui element, adugarea valorii 100,
extragerea a trei elemente.
(6p.)
4.
Subiectul II
a. {1,4,6}
2.
b. {2}
c. {3}
d. {2,6}
a. 3
b. 6
c. 17
d. 18
Scriei definiia corect a unui tip de date necesar pentru a memora simultan ntr-o singur
variabil de acest tip, urmtoarele caracteristici ale unui cerc: abscisa i ordonata centrului
cercului (numere ntregi cu cel mult 4 cifre) i raza acestuia (numr real), astfel nct
expresia de mai jos s calculeze diametrul cercului ale crui caracteristici sunt memorate n
variabila x.
2*x.raza
(6p.)
4.
5.
O list dublu nlnuit, alocat dinamic, memoreaz n cmpul info al fiecrui nod un
numr real, iar n cmpurile urm i prec adresa nodului urmtor, respectiv precedent din
list sau NULL dac nu exist un element urmtor, respectiv precedent. Adresa primului nod
este memorat n variabila prim.
Considerndu-se creat lista dublu nlnuit, scriei declarrile de date necesare definirii
listei precum i secvena de program C/C++ care modific lista, insernd n list dup
fiecare nod ce memoreaz n cmpul info o valoare negativ, un nou nod ce va memora
n cmpul info valoarea 0, i afieaz toate informaiile din nodurile listei dup efectuarea
acestei operaii.
(10p.)
x=2;
for(j=1;j<=5;j++)
for(i=1;i<=3;i++)
{ a[j][i]=x;
x=x+1;
}
Subiectul II
a. 3
2.
b. 56
c. 54
d. 0
a. (0,1,2,3,4,5,6,7,8,9)
b. (1,2,3,4,5,6,7,8,9,0)
c. (2,3,4,5,6,7,8,9,10,0)
d. (9,8,7,6,5,4,3,2,1,0)
adresa primului
n cmpul urm
NULL dac nu
informaia din
urma executrii
(6p.)
4.
5.
Subiectul II
b. muchia [5,6]
c. nodul 3
2.
Se consider o list alocat dinamic care are cel puin 10 elemente i fiecare element al
listei memoreaz n cmpul info un numr ntreg, iar n cmpul next adresa elementului
urmtor n list sau NULL dac nu exist un element urmtor.
Variabila p memoreaz adresa de nceput a while (p!=NULL && p->info%5!=0)
listei, iar variabila aux este de acelai tip cu p. { aux=p;
p=aux->next;
Dac n urma executrii secvenei alturate de
delete p; | free(p);
program, variabila p are valoarea
NULL, }
atunci:
(4p.)
Subiectul II
1.
2.
ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare element reine n cmpul adr
adresa urmtorului element din list sau NULL dac nu exist un element urmtor, iar n
cmpul info un numr ntreg. Adresa primului element al listei este memorat n variabila
p. tiind c lista conine exact 4 elemente, atunci expresia p->adr->info reprezint:
(4p.)
a. adresa celui de al doilea element
b. adresa celui de al treilea element
d. valoarea memorat n al treilea element
c. valoarea memorat n al doilea element
4.
Cte muchii trebuie eliminate dintr-un graf neorientat complet cu 20 de noduri, pentru ca
graful parial obinut s fie arbore?
(4p.)
5.
Subiectul II
a. cout<<nume; | printf(%c,nume);
b. cout<<x; | printf(%c,x);
c. cout<<x.nume; | printf(%c,x.nume);
d. cout<<x.nume[0]; | printf(%c,x.nume[0]);
2.
ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare nod reine n cmpul adr
adresa urmtorului nod din list sau NULL dac nu exist un nod urmtor, iar n cmpul
info un numr ntreg. Variabilele d i q rein adresele cte unui nod (nodul referit de d
este inclus n list, iar cel referit de q nu aparine listei). S se identifice secvena de
instruciuni care realizeaz inserarea corect, n list, a nodului referit de variabila q, ca
succesor al nodului referit de variabila d.
(4p.)
a. d->adr=q; q->adr=d;
b. q->adr=d->adr; d->adr=q;
c. d->adr=q; q->adr=d->adr;
d. d=q; q->adr=d->adr;
4.
(6p.)
Un ir cu maximum 255 de caractere conine cuvinte separate prin unul sau mai multe spaii.
Cuvintele sunt formate numai din litere mici ale alfabetului englez. Scriei un program C/C++
care citete un astfel de ir i l afieaz modificat, prima i ultima liter a fiecrui cuvnt fiind
afiat ca liter mare.
Exemplu: pentru irul: maine este
proba
la informatica se va afia:
MainE EstE
ProbA
LA InformaticA
(10p.)
Subiectul II
a.
b.
c.
d.
2.
a.
ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare nod reine n cmpul adr
adresa urmtorului nod din list sau NULL dac nu exist un nod urmtor, iar n cmpul
info un numr ntreg. Considerm c o astfel de list memoreaz, n ordine, doar valorile
7, 5, 4, 9, 3. Variabila d reine adresa nodului la care este memorat valoarea 4. Care
este secvena de instruciuni care trebuie executat pentru ca lista s conin, n ordine,
doar valorile 7, 5, 9, 3?
(4p.)
d->adr=d->adr; d->info=d->adr->info;
d->adr=d->adr->adr;
d->info=d->adr->info; d->adr=d->adr->adr;
d->adr->adr=d->adr; d->adr->info=d->info;
s[0]= E;
Considerm c variabila s memoreaz irul de caractere
s[strlen(s)-1]= A;
examen. Care va fi valoarea lui s dup executarea
s[strlen(s)/2-1]= N;
instruciunilor scrise alturat?
(4p.)
s[strlen(s)/2]= M;
ExameN
b. exAMen
c. ExNMeA
d. ExAMeN
(3p.)
c) Care este numrul minim de muchii care trebuie eliminate astfel nct graful parial obinut
s aib 3 componente conexe?
(6p.)
4.
Subiectul II
a. (1, 0, 2, 2, 1, 5, 5)
b. (0, 1, 2, 2, 1, 5, 5)
c. (3, 1, 0, 2, 1, 5, 6)
d. (2, 1, 0, 2, 1, 5, 2)
2.
0
1
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
0
0
0
0
0
0
1
0
0
a. 7
b. 4
c. 5
d. 6
x=1;
while (p->leg!=NULL)
{
x=x * p->leg->info;
p=p->leg;
}
cout<<x;|printf(%d,x);
for(i=1;i<=3;i++)
for(j=1;j<=3;j++) a[i][j]=i+j;
for(i=1;i<=3;i++){
for(j=1;j<=3;j++)
cout<<a[i][j]; | printf(%d,a[i][j]);
cout<<endl; | printf(\n);
}
4.
Considerm declaraiile:
int i,j,a[10][10];
Ce se va afia dup
executarea
secvenei
de
instruciuni alturate?
(6p.)
5.
Un ir cu maximum 255 de caractere conine cuvinte separate prin cte un spaiu. Cuvintele
sunt formate numai din litere mici ale alfabetului englez. Scriei un program C/C++ care
citete de la tastatur un astfel de ir i l afieaz pe ecran modificat, inversnd prin
oglindire doar cuvintele care ncep cu vocal, ca n exemplu. Se consider ca fiind vocale
urmtoarele litere: a, e, i, o, u.
Exemplu: pentru irul: maine este proba la informatica se va afia:
maine etse proba la acitamrofni
(10p.)
Subiectul II
2.
4.
for(i=1;i<=3;i++)
Considerm declaraiile:
for(j=1;j<=3;j++)
int i,j,a[10][10];
if(i<j)a[i][j]=i;
Ce se va afia dup executarea
else a[i][j]=j;
secvenei de instruciuni alturate?
for(i=1;i<=3;i++){
(6p.)
for(j=1;j<=3;j++)
cout<<a[i][j]; | printf(%d,a[i][j]);
cout<<endl; | printf(\n);
}
5.
Un ir cu maximum 255 de caractere conine cuvinte cuvinte formate numai din litere mici
ale alfabetului englez. Fiecare cuvnt este urmat de un caracter *. Scriei un program
C/C++ care citete un astfel de ir i afieaz pe ecran irul obinut prin eliminarea tuturor
apariiilor primului cuvnt, ca n exemplu.
Exemplu: pentru irul: bine*albine*foarte*bine* se va afia:
*albine*foarte**
(10p.)
Subiectul II
a. 3
2.
b. 1
c. 2
0
1
0
1
1
0
1
1
0
1
1
0
1
1
0
d. 5
Fiecare nod al unei liste simplu nlnuite, alocat dinamic, cu cel puin 4 noduri, reine in
cmpul urm adresa nodului urmtor din list sau NULL dac nu are un nod urmtor. tiind
c variabila p reine adresa primului nod din list, variabila q reine adresa celui de-al doilea
nod din list, iar variabila r reine adresa celui de-al treilea nod din list, care este secvena
prin care se interschimb al doilea cu al treilea element din lista iniial?
(4p.)
a. p->urm=r;
q->urm=r->urm;
r->urm=q;
b. p->urm=r;
r->urm=q->urm;
q->urm=r->urm;
c. r->urm=q->urm;
q->urm=r->urm;
p->urm=r;
d. q->urm=r->urm;
p->urm=r;
r->urm=q->urm;
4.
5.
2
3
4
5
3
4
5
6
4
5
6
7
Subiectul II
5
6
7
8
b. 1
c. 3
corespunde
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
d. 0
ntr-o list simplu nlnuit alocat dinamic, cu cel puin dou noduri, fiecare nod reine n
cmpul urm adresa nodului urmtor din list sau NULL dac nu are un nod urmtor. tiind
c variabila p reine adresa primului nod din list, iar variabila q este de acelai tip cu p,
care este secvena ce realizeaz eliminarea celui de-al doilea nod din list?
(4p.)
a. q=p->urm;
q->urm=p->urm->urm;
delete q; | free(q);
b. p->urm=p->urm->urm;
delete p; | free(p);
c. q=p->urm;
p->urm=p->urm->urm;
delete q; | free(q);
d. p=q->urm;
q->urm=p->urm->urm;
delete q; | free(q);
4.
5.
Subiectul II
0
1
0
0
1
a.
2.
ntr-o list simplu nlnuit, alocat dinamic, fiecare element reine n cmpul urm adresa
elementului urmtor din list sau NULL dac nu are un element urmtor. Lista are cel puin
dou elemente, variabila p reine adresa primului element, iar q reine adresa ultimului
element din list. Care este numrul de elemente din list dac expresia de mai jos are
valoarea 1?
p->urm->urm==q
(4p.)
a.
b.
b.
c.
c.
d.
d.
1
0
1
1
0
0
1
0
1
1
0
1
1
0
1
1
0
1
1
0
4.
5.
Scriei un program C/C++ care citete de la tastatur un numr natural n (0<n23) i apoi
construiete n memorie o matrice cu n linii i n coloane astfel nct elementele situate pe
diagonala principal s fie egale cu 2, cele situate deasupra diagonalei principale s fie
egale cu 1, iar cele situate sub diagonala principal s fie egale 3.
2 1 1 1
Programul va afia matricea pe ecran, cte o linie a matricei pe o linie a
3 2 1 1
ecranului, cu cte un spaiu ntre elementele fiecrei linii.
3 3 2 1
Exemplu: dac n este 4 atunci programul va construi i va afia
3 3 3 2
matricea alturat.
(10p.)
Subiectul II
0
1
0
(4p.) 0
1
a. 0
2.
b. 1
c. 3
1
0
0
1
0
0
1
0
0
0
0
0
1
0
0
1
0
1
1
0
d. 2
ntr-o list simplu nlnuit, alocat dinamic, cu cel puin 4 elemente, fiecare nod reine in
cmpul urm adresa nodului urmtor din list sau NULL dac nu are un nod urmtor. tiind
c iniial variabila p reine adresa primului nod din list, care dintre secvenele de program
urmtoare determin, n urma executrii, memorarea n variabila p a adresei ultimului nod
din list?
(4p.)
a. while(p->urm!=NULL) p=p->urm;
b. while(p!=NULL) p=p->urm;
c. p=p->urm;
d. p=p->p->urm;
4.
5.
Scriei un program C/C++ care citete de la tastatur un numr natural n (0<n23) i apoi
construiete n memorie o matrice cu n linii i n coloane, format din numere naturale
nenule, mai mici sau egale cu n, astfel nct s nu existe dou linii cu aceeai sum a
elementelor i nici dou coloane cu aceeai sum a elementelor.
Programul va afia matricea pe ecran, cte o linie a matricei pe o linie a ecranului, cu un
spaiu ntre elementele fiecrei linii.
Exemplu: dac n=3 atunci o soluie posibil este urmtoarea matrice:
1 1 1
1 1 2
1 2 3
(10p.)
Subiectul II
a. 1
2.
a.
b. 2
c. 3
0
0
0
0
1
0
0
1
1
0
0
1
0
1
1
0
1
1
0
1
1
0
1
1
0
d. 0
ntr-o list simplu nlnuit nevid, alocat dinamic, fiecare element reine n cmpul urm
adresa elementului urmtor din list sau NULL dac nu are un nod urmtor. tiind c
variabila p reine adresa primului element din list, variabila q reine adresa ultimului
element din list, iar lista este format din exact 3 elemente, care dintre urmtoarele
secvene de instruciuni determin, n urma executrii, eliminarea celui de-al doilea element
din list?
(4p.)
p->urm=q;
delete q; | free(p->urm);
c. p=q;
delete p->urm; | free(p->urm);
b. p->urm=q;
delete p->urm; | free(p->urm);
d. delete p->urm; | free(p->urm);
p->urm=q;
4.
5.
Subiectul II
0
0
0
1
0
1
0
0
1
0
1
1
0
0
0
0
1
1
0
1
0
0
1
0
0
Care sunt nodurile de tip frunz ale arborelui cu rdcin cu 9 noduri, numerotate de la 1 la
9, al crui vector de tai este (6, 6, 8, 8, 7, 7, 0, 7, 7)?
(6p.)
4.
ntr-o list simplu nlnuit, alocat dinamic, cu cel puin 3 elemente, fiecare element reine
n cmpul inf un numr natural, iar n cmpul urm adresa elementului urmtor din list
sau NULL dac nu exist un element urmtor. Variabila p reine adresa primului element
din list. Dac se prelucreaz lista de mai jos, care este valoarea memorat de variabila
ntreag k, la finalul executrii urmtoarei secvene de instruciuni?
k=0;
while(p->urm->urm && p->inf > p->urm->inf)
{ p = p->urm; k = k + p->urm->inf; }
5.
(6p.)
Se consider un text format doar din spaii i litere mici ale alfabetului englez, care ncepe
cu o liter i care conine cel puin o vocal din multimea {a,e,i,o,u}. Scriei programul
C/C++ care citete de la tastatur un ir cu cel mult 100 de caractere, ca cel descris mai
sus i care determin transformarea acestuia prin nlocuirea fiecrei vocale din text cu litera
imediat urmtoare din alfabet (a se nlocuiete cu b, e se nlocuiete cu f .a.m.d.).
Programul va afia pe ecran irul obinut.
Exemplu: dac irul citit este examen de bacalaureat, dup modificare se afieaz:
fxbmfn df bbcblbvrfbt
(10p.)
Subiectul II
a. 3 1 0 1 2
2.
b. 2 0 1 1 2
c. 3 4 0 2 3
al unui arbore cu
(4p.)
d. 4 1 1 0 2
a. 2
(4p.)
printf(%s,strchr(s,a));
b. acalaureat
c. 4
d. bcluret
ntr-o list simplu nlnuit, alocat dinamic, cu cel puin 2 elemente, fiecare element reine
n cmpul inf un numr natural, iar n cmpul urm adresa elementului urmtor din list sau
NULL dac nu exist un element urmtor. Variabila p reine adresa primului element din list.
Dac se prelucreaz lista de mai jos, care este valoarea memorat de variabila ntreag k,
la finalul executrii urmtoarei secvene de instruciuni?
k=0;
while((p->urm!=NULL) && (p->inf*p->urm->inf%10!=0))
{ p = p->urm; k ++; }
(6p.)
4.
5.
(6p.)
Subiectul II
ntr-o list simplu nlnuit, alocat dinamic, cu cel puin 3 elemente, fiecare element reine
n cmpul inf un numr natural, iar n cmpul urm adresa elementului urmtor din list
sau NULL dac nu exist un element urmtor. Variabila p reine adresa primului element
din list, iar variabilele q i aux sunt de acelai tip cu p. Dac se prelucreaz lista de mai
jos, care va fi coninutul listei dup executarea urmtoarei secvene de instruciuni?
q=p;
while(q->urm->urm !=NULL && q->inf >= p->inf)
q = q->urm;
aux=q->urm;
q->urm=aux->urm;
delete aux;
a. 8 5 8 9 3
2.
b. 7 8 8 9 3
c. 7 8 5 8 9 3
d. 7 8 5 9 3
a. s1, s2, s3
caractere
1
0
1
0
1
0
1
0
0
1
0
0
1
0
1
0
0
0
0
0
0
0
0
1
0
1
0
1
0
0
3.
4.
5.
10 12 14 16
18 20 22 24
26 28 30 32
Subiectul II
Care dintre urmtoarele propoziii NU este adevrat pentru graful orientat cu 6 vrfuri,
numerotate de la 1 la 6 i ale crui arce sunt: (2,1), (3,6), (4,1), (4,3), (4,5),
(5,2), (6,4)?
(4p.)
2.
Fiind dat un tablou bidimensional cu 20 linii i 20 coloane, cte elemente se gsesc strict
deasupra diagonalei secundare a tabloului?
(4p.)
a. 180
b. 200
c. 190
d. 210
4.
ntr-o list simplu nlnuit, alocat dinamic, cu cel puin 2 elemente, fiecare element reine n
cmpul inf un numr natural, iar n cmpul urm adresa elementului urmtor din list sau
NULL dac nu exist un element urmtor. Variabila p reine adresa primului element din list,
iar variabila q este de acelai tip cu p. Dac se prelucreaz lista de mai jos, care va fi
coninutul listei dup executarea urmtoarei secvene de instruciuni?
q=p;
while(q->urm!=NULL && q->inf<=q->urm->inf) q=q->urm;
q->inf=q->urm->inf+1;
struct elev {
int matricol;
float med1,med2;
}x;
(6p.)
5.
Un cuvnt s, de cel mult 20 caractere, format doar din litere mici ale alfabetului englez,
conine cel puin o consoan i cel puin o vocal. Scriei programul C/C++ care citete de la
tastatur cuvntul s, construiete n memorie i afieaz pe ecran cuvntul obinut prin
eliminarea tuturor consoanelor din cuvntul s. Se consider consoan oricare liter care nu
se afl n mulimea {a, e, i, o, u}.
Exemplu: dac se citete cuvntul bacalaureat, pe ecran se afieaz: aaauea
(10p.)
Subiectul II
a. 0
2.
0
1
0
0
0
0
d. 3
Care este numrul de circuite distincte ale grafului orientat dat prin
matricea de adiacen alturat? Dou circuite sunt distincte dac
difer prin cel puin un arc.
(4p.)
b. 1
c. 2
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
1
0
1
0
0
0
1
0
1
0
0
0
0
ntr-o list simplu nlnuit, alocat dinamic, cu cel puin 2 elemente, fiecare element reine
n cmpul inf un numr natural, iar n cmpul urm adresa elementului urmtor din list
sau NULL dac nu exist un element urmtor. Variabila p reine adresa primului element
din list. Dac se prelucreaz lista de mai jos, care este valoarea memorat de variabila
ntreag k, la finalul executrii urmtoarei secvene de instruciuni?
k=3;
while(p->urm!=NULL && p->inf > p->urm->inf)
k = k + p->urm->inf;
a. 8
b. 10
c. 12
p = p->urm;
(4p.)
d. 13
4.
5.
Scriei programul C/C++ care citete de la tastatur un cuvnt s de cel mult 20 litere mici ale
alfabetului englez, construiete n memorie i afieaz pe ecran cuvntul s dup eliminarea
primei i a ultimei vocale. Cuvntul s conine cel puin dou vocale i cel puin o consoan. Se
consider vocale literele: a, e, i, o, u.
(10p.)
Exemplu: dac se citete cuvntul bacalaureat, pe ecran se afieaz: bcalauret
1
16
15
14
13
2
17
24
23
12
3
18
25
22
11
4
19
20
21
10
5
6
7
8
9
Subiectul II
Considerm
declararea
alturat struct elev{
char nume[10],prenume[20];
folosit pentru a memora numele,
float medie;
prenumele i media unui elev.
}p;
Care dintre expresiile de mai jos are ca
valoare prima liter a numelui unui
elev ale crui informaii sunt memorate
n variabila p?
(4p.)
a. p.nume[1]
b. p.nume[0]
c. p.nume
d. nume[1]
2.
a. 4, 2, 6, 4, 2
b. 2, 2, 1, 2, 2
c. 1, 1, 1, 1, 1
d. 4, 3, 3, 4, 4
3.
4.
Care este numrul maxim de muchii pe care l poate avea un graf neorientat cu 6 noduri i
3 componente conexe?
(6p.)
5.
Subiectul II
a. m=(x.nota1+x.nota2)/2;
b. m=(nota1+nota2)/2;
c. x.m=(x.nota1+x.nota2)/2;
d. m=(x,nota1+x,nota2)/2;
2.
a. 2
b. 4
c. 1
d. 3
4.
Se consider o list liniar simplu nlnuit, alocat dinamic, cu cel puin 5 noduri, n care
fiecare nod al listei conine n cmpul urm adresa nodului urmtor din list sau NULL dac
nu exist un nod urmtor. Adresa primului nod este memorat n variabila prim, iar variabila
p este de acelai tip cu prim.
Ce modificare se produce asupra listei prin executarea p=prim;
secvenei de instruciuni alturate?
(6p.) prim=p->urm;
delete(p);
| free(p);
5.
Scriei un program C/C++ care citete de la tastatur un numr natural nenul n (n100),
apoi n iruri de caractere, fiecare ir avnd maximum 30 de caractere, doar litere mici ale
alfabetului englez, i afieaz pe ecran cte dintre cele n iruri de caractere sunt formate
numai din vocale. Se consider vocale literele a, e, i, o, u.
Exemplu: dac n=3, iar irurile citite sunt date alturat, atunci
programul va afia pe ecran 1 deoarece irul ae este format
numai din vocale.
(10p.)
arc
ae
creion
Subiectul II
n
secvena
alturat,
variabila
x for(i=0;i<=strlen(x)-1;i=i+3)
cout<<x[i]; | printf(%c,x[i]);
memoreaz un ir cu cel mult 100 de
caractere, iar variabila i este de tip ntreg.
Care este numrul maxim de caractere pe
care l poate avea irul x astfel nct
secvena alturat s afieze exact 3
caractere ale acestuia?
(4p.)
a. 7
2.
b. 3
c. 9
d. 8
a. 2, 3, 1, 1, 1
b. 2, 2, 6, 5, 1
c. 1, 0, 1, 1, 1, 1
d. 1, 1, 0, 2, 1
4.
1
6
1
7
1
2
7
2
2
2
3
8
0
1
3
4
9
4
4
4
5.
2
4
3
5
5
(6p.)
Se consider o list simplu nlnuit alocat dinamic, n care fiecare nod memoreaz n
cmpul info un numr ntreg, iar n cmpul urm adresa elementului urmtor sau NULL
dac nu exist un nod urmtor.
Scriei un program C/C++ care citete de la tastatur 3 numere naturale nenule n, a i r
(n20, a10, r10) i construiete n memorie o list simplu nlnuit astfel nct
parcurgnd lista de la primul nod pn la ultimul nod i afind pe ecran, separate prin cte
un spaiu, numerele memorate n cmpul info al fiecrui nod, se obin n ordine strict
cresctoare toate elementele mulimii M={a, a+r, a+2r,...,a+(n-1)r}.
Exemplu: dac n=4, a=10, r=2 atunci se vor afia elementele alturate.
(10p.)
10 12 14 16
Subiectul II
a. 90
2.
b. 28
c. 45
d. 56
c. 1
d. 4
a. 3
b. 2
3.
4.
Se consider lista liniar simplu nlnuit, alocat dinamic, cu 6 noduri, reprezentat mai
jos, n care fiecare nod conine n cmpul info un numr natural, iar n cmpul urm adresa
nodului urmtor din list sau NULL dac nu exist un nod urmtor.
Dac adresa primului nod este memorat n variabila prim, iar variabila p este de acelai
tip cu prim, ce se afieaz la executarea secvenei de mai jos?
for(p=prim->urm;p->urm!=NULL;p=p->urm->urm)
cout<<p->info<< ; | printf(%d ,p->info);
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur un numr natural par, n (4n10), i
un numr natural x, cu exact 3 cifre, i care construiete n memorie un tablou
bidimensional cu n linii i n coloane, ce are elementele de pe diagonala principal egale cu
prima cifr a numrului x, elementele de pe diagonala secundar egale cu ultima cifr a
numrului x, iar restul elementelor egale cu cifra din mijloc a numrului x.
Tabloul bidimensional se va afia pe ecran, cte o linie a tabloului pe cte o 1 2 2 3
2 1 3 2
linie a ecranului, elementele fiecrei linii fiind separate prin cte un spaiu.
Exemplu: dac se citesc de la tastatur n=4 i x=123 atunci se afieaz 2 3 1 2
tabloul alturat.
(10p.) 3 2 2 1
Subiectul II
a. p->y=p->y+1;
2.
b. p=9;
c. p.x=7;
struct punct{
int x,y;
} p;
d. p=p+1;
Variabila n memoreaz un numr natural nenul. Care este numrul total de grafuri orientate
distincte cu n noduri? Dou grafuri orientate sunt distincte dac matricele lor de adiacen
sunt diferite.
(4p.)
a. 4n*(n-1)/2
b. 3n*(n-1)/2
c. 4n*(n-1)
d. 2n*(n-1)/2
for (i=0;i<=8;i++)
if( a[i][9-i]<a[i+1][8-i])
{aux=a[i][9-i];
a[i][9-i]=a[i+1][8-i];
a[i+1][8-i]=aux;}
cout<<a[0][9]<< <<a[9][0];
| printf(%d %d,a[0][9],a[9][0]);
4.
Se consider o list liniar simplu nlnuit, alocat dinamic, cu cel puin 5 noduri, n care
fiecare nod al listei conine n cmpul urm adresa nodului urmtor din list sau NULL dac
nu exist un nod urmtor..
Dac adresa primului nod este memorat n variabila prim, p=prim->urm;
iar variabila p este de acelai tip cu prim, ce prelucrare prim->urm=p->urm;
realizeaz urmtoarea secven de instruciuni?
(6p.) delete(p); | free(p);
5.
Subiectul II
Variabila x este utilizat pentru a memora numele, prenumele i salariul unei persoane.
Numele i prenumele pot avea cel mult 20 de litere fiecare, iar salariul este un numr
natural nenul mai mic dect 30000 . Care dintre urmtoarele declarri este corect? (4p.)
a. float x[3][21];
b. int x[3][21];
c. struct persoana{
char nume[21],prenume[21];
int sal;} x;
d. struct x[
char nume[21],prenume[21];
int sal;] x;
2.
Care este numrul maxim de muchii pe care-l poate avea un graf neorientat cu 6 noduri,
care nu este conex?
(4p.)
a. 4
b. 15
c. 12
d. 10
4.
Scriei o expresie C/C++ care s fie nenul dac i numai dac variabila c de tip char este
o liter mic a alfabetului englez.
(6p.)
5.
Subiectul II
a.
b.
c.
d.
Variabila t este utilizat pentru a memora valoarea i numele autorului unei cri. Valoarea
crii este un numr natural de cel mult 3 cifre, iar numele autorului nu poate avea mai mult
de 20 de litere. Care dintre urmtoarele declarri este corect?
(4p.)
struct carte{ int val;char nume;} t;
struct carte{int val,nume;} t;
struct carte{ int val;char nume[21];} t;
struct carte{ int val[21][21];char nume;} t;
2.
Care dintre urmtoarele afirmaii este adevrat pentru orice graf neorientat G cu 5 noduri
i 6 muchii?
(4p.)
b. G este conex
a. G are cel puin un ciclu
d. G nu poate avea noduri cu gradul 0
c. G are gradele tuturor nodurilor numere
pare
(3p.)
(3p.)
4.
5.
Subiectul II
a. 2
b. 4
c. 3
d. 5
(3p.)
b) Care este suma elementelor aflate n stiv dup efectuarea acestor operaii?
(3p.)
4.
5.
Subiectul II
a. strlen(s)<10
b. strlen(s,10)<0
c. leng(s)<10
d. s-0<10
2.
b. este conex
d. este arbore
(4p.)
4.
5.
Subiectul II
a. s-2==0
b. strlen(s,2)=0
c. leng(s)%2
d. strlen(s)%2==0;
2.
Dac G este un graf neorientat cu 8 noduri i 2 componente conexe, atunci graful are cel
mult:
(4p.)
a. 28 de muchii
b. 12 muchii
c. 21 de muchii
d. 16 muchii
Dac T este un arbore cu rdcin, cu 100 de noduri, care este numrul minim de frunze pe
care le poate avea T?
(6p.)
4.
5.
Subiectul II
a. 8
2.
b. 7
(Figura 1)
c. 5
(Figura 2)
d. 6
4.
5.
Subiectul II
a.
Graful parial al lui G obinut prin eliminarea muchiilor: [5,6], [2,5], [2,3], [2,10],
[10,8], [1,3], este un arbore.
b.
c.
d.
Numrul nodurilor de grad par este egal cu numrul nodurilor de grad impar.
2.
a.
complex.re
b.
x.re
c.
complex.x
d.
re.x
1:
2:
3:
4:
5:
6:
2 6
3
3
4 6
3
4.
Se consider o stiv S1, iniial vid, n care s-au introdus, n aceast ordine, valorile 10,
12, 3 i o alt stiv, S2, iniial vid, n care au fost introduse, n aceast ordine, valorile 6,
5, 4. Care va fi valoarea elementului din vrful stivei S1 i care va fi valoarea elementului
din vrful stivei S2 dac se extrag jumtate dintre elementele din stiva S2 i se adaug, n
ordinea extragerii, n stiva S1?
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur un text de cel mult 255 de caractere,
dintre care cel puin unul este o liter mic a alfabetului englez, i afieaz pe ecran, pe o
singur linie, desprite prin cte un spaiu, toate literele mici ale alfabetului englez care
apar n text. Fiecare liter va fi afiat o singur dat, n ordinea primei ei apariii n text.
Exemplu: pentru textul:
Pe ecran se va afia:
Calculati valoarea expresiei
a l c u t i v o r e x p s
(10p.)
Subiectul II
ntr-o list simplu nlnuit circular, alocat dinamic, fiecare element reine n cmpul
adr adresa elementului urmtor din list.
Dac variabilele p i q memoreaz adresele a dou elemente distincte din list astfel nct
s fie ndeplinite condiiile p==q->adr i q == p->adr , atunci lista are:
(4p.)
b. exact 2 elemente
d. exact 1 element
4.
macara mama
5.
Scriei un program n limbajul C/C++ care citete de la tastatur dou valori naturale n i m
(1n24, 1m24) i construiete n memorie un tablou bidimensional cu n linii i m coloane
format din toate numerele naturale de la 1 la n*m, ca n exemplu. Programul va afia pe
ecran, pe n linii, tabloul obinut, elementele fiecrei linii fiind separate prin cte un spaiu.
Exemplu: pentru n=5 i m=4 se va afia:
1 6
2 7
3 8
4 9
5 10
11
12
13
14
15
16
17
18
19
20
(10p.)
Subiectul II
a.
2.
b. nume.e
c. e.dn.an[2]
d. e.dn.zi
ntr-o list simplu nlnuit, alocat dinamic, cu cel puin 1000 de elemente identificate prin
adrese, fiecare element reine n cmpul adr adresa elementului urmtor din list sau
NULL dac nu exist un nod urmtor. Dac q este adresa unui element din list i p o
variabil de acelai tip cu q, ce reine adresa unui alt element care nu face parte din list,
atunci inserarea elementului de la adresa p, n list, imediat dup elementul de la adresa q
se realizeaz cu ajutorul secvenei de instruciuni:
(4p.)
a. p->adr=q->adr; q->adr=p;
c. q->adr=p; p->adr=q;
2
1
1
2
3
3
3 4
2 4 5
3 5
4
3.
4.
5.
Scriei un program C/C++ care citete de la tastatur un text format din cel mult 200 de
litere ale alfabetului englez, n care cuvintele sunt separate printr-un singur spaiu i
afieaz pe ecran numrul de cuvinte din textul citit, care au prima respectiv ultima liter
vocal. n cazul n care n text nu exist un astfel de cuvnt, se va afia pe ecran mesajul
NU EXISTA. Se consider vocal orice liter din mulimea {a,A,e,E,i,I,o,O,u,U}.
Exemplu: dac textul introdus este:
Eratostene a sugerat ca anii bisecti se repeta la fiecare patru ani
pe ecran se va afia:
4
(10p.)
Subiectul II
c.punct.y
b. c.raza.punct
c. c.centru.x
a. 9998
b. 9999
d. c.y.centru
r->info=0;
q= p->dr->dr->dr;
q->st=r;
r->dr=q;
r->st= p->dr->dr;
p->dr->dr->dr=r;
c. 9997
d. 0
4.
5.
Scriei un program n limbajul C/C++ care citete de la tastatur dou valori naturale n i m
(1n24, 1m24) i construiete n memorie un tablou bidimensional cu n linii i m coloane
format din toate numerele naturale de la 1 la n*m, ca n exemplu. Programul va afia pe
ecran, pe n linii, tabloul obinut, elementele fiecrei linii fiind separate prin cte un spaiu.
Exemplu: pentru n=4 i m=5 se va afia:
(6p.)
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
(10p.)
Subiectul II
a. produs.denumire[0]
b. denumire.p[0]
c. p.denumire[0]
d. p->denumire[0]
2.
a. 1
b. 2
c. 0
d. 3
4.
5.
Scriei programul C/C++ care citete de la tastatur un cuvnt format din cel mult 50 de
caractere, doar litere mari ale alfabetului englez, i afieaz pe ecran, fiecare pe cte o linie,
toate prefixele acestuia, n ordine cresctoare a lungimilor. Un prefix de lungime k al unui
cuvnt este un subir format din primele k caractere ale acestuia.
(10p.)
Exemplu: dac se citete cuvntul BACALAUREAT se vor afia prefixele:
B
BA
BAC
BACA
BACAL
BACALA
BACALAU
BACALAUR
BACALAURE
BACALAUREA
BACALAUREAT
Subiectul II
a. p.nume[0]
b. persoana.nume[0]
c. p->nume[0]
d. nume.p[0]
2.
Se consider graful orientat definit prin mulimea vrfurilor {1,2,3,4,5,6} i arcele (1,2),
(1,6), (1,5), (2,3), (3,6), (4,1), (6,4).
Care este vrful accesibil din toate celelalte vrfuri ale grafului prin intermediul unor drumuri
elementare?
(4p.)
a. 4
b. 1
c. 5
d. 6
4.
5.
Scriei programul C/C++ care citete de la tastatur un cuvnt format din cel mult 50
caractere, doar litere mari ale alfabetului englez, i afieaz pe ecran, fiecare pe cte o linie,
toate sufixele acestuia, n ordine cresctoare a lungimilor. Un sufix de lungime k al unui
cuvnt este un subir format din ultimele k caractere ale acestuia.
(10p.)
x->data=2;
z=x;
y->data=5;
y=z;
cout<<x->data<<y->data<<z->data; |
printf("%d%d%d",x->data,y->data,z->data);
Subiectul II
1.
2.
Se consider graful orientat cu vrfurile numerotate cu numere distincte 1,2,3, ... . Graful
este reprezentat printr-o matrice de adiacen A. Precizai care este semnificaia sumei
valorilor de pe o linie oarecare x a matricei A.
(4p.)
b. reprezint numrul drumurilor care conin
a. reprezint numrul arcelor care au ca
extremitate iniial vrful x
vrful x
d. reprezint numrul drumurilor care
c. reprezint numrul arcelor care au ca
extremitate final x
pornesc din vrful x
4.
Fie o list liniar simplu nlnuit, alocat dinamic, ale crei noduri rein in cmpul next
adresa nodului urmtor sau NULL dac nu exist un element urmtor n list. Lista are cel
puin dou elemente. Variabila x reine adresa primului nod din list, variabila y reine adresa
celui de al doilea nod din list, , iar variabila z, de acelai tip cu x i y, reine adresa unui nod
ce nu aparine listei. Scriei o secven de instruciuni n limbajul C/C++ prin executarea creia
se insereaz n list nodul referit de z ntre cele dou noduri referite de x i y.
(6p.)
5.
Subiectul II
1.
2.
0
1
0
1
0
a. 0
b. 3
c. 2
0
0
0
0
1
0
1
0
0
0
0
1
1
0
0
0
1
0
1
0
d. 1
4.
Se consider o list liniar simplu nlnuit, alocat dinamic, ale crei noduri rein n cmpul
next adresa nodului urmtor sau NULL dac nu exist un element urmtor n list. Lista are
cel puin un element. tiind c variabila u reine adresa ultimului nod din list, scriei o
secven de instruciuni n limbajul C/C++ prin care se insereaz n list dup ultimul nod,
cu adresa reinut de u, un nou nod a crui adres este reinut de variabila v, de acelai tip
cu u?
(6p.)
5.
Subiectul II
1.
2.
a. 5
b. 3
c. 4
0
0
1
0
0
1
0
1
1
1
1
1
0
1
0
0
1
0
0
1
1
0
0
1
0
d. 2
4.
Se consider o list liniar simplu nlnuit, alocat dinamic, ale crei noduri rein n cmpul
next adresa nodului urmtor sau NULL dac nu exist un element urmtor. Lista are cel
puin dou elemente. tiind c variabila p1 reine adresa primului nod din list, iar variabila
u1 adresa ultimului nod, scriei o secven de instruciuni n limbajul C/C++, prin executarea
creia lista liniar se transform ntr-o list circular?
(6p.)
5.
Scriei programul C/C++ care citete de la tastatur dou numere naturale m i n (1m24,
1n24), un numr natural x (1xm) i apoi m*n numere naturale de cel mult 5 cifre ce
reprezint elementele unui tablou bidimensional a, cu m linii, numerotate de la 1 la m, i n
coloane, numerotate de la 1 la n. Programul va determina eliminarea liniei cu numrul de
ordine x din matrice, modificarea corespunztoare a numrului de linii din matrice i afiarea
matricei obinute n urmtorul format: cte o linie a matricei pe cte o linie a ecranului,
elementele fiecrei linii fiind separate prin cte un spaiu.
(10p.)
11 21 31 41
Exemplu: pentru m=3, n=4, 11 21 31 41 se va afia matricea
91 11 21 31
51 61 71 81
x=2 i matricea alturat
91 11 21 31
Subiectul II
Cte noduri ale grafului orientat cu ase noduri numerotate de la 1 la 6 i urmtoarele arce:
(1,5), (1,6), (2,1), (2,3), (3,1), (3,4), (4,3), (4,5), (5,4), (6,5) au gradul
interior egal cu gradul exterior?
(4p.)
a. 4
2.
b. 6
c. 5
d. 3
ntr-o list liniar simplu nlnuit, alocat dinamic, cu cel puin 3 noduri, fiecare nod reine
n cmpul urm, adresa urmtorului nod din list sau NULL dac nu exist un nod urmtor.
Dac n variabila p se reine adresa primului nod din list i q este o variabil de acelai tip
cu p, atunci care dintre secvenele de mai jos elimin din list al doilea nod ?
(4p.)
a. q=p->urm;
p->urm=q->urm;
delete q; | free(q);
b. q=p->urm;
delete q; | free(q);
p->urm=q->urm;
d. q=p->urm->urm;
p->urm=q->urm;
delete q; | free(q);
4.
5.
Scriei programul C/C++ care citete de la tastatur, separate prin Enter, dou iruri de
caractere: un ir s de maximum 255 de caractere, care pot fi litere ale alfabetului englez i
spaii, apoi un ir c de maximum 20 de caractere. Programul va nlocui n irul s toate
apariiile irului c cu un ir de exact aceeai lungime efectiv cu c, format doar din caractere
*, ca n exemplu. irul s obinut n urma acestei prelucrri va fi afiat pe ecran. n cazul n
care c nu apare n s, programul va afia mesajul NU APARE.
Exemplu: dac irul S citit este Din departare se vede tare iar c este tare
atunci pe ecran se va afia: Din depar**** se vede ****
(10p.)
struct elev{
char nume[20];
float nota;
};
elev e1,e2;
Subiectul II
2.
4.
5.
........
........
while(u != NULL)
{ printf(%d , u->info);
| cout<<u->info<< ;
u = u->urm;
}
1
2
4
7
n(n + 1)
.
2
3
5
8
4
6
9
5
2
10
6
3
1
Subiectul II
2.
struct B
{ float x;
long y;
};
c. char
struct C
{ struct A x;
struct B y;
} x, y;.
d. float
4.
5.
Scriei un program C/C++ care citete de la tastatur un numr natural n (0<n<101) i apoi
n propoziii. Fiecare propoziie este format din maximum 255 de caractere care sunt numai
litere mici ale alfabetului englez i spaii. tiind c fiecare propoziie se termin cu caracterul
Enter, s se afieze pe ecran propoziia care are cele mai puine vocale (sunt considerate
vocale caracterele a, e, i, o, u). Dac dou sau mai multe propoziii au acelai numr de
vocale, se va afia ultima propoziie, n ordinea citirii, care ndeplinete condiia.
Exemplu: pentru n = 4 i urmtoarele propoziii:
azi a plouat tare
a fost innorat peste tot
maine va fi soare
acum nu mai vreau sa ploua
se va afia: maine va fi soare
(10p.)
Subiectul II
ntr-o list liniar simplu nlnuit, alocat dinamic, cu cel puin 3 elemente, fiecare
element reine n cmpul urm adresa urmtorului element din list sau NULL dac nu exist
un element urmtor, iar n cmpul info informaia util de tip ntreg. Dac variabila p reine
adresa primului element din list atunci care dintre secvenele de mai jos atribuie cmpului
info al celui de al treilea element informaia util din primul element al listei?
(4p.)
a. p->urm->urm->info=p->info;
b. p->urm->urm->info=p->urm->info;
c. p->info->info->info = p->info;
d. p->urm->urm = p->info;
2.
a. imposibil
b. bacalaureat
c. banal
d. bacalaureatimposibil
(4p.)
4.
5.
Se consider irul lui Fibonacci, definit astfel: f0 = 0, f1 = 1, fn = fn-1 + fn-2, dac n>1.
Scriei un program C/C++ care citete de la tastatur o valoare natural n (2n24),
construiete n memorie i afieaz pe ecran o matrice a cu n linii i n coloane ale crei
elemente sunt numere naturale, fiecare reprezentnd ultima cifr a cte unui termen al
irului lui Fibonacci, ncepnd de la termenul de indice 1 i pn la termenul de indice n2, n
ordine, linie cu linie de sus n jos, i n cadrul fiecrei linii de la stnga la dreapta, ca n
exemplu.
Matricea se va afia pe ecran, cte o linie a matricei pe cte o linie a 1 1 2 3
ecranului, elementele de pe aceeai linie fiind separate ntre ele prin 5 8 3 1
4 5 9 4
cte un spaiu.
Exemplu: pentru n = 4 se va obine matricea alturat.
(10p.) 3 7 0 7
Subiectul II
a. examene nationale
b. examene naTiOnale
c. EXAMENE NATIONALE
d. exAmeNe nAtIoNalE
2.
a. 16
b. 14
c. 6
1: 3
2: 3
3: 1
4: 2
5: 1
6: 2
5
4 6
2 5
6
3
4.
d. 8
3.
4.
5.
Subiectul II
1.
2.
a. 2 3 4 5 6 1
b. 6 5 4 3 2 1
c. 2 1 4 3 6 5
d. 1 2 3 4 5 6
4.
5.
Subiectul II
1.
2.
a. 1 3 2 4 5 6
b. 6 5 4 3 2 1
c. 1 2 4 3 5 6
p=prim->urm;
q=p->urm;
p->urm=q->urm;
prim->urm=q;
q->urm=p;
d. 2 1 3 4 5 6
Scriei programul C/C++ care citete de la tastatur un text de cel mult 50 de caractere,
(litere mici ale alfabetului englez i spaii), text format din mai multe cuvinte, separate prin
cte un spaiu, i afieaz pe ecran textul obinut din cel iniial prin transformarea primei
litere i a ultimei litere ale fiecrui cuvnt n majuscul, restul caracterelor rmnnd
nemodificate.
Exemplu: dac se citete textul azi este examen de bacalaureat, se va afia AzI
EstE ExameN DE BacalaureaT.
(10p.)
Subiectul II
b. 1 2 3 4 6
c. 1 3 4 5 6
d. 2 3 4 5 6
4.
Care este numrul minim de muchii ale unui graf neorientat conex, cu 100 de noduri? (6p.)
5.
Scriei programul C/C++ care citete de la tastatur un text cu cel mult 100 de caractere
(doar litere mici ale alfabetului englez i spaii) i un cuvnt cu cel mult 15 caractere, doar
litere mici ale alfabetului englez, i care afieaz pe ecran irul obinut prin inserarea n
textul iniial a caracterului ? dup fiecare apariie a cuvntului citit. Dac n text nu apare
cuvntul citit, se va afia mesajul NU APARE.
Exemplu: dac se citete de la tastatur textul
examenului examenul de bacalaureat si examenul de atestat
i cuvntul examenul se va afia:
examenului examenul? de bacalaureat si examenul? de atestat
(10p.)
Subiectul II
1.
2.
p=prim;
k=0;
while(p->urm!=NULL && k>=0)
{if(p->nr%2==0) k=k+1;
else k=k-1;
p=p->urm;
}
printf(%d,p->nr); | cout<<p->nr;
c. 3
d. 8
4.
5.
Scriei programul C/C++ care citete de la tastatur un text cu cel mult 100 de caractere
(doar litere ale alfabetului englez i spaii), construiete n memorie i apoi afieaz pe
ecran irul de caractere obinut din irul iniial, n care se insereaz dup fiecare vocal
caracterul *. Se consider vocale literele a, e, i, o, u, A, E, I, O, U. Dac textul citit nu
conine vocale, se va afia mesajul FARA VOCALE.
Exemplu: dac se citete de la tastatur textul Examenul de bacalaureat se va obine
i afia: E*xa*me*nu*l de* ba*ca*la*u*re*a*t.
(10p.)
Subiectul II
a. 16
2.
b. 15
c. 64
a. 18
b. 20
c. 12
d. 14
Un graf orientat are 8 arce i fiecare nod al grafului are gradul exterior un numr nenul. Doar
dou dintre noduri au gradul exterior un numr impar, restul avnd gradele exterioare
numere pare. Care este numrul maxim de noduri pe care le poate avea graful?
(6p.)
4.
5.
1:
2:
3:
4:
5:
6:
2,5,6
1,3,4
2,4,6
2,3,5
1,4,6
1,3,5
Scriei programul C/C++ care citete de la tastatur un cuvnt cu cel puin una i cel mult 20
de litere ale alfabetului englez, construiete i afieaz pe ecran cuvntul obinut prin
interschimbarea primei consoane cu ultima vocal din cuvnt. n cazul n care cuvntul este
format numai din vocale sau numai din consoane, programul afieaz pe ecran mesajul
IMPOSIBIL. Se consider vocale literele a, e, i, o, u, A, E, I, O, U.
Exemplu: dac se citete cuvntul Marmorat se va obine i afia cuvntul aarmorMt
(10p.)
Subiectul II
a. s[0]==s[1]
2.
b. s[1]==s[2]
c. s[0]==s[2]
d. s[1]==s[3]
Care dintre urmtoarele afirmaii este adevrat pentru graful neorientat avnd mulimea
nodurilor X={1,2,3,4,5} i mulimea muchiilor U={[1,2], [1,5], [2,3], [2,4],
[3,4], [4,5]}?
(4p.)
a. Este graf
eulerian.
hamiltonian, dar
nu este
dar
nu
este
4.
O list liniar simplu nlnuit, alocat dinamic, reine n cmpul info al fiecrui element
cte un numr natural nenul cu cel mult 4 cifre, iar n cmpul adr adresa elementului
urmtor din list sau NULL dac nu exist un element urmtor. Se consider c adresa
primului element al listei este reinut de variabila prim, i c variabila p este de acelai tip
cu variabila prim. S se nlocuiasc punctele de suspensie din secvena de program
urmtoare cu instruciunile corespunztoare, astfel nct, n urma executrii, aceasta s
determine afiarea tuturor numerelor memorate n list, care sunt divizibile cu 7.
p=prim;
while(p!=NULL)
{......}
5.
(6p.)
Scriei un program C/C++ care citete de la tastatur trei valori naturale nenule k, n, m
(n10, m10, k32000) i apoi n*m numere ntregi, fiecare avnd cel mult 4 cifre,
reprezentnd elementele unui tablou bidimensional cu liniile numerotate de la 1 la n i
coloanele numerotate de la 1 la m.
Programul determin i afieaz pe ecran suma numerelor de ordine 2 4 5 -8
ale coloanelor care conin cel puin o dat valoarea k. Dac nu exist 1 3 7 9
nicio coloan care s conin cel puin o dat valoarea k, programul 4 -2 3 10
va afia pe ecran mesajul NU EXISTA.
5 4 2 37
Exemplu:pentru k=3,n=5,m=4 i matricea alturat se va afia 5, 6 7 3 13
deoarece coloanele 2 i 3 conin numrul k=3.
(10p.)
Subiectul II
a. 5
2.
b. 6
c. 4
d. 7
4.
O list liniar simplu nlnuit, alocat dinamic, reine n cmpul info al fiecrui element
cte un numr natural nenul cu cel mult 4 cifre, iar n cmpul adr adresa elementului
urmtor din list sau NULL dac nu exist un element urmtor. Considernd c adresa
primului element al listei este reinut de variabila prim, i c variabila p este de acelai tip
cu variabila prim, s se nlocuiasc punctele de suspensie din secvena de program
urmtoare cu instruciunile corespunztoare, astfel nct, executarea secvenei s determine
afiarea pe ecran a tuturor numerelor, memorate n list, care au cifra unitilor egal cu 0.
p=prim;
while(p!=NULL)
{.....}
5.
(6p.)
Scriei un program C/C++ care citete de la tastatur trei valori naturale nenule k, n, m
(n10, m10, k32000) i apoi n*m numere ntregi, fiecare avnd cel mult 4 cifre,
reprezentnd elementele unui tablou bidimensional cu liniile numerotate de la 1 la n i
coloanele numerotate de la 1 la m.
Programul determin i afieaz pe ecran produsul numerelor de 2
4
5 -8
ordine ale coloanelor care conin cel puin o dat valoarea k. Dac 5
3
7
9
nu exist nicio coloan care s conin cel puin o dat valoarea k, 6 -2
3 10
programul va afia pe ecran mesajul NU EXISTA.
7
4
2
37
Exemplu: pentru k=3, n=5, m=4 i matricea alturat se va afia 8
7
3
13
6, deoarece coloanele 2 i 3 conin numrul k=3.
(10p.)
Subiectul II
a. bac2009
2.
b. 2009
c. bac
d. 2009bac
a. 6
b. 5
c. 4
d. 7
Scriei matricea de adiacen a unui graf neorientat cu 6 noduri n care toate nodurile au
gradul 2 i care are dou componente conexe.
(6p.)
4.
5.
O list liniar dublu nlnuit, alocat dinamic, reine n cmpul info al fiecrui element
cte o liter din alfabetul englez. Considernd c lista este creat i conine un numr par
de elemente i c adresa primului element este reinut n variabila prim, iar adresa
ultimului element este reinut n variabila ultim s se scrie declarrile de tipuri i date
necesare i secvena de program C/C++ care inverseaz ordinea valorilor reinute n list.
Exemplu: dac lista conine iniial valorile
prim
i
ultim
o
ultim
i
(10p.)
Subiectul II
a. 2
2.
b. 0
c. 4
d. 3
a. {8, 6, 1, 5}
b. {1, 6}
c. {8}
d. {1, 6, 8}
Se consider variabila c, de tip char, care memoreaz o liter a alfabetului englez, diferit
de z sau Z. Scriei secvena de program C/C++ care afieaz pe ecran litera care i
urmeaz n alfabet.
Exemplu: dac litera memorat este g se va afia h.
(6p.)
4.
5.
O list liniar simplu nlnuit, alocat dinamic, reine n cmpul info al fiecrui element
cte un numr natural din intervalul [1,10000], iar n cmpul adr, adresa elementului
urmtor din list sau NULL dac nu exist un element urmtor n list. Considernd c lista
este creat (are cel puin dou elemente) i c adresa primului element este reinut de
variabila prim s se scrie declarrile de tipuri i date necesare i secvena C/C++ care
afieaz pe ecran produsul numerelor memorate n primul i ultimul element al listei.
Exemplu: pentru lista
prim
34
19
22
123
(10p.)
Subiectul II
a. 4
2.
b. 3
c. 1
d. 2
a. 4
b. 3
c. 2
d. 5
Variabila s reine un ir de caractere format din cel puin 2 i cel mult 30 de litere mici ale
alfabetului englez. Scriei secvena de program C/C++ care afieaz pe ecran primul i
ultimul caracter al irului s.
(6p.)
4.
5.
O list liniar simplu nlnuit, alocat dinamic, reine n cmpul info al fiecrui element
cte un numr natural din intervalul [1,10000], iar n cmpul adr, adresa elementului
urmtor din list sau NULL dac nu exist un element urmtor. Considernd lista creat i
c adresa primului element este reinut n variabila prim, s se scrie declarrile de tipuri i
date necesare i secvena de program C/C++ care afieaz pe ecran numerele memorate
n list, care sunt ptrate perfecte.
Exemplu: pentru lista
prim
34
25
20
16
(10p.)
Subiectul II
a.
c.
2.
a.
b.
exam
c.
menn
d.
men
4.
5.
Scriei un program C/C++ care citete de la tastatur un numr natural n (1n10) apoi
construiete n memorie o matrice cu 2*n linii i 2*n coloane, numerotate de la 1 la 2*n,
astfel nct parcurgnd doar liniile impare ale matricei de sus n jos i fiecare linie impar de
la stnga la dreapta se obin n ordine strict cresctoare toate numerele impare cuprinse n
intervalul [1,4*n2], iar parcurgnd doar liniile pare ale matricei de sus n jos i fiecare linie
par de la dreapta la stnga se obin n ordine strict cresctoare toate numerele pare
cuprinse n intervalul [1,4*n2], ca n exemplu.
Programul afieaz pe ecran matricea obinut, cte o linie a matricei
1 3 5 7
pe cte o linie a ecranului, elementele fiecrei linii fiind separate prin
8 6 4 2
cte un spaiu.
9 11 13 15
Exemplu: pentru n=2 se obine matricea alturat.
(10p.) 16 14 12 10
q=p;
a=p->urm->nr;
while (q->urm->urm!=NULL)
{
q=q->urm;
q->urm->nr=q->nr+q->urm->nr;
}
b=q->nr;
Subiectul II
a.
c.
2.
a.
c.
struct
n declararea alturat, variabila p memoreaz n cmpul x
{float x;
abscisa, iar n cmpul y ordonata unui punct din planul xOy. Dac
float y;}p;
punctul se afl pe cel puin una dintre axele de coordonate, care
dintre expresiile de mai jos are valoarea 1?
(4p.)
p.x*p.y==0
b. (p.x==0)&&(p.y==0)
x.p+y.p==0
d. (p(x)==0)||(p(y)==0)
Ce valoare are variabila s de tip ir de caractere dup executarea instruciunilor de mai
jos?
strncpy(s,strstr("Informatica","form"),strlen("BAC08")); s[5]='\0';
(4p.)
form
b. forma
InfoBAC
d. Infor
1
0
1
1
1
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
3.
4.
Fiecare element al unei liste simplu nlnuite, alocat dinamic, reine n cmpul nr un
numr ntreg, iar n cmpul urm adresa urmtorului element din list sau NULL dac nu
exist un element urmtor.
Ce valori au variabilele ntregi a i b dup executarea q=p;
secvenei alturate, dac variabila p reine adresa a=p->urm->nr;
while (q->nr>=0)
primului element al listei de mai jos, iar variabila q este {
de acelai tip cu p?
q->urm->nr=q->nr-p->nr;
q=q->urm;
}
(6p.) b=q->nr;
5.
Subiectul II
a.
p.x*p.y==0
b.
c.
x.p==y.p
d.
2.
a.
struct
{float x;
float y;}p;
(p.x==0)&&(p.y==0)
p(x)==0
Ce valoare are variabila s de tip ir de caractere dup executarea instruciunii de mai jos?
s=strcat(strstr("bacalaureat", "bac")+ strlen("2009"),"09");
(4p.)
BAC2009
b.
laureat09
c.
Bac200909
aur2009
d.
1
0
1
1
1
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
3.
4.
Fiecare element al unei liste simplu nlnuite, alocat dinamic, reine n cmpul nr un
numr ntreg, iar n cmpul urm adresa urmtorului element din list sau NULL dac nu
exist un element urmtor.
Ce valori au variabilele ntregi a i b dup executarea q=p;
secvenei alturate, dac variabila p reine adresa a=p->urm->nr;
primului element al listei de mai jos, iar variabila q este while (q->urm!=NULL)
{
de acelai tip cu p?
q->urm->nr=q->nr*p->nr;
q=q->urm;
}
(6p.) b=q->nr;
Scriei un program C/C++ care citete de la tastatur un numr natural n (1n20),
elementele unei matrice cu n linii i n coloane, numere ntregi din intervalul [-100,100] i
afieaz pe ecran media aritmetic a elementelor strict pozitive ale matricei, care sunt
situate deasupra diagonalei principale, ca n exemplu. Dac nu exist elemente strict
pozitive situate deasupra diagonalei principale, programul va afia mesajul NU EXISTA.
5.
-1 2 -4 5
0 6 3 1
2 4 2 0
3 -5 1 -3
Subiectul II
a.
b.
c.
d.
2.
a.
struct
{float x;
float y;}p;
(4p.)
informat
c.
inform
d.
informBAC
4.
5.
Scriei un program C/C++ care citete de la tastatur un numr natural n (1n6) apoi
construiete n memorie o matrice cu n linii i n coloane, astfel nct parcurgnd liniile
matricei de sus n jos i de la stnga la dreapta se obin, n prima linie primele n numere ale
irului Fibonacci n ordine cresctoare, n linia a doua urmtoarele n numere ale irului
Fibonacci n ordine descresctoare, n linia a treia urmtoarele n numere ale acestui ir n
ordine cresctoare, i aa mai departe, ca n exemplu. Elementele irului Fibonacci se obin
astfel: primul element este 0, al doilea este 1, iar elementele urmtoare se obin nsumnd
cele dou elemente care preced elementul curent. Astfel, primele 16 elemente ale acestui ir
sunt: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610.
0
1
1
2
Programul afieaz pe ecran matricea obinut, cte o linie a
13
8
5
3
matricei pe cte o linie a ecranului, elementele fiecrei linii fiind
21
34
55
89
separate prin cte un spaiu.
Exemplu: pentru n=4 se obine matricea alturat.
(10p.) 610 377 233 144
q=p;
a=p->urm->nr;
while (q->urm!=NULL)
{
q->urm->nr=2*q->nr+1;
q=q->urm;
}
b=q->nr;
Subiectul II
a.
2.
a.
struct
{
float x;
float y;
}p;
p(x)+p(y)>0
1
0
1
1
1
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
3.
4.
Fiecare element al unei liste simplu nlnuite, alocat dinamic, reine n cmpul nr un
numr ntreg, iar n cmpul urm adresa urmtorului element din list sau NULL dac nu
exist un element urmtor.
Ce valori au variabilele ntregi a i b dup executarea q=p;
secvenei alturate, dac variabila p reine adresa a=p->urm->nr;
while (q->urm!=NULL)
primului element al listei de mai jos, iar variabila q este {
de acelai tip cu p?
q->urm->nr=q->nr*a;
q=q->urm;
}
(6p.) b=q->nr;
5.
Subiectul II
Se consider un graf neorientat G cu 101 noduri i 101 muchii. Numrul maxim de vrfuri
izolate ale grafului poate fi:
(4p.)
a. 0
2.
b. 10
c. 50
d. 86
a. 1, 6 i 10
c. 6, 8 i 9
b. 5
d. 3
4.
5.
char c[]="abracadabra";
i=6;
cout<<c[i]<<c[i+1] <<endl;
| printf(%c%c\n, c[i],c[i+1]);
while (i>=0)
{cout<<c[i]; | printf(%c,c[i]);
i=i-1;}
O list dublu nlnuit, alocat dinamic, memoreaz n fiecare nod al su, n cmpul info
un caracter, iar n cmpurile prec i urm adresa nodului precedent, respectiv urmtor din
list sau NULL dac nu exist un nod precedent, respectiv urmtor n list.
Scriei programul C/C++ care citete de la tastatur un cuvnt (avnd maximum 20 de
litere), creeaz lista dublu nlnuit care va conine n ordine, de la stnga la dreapta,
caracterele cuvntului citit (cte o liter n fiecare nod al listei) i afieaz pe ecran
caracterele din list, n ordinea invers a memorrii lor.
Exemplu: dac s-a citit de la tastatur cuvntul IRINA se creaz lista de mai jos, apoi se va
afia ANIRI.
(10p.)
Subiectul II
a. (2,3)
2.
b.
(1,2)
c. (1,4)
d. (4,1)
Variabila s este de tip ir de caractere, iar variabilele c1 i c2 sunt de tip char. Care
expresie are valoarea 1 dac i numai dac irul de caractere s conine caracterele
memorate de variabilele c1 i c2?
(6p.)
a. strstr(s,c1+c2)!=0
b. strchr(s,c1)!=0 || strchr(s,c2)!=0
c. strchr(strchr(s,c1),c2)!=0
d. strchr(s,c1)*strchr(s,c2)!=0
4.
Scriei o expresie logic C/C++ care s struct punct {float x; float y;};
codifice condiia ca variabila v din declaraiile struct segment {
alturate s reprezinte segmentul nul
struct punct origine;
(segmentul care are originea identic cu
struct punct extremitate;} v;
extremitatea).
(4p.)
5.
Pe ecran se va afia:
14 6 3
9 22 5
Subiectul II
a. 3
2.
b. 0
c. 2
d. 1
a. P.x==0
b. P.y==0
c. P.x+P.y==0
d. P.x==P.y
(3p.)
Subiectul II
3.
4.
Scriei un program n limbajul C/C++ care citete de la tastatur un singur ir format din cel
mult 20 de caractere care reprezint numele i prenumele unei persoane. ntre nume i
prenume se afl un numr oarecare de caractere spaiu (cel puin unul). Att numele ct i
prenumele sunt formate numai din litere ale alfabetului englez. Programul construiete n
memorie i afieaz pe ecran un al doilea ir de caractere, care s conin prenumele,
urmat de exact un spaiu i apoi numele din irul citit iniial.
Exemplu: dac se citete irul:
Popescu
Vasile
se va construi i apoi se va afia pe ecran irul
Vasile Popescu
(10p.)
5.
n memorie este construit o list simplu nlnuit, alocat dinamic, ale crei elemente
memoreaz n cmpul lit un caracter i n cmpul next adresa elementului urmtor din
list sau valoarea NULL dac nu exist un element urmtor. Se tie c acast list conine
cel puin trei elemente. Variabila prim reine adresa primului element al acestei liste, iar
variabila ultim reine adresa ultimului element din aceast list.
Scriei secvena de program care interschimb valorile reinute n cmpurile lit de la al
doilea, respectiv de la ultimul element al acestei liste. n cazul n care vei folosi i alte
variabile dect cele date prin enun, scriei i declarrile necesare pentru aceste variabile.
Exemplu: dac presupunem c iniial lista avea coninutul i forma urmtoare:
prim
ultim
V a s i l e
atunci, n urma executrii secvenei, ea va avea urmtorul coninut:
prim
ultim
V e s i l a
(6p.)
Subiectul II
Cte valori nule pot s apar ntr-un vector cu legturi de tip tat asociat unui arbore cu
rdcin care conine 10 noduri?
(4p.)
b. exact una
a. niciuna
c. depinde de configuraia arborelui
d. exact dou
n secvena alturat, i, j i n sunt variabile ntregi, iar a for(i=0; i<n; i++)
for(j=0; j<n; j++)
este o matrice ptratic format din n linii i n coloane
a[i][j] = (i+j)%n;
numerotate de la 0 la n-1. Care este suma elementelor
de pe diagonala secundar din matricea a, n urma
executrii acestei secvene, dac n=8?
(4p.)
b. 64
c. 24
d. 56
a. 8
2.
5.
Subiectul II
Care este numrul maxim de valori egale care pot s apar ntr-un vector cu legturi de tip
tat asociat unui arbore cu rdcin care conine 10 noduri?
(4p.)
a. cel mult 2
b. 10
d. 9
2.
a. 24
b. 64
c. 56
d. 8
5.
la 1 la 5,
(6p.)
0
1
0
0
0
Scriei un program n limbajul C/C++ care citete de la tastatur dou iruri, formate fiecare
din cel mult 20 de caractere. Primul ir reprezint numele unei persoane, iar al doilea ir
reprezint prenumele aceleiai persoane. Att numele ct i prenumele sunt formate numai
din litere ale alfabetului englez i fiecare conine cel puin o consoan. Programul
construiete n memorie i afieaz pe ecran un al treilea ir de caractere, care conine
consoanele din prenumele citit dispuse n ordinea n care apar n prenume urmate de exact
un spaiu i de numele citit.
Exemplu: dac primul ir citit este Popescu, iar al doilea este Vasile
se va construi i apoi se va afia pe ecran irul
Vsl Popescu
(10p.)
Subiectul II
Se consider un graf neorientat 5 noduri i 3 muchii. Care este numrul maxim de noduri
cu grad 1 care pot exista n graf?
(6p.)
a. 2
2.
b. 3
c. 4
d. 5
a. 3 4 5
b. 1
c. 2 6
d. 1 2 6
(6p.)
4.
O list liniar simplu nlnuit, alocat dinamic, reine n cmpul info al fiecrui element
cte un numr ntreg de cel mult 4 cifre, iar n cmpul adr, adresa elementului urmtor din
list sau NULL dac nu exist un element urmtor n list. Lista are cel puin trei noduri, iar
variabila p reine adresa primului nod al listei. Scriei, n limbajul C/C++, declarrile ce
definesc lista i o secven de instruciuni prin a crei executare se afieaz pe ecran
valoarea memorat n cel de-al treilea nod al listei.
(4p.)
5.
Subiectul II
Fie graful orientat G cu 5 vrfuri, numerotate cu 1,2,3,4,5, i arcele (1,2), (1,3), (1,4),
(2,3), (4,2), (4,5), (5,2), (2,4). Care dintre urmtoarele vrfuri au gradul extern
egal cu gradul intern?
(4p.)
a. 2 i 4
2.
b. 4 i 5
c. 1 i 2
d. 3 i 4
a. xmn
b. Eae
c. men
d. Examen
4.
Tipul de date structurat COLET permite reinerea a dou numere reale, reprezentnd
valoarea exprimat n euro a unui colet potal, respectiv greutatea exprimat n kilograme,
i un ir de caractere reprezentnd numele oraului expeditorului, format din cel mult 30 de
caractere. Scriei n limbajul C/C++ o declarare pentru tipul de date COLET i o secven de
instruciuni care permite citirea valorilor componentelor variabilei x de tipul COLET. Denumii
sugestiv componentele tipului de date COLET.
(6p.)
5.
Scriei un program C/C++ care citete de la tastatur un numr natural nenul n (n24) i
construiete n memorie o matrice cu n linii i n coloane care s conin primele n2 numere
naturale pare. Prima linie a matricei va conine, n ordine cresctoare, valorile 0, 2,.., 2n-2;
a doua linie va conine, n ordine, valorile 2n, 2n+2,.., 4n-2; a treia linie va conine, n
ordine, valorile 4n, 4n+2,.., 6n-2, iar ultima linie va conine, n ordine, valorile 2n2-2n,
2n2-2n+2,.., 2n2-2.
Programul afieaz pe ecran matricea construit, cte o linie a matricei 0 2 4
pe cte o linie a ecranului, elementele de pe aceeai linie fiind desprite 6 8 10
12 14 16
prin cte un spaiu.
Exemplu: pentru n=3 se va afia matricea alturat.
(10p.)
Subiectul II
a. 6
2.
b. 4
c. 3
d. 5
Considerm variabila x care memoreaz irul de caractere ABAC. Care dintre urmtoarele
instruciuni conduc la afiarea caracterului B?
(4p.)
a. cout<<x[strlen(x)-3];
| printf("%c",x[strlen(x)-3]);
b. cout<<x[strlen(x)-1];
| printf("%c",x[strlen(x)-1]);
c. cout<<x[2];
| printf("%c",x[2]);
d. cout<<x[strlen(x)];
| printf("%c",x[strlen(x)]);
Considerm un graf neorientat cu 5 noduri i 3 muchii format din dou componente conexe.
tiind c doar patru dintre noduri au gradul 1, scriei matricea de adiacen a grafului. (6p.)
4.
5.
Scriei un program C/C++ care citete de la tastatur un numr natural nenul n (n24) i
construiete n memorie un tablou bidimensional cu n linii i n coloane care s conin
primele n numere naturale nenule. Prima linie a tabloului va conine, n aceast ordine,
valorile 1,2,...,n; a doua linie va conine, n ordine, valorile 2,2,3,...,n; a treia linie
va conine, n ordine, valorile 3,3,3,4,...,n, iar ultima linie va conine valorile n,
n,..., n.
Programul afieaz pe ecran matricea construit, cte o linie a matricei 1 2 3 4 5
pe cte o linie a ecranului, elementele fiecrei linii fiind desprite prin 2 2 3 4 5
3 3 3 4 5
cte un spaiu.
Exemplu: pentru n=5 se va afia matricea alturat.
(10p.) 4 4 4 4 5
5 5 5 5 5
Subiectul II
Care este numrul minim de muchii care trebuie eliminate dintr-un graf neorientat complet
cu 100 de noduri astfel nct graful parial obinut s fie eulerian?
(4p.)
a. 4851
2.
b. 0
c. 100
d. 50
Fiecare element al unei liste simplu nlnuite, alocat dinamic, memoreaz n cmpul urm
adresa urmtorului element din list sau NULL dac nu exist un element urmtor n list,
iar variabilele k1, k2 i k3 rein adresele a 3 elemente succesive n list, ca n figur. Cu ce
instruciune se pot nlocui punctele de suspensie din secvena de mai jos astfel nct
aceasta s determine interschimbarea corect a poziiilor n list a elementelor de la
adresele k2 i k3?
(4p.)
k1->urm=k3; ... k3->urm=k2;
a. k2->urm=k3->urm;
b. k2->urm=k3;
c. k2->urm=k1->urm;
d. k2=k3->urm;
4.
5.
(6p.)
Scriei un program C/C++ care citete de la tastatur un numr natural n (1n100)i apoi
elementele unui tablou bidimensional cu n linii i n coloane, care memoreaz numere
naturale cu cel mult 9 cifre fiecare; programul afieaz pe ecran acele valori din tablou care
sunt strict mai mici dect toate elementele cu care se nvecineaz direct (aflate pe aceeai
linie dar pe o coloan alturat sau pe aceeai coloan dar pe o linie alturat), ca n
exemplu. Numerele afiate vor fi separate prin cte un spaiu.
Exemplu: pentru n=4 i tabloul alturat se afieaz numerele: 2 0 (2 se 5 4 7 9
nvecineaz direct cu 4, 3, 6 i 9, i este mai mic dect acestea, iar 0 se 6 2 3 4
nvecineaz direct cu 6, 9 i 1 i este mai mic dect acestea).
(10p.) 0 9 8 5
1 3 8 6
Subiectul II
3.
4.
//C++
Fiierul text bac.txt conine, pe o singur linie, cel mult 1000 de numere naturale nenule
cu cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un program
C/C++ care citete de la tastatur un numr natural nenul n (n999) i numerele din fiierul
bac.txt i care afieaz pe ecran, separate prin cte un spaiu, toate numerele din fiier
care sunt divizibile cu n. Dac fiierul nu conine niciun astfel de numr, atunci se va afia
pe ecran mesajul NU EXISTA.
Exemplu: dac fiierul bac.txt conine numerele: 3 100 40 70 25 5 80 6 3798,
pentru n=10 atunci pe ecran se va afia: 100 40 70 80
(10p.)
Subprogramul sub, cu trei parametri, primete prin intermediul parametrilor:
v un tablou unidimensional cu cel mult 100 de componente ce memoreaz numere
ntregi de cel mult 4 cifre fiecare;
n un numr natural nenul mai mic sau egal cu 100 ce reprezint numrul efectiv de
componente ale tabloului primit prin intermediul parametrului v;
a un numr ntreg cu cel mult 4 cifre.
Subprogramul sub returneaz numrul componentelor tabloului primit prin intermediul
parametrului v ale cror valori sunt strict mai mici dect valoarea parametrului a.
Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=20 ale parametrilor, n urma
apelului, subprogramului sub va returna valoarea 2.
a) Scriei definiia complet a subprogramului sub.
(4p.)
Subiectul III
3. Fiierul text NR.TXT conine pe o singur linie, separate prin cte un spaiu, cel mult 100 de
numere ntregi, fiecare numr avnd cel mult 4 cifre. Scriei un program C/C++ care citete
numerele din fiierul NR.TXT i afieaz pe ecran, separate prin cte un spaiu, n ordine
cresctoare, toate numerele naturale nenule din fiier. Dac nu exist astfel de numere se
va afia pe ecran mesajul NU EXISTA.
Exemplu: dac fiierul NR.TXT conine numerele: -3 -10 0 7 -5 7 51 -800 6 3798,
atunci pe ecran se va afia: 6 7 7 51 3798
(10p.)
4. Un numr n se numete extraprim dac att el, ct i orice numr obinut prin permutarea
cifrelor lui n, sunt numere prime. De exemplu, numrul 113 este un numr extraprim
deoarece 113, 311, 131 sunt numere prime.
a) Scriei definiia complet a unui subprogram f, cu un parametru, subprogram care:
- primete prin intermediul parametrului a un numr natural cu cel mult 3 cifre (a>1)
- returneaz suma tuturor exponenilor din descompunerea n factori primi a valorii
parametrului a.
Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*32*5 i
1+2+1=4.
(4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n, 2n999 i,
folosind apeluri utile ale subprogramului f, verific dac n este un numr extraprim. n caz
afirmativ, programul afieaz pe ecran mesajul DA, n caz contrar afind mesajul NU. (6p.)
Subiectul III
Fiierului text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel
mult 100 de numere naturale, fiecare numr avnd cel mult 4 cifre. Scriei un program
C/C++ care citete toate numerele din fiierul NR.TXT i afieaz pe ecran, separate prin
cte un spaiu, n ordine cresctoare, toate numerele din fiier care au cel puin 3 cifre.
Dac fiierul nu conine astfel de numere se va afia pe ecran mesajul NU EXISTA. (10p.)
4.
(4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu exact 8 cifre
i care determin i afieaz pe ecran, folosind apeluri utile ale subprogramului cif, cel mai
mare numr palindrom ce poate fi obinut prin rearanjarea tuturor cifrelor numrului n. Dac
nu se poate obine un palindrom din toate cifrele numrului n, programul va afia pe ecran
numrul 0. Un numr natural este palindrom dac este egal cu numrul obinut prin scrierea
cifrelor sale n ordine invers.
Exemplu: dac n=21523531 atunci se va afia pe ecran numrul 53211235, iar dac
n=12272351 atunci se va afia pe ecran numrul 0.
(6p.)
Subiectul III
Fiierul text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel mult
100 de numere naturale, fiecare numr avnd cel mult 4 cifre. Scriei un program C/C++
care citete numerele din fiierul NR.TXT i afieaz pe ecran, separate prin cte un spaiu,
n ordine descresctoare, toate numerele din fiier care au cel mult 2 cifre. Dac fiierul nu
conine astfel de numere se va afia pe ecran mesajul NU EXISTA.
(10p.)
4.
(4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu exact 8 cifre,
fiecare cifr fiind nenul, i care determin i afieaz pe ecran, folosind apeluri utile ale
subprogramului cif, cel mai mic numr palindrom ce poate fi obinut prin rearanjarea
tuturor cifrelor numrului n. Dac nu se poate obine un palindrom din toate cifrele numrului
n, programul va afia pe ecran numrul 0. Un numr natural este palindrom dac este egal
cu numrul obinut prin scrierea cifrelor sale n ordine invers.
Exemplu: dac n=21523531 atunci se va afia pe ecran numrul 12355321, iar dac
n=12272351 atunci se va afia pe ecran numrul 0.
(6p.)
Subiectul III
Folosind modelul combinrilor se genereaz numerele naturale cu cte trei cifre distincte din
mulimea {1,2,3,7}, numere cu cifrele n ordine strict cresctoare, obinndu-se, n ordine:
123, 127, 137, 237. Dac se utilizeaz exact aceeai metod pentru a genera numerele
naturale cu patru cifre distincte din mulimea {1,2,3,4,5,6,7,8}, cte dintre numerele
generate au prima cifr 2 i ultima cifr 7?
(4p.)
8
3
4
6
b.
c.
d.
a.
3.
Scriei un program C/C++ care citete de la tastur un numr natural n cu cel mult 8 cifre
(n10) i care creeaz fiierul text NR.TXT ce conine numrul n i toate prefixele nenule
ale acestuia, pe o singur linie, separate prin cte un spaiu, n ordine descresctoare a
valorii lor.
Exemplu: pentru n=10305 fiierul NR.TXT va conine numerele:
10305 1030 103 10 1
(10p.)
4.
Subprogramul f, cu un parametru:
- primete prin intermediul parametrului a un numr natural cu cel mult 8 cifre (a>1)
- returneaz cel mai mic divizor prim al valorii parametrului a.
Exemplu: pentru valoarea 45 a parametrului a, subprogramul va returna valoarea 3
deoarece a=32*5, iar cel mai mic divizor prim al su este 3.
a) Scriei definiia complet a subprogramului f.
(4p.)
(6p.)
Subiectul III
Utiliznd metoda backtracking sunt generate numerele de 3 cifre, avnd toate cifrele
distincte i cu proprietatea c cifrele aflate pe poziii consecutive sunt de paritate diferit.
tiind c primele ase soluii generate sunt, n aceast ordine, 103, 105, 107, 109, 123,
125, care este a zecea soluie generat?
(4p.)
b. 147
c. 230
d. 149
a. 145
Scriei un program C/C++ care citete de la tastatur un numr natural n (n100) i apoi
cele n elemente, numere naturale cu cel mult 4 cifre fiecare, ale unui tablou unidimensional
a. Programul afieaz pe o linie a ecranului suma celor n elemente ale tabloului, pe
urmtoarea linie a ecranului suma primelor n-1 elemente i aa mai departe, astfel nct
ultima linie afiat s conin doar primul element al tabloului.
15
Exemplu: dac n=4 iar tabloul are elementele
11
a=(1,7,3,4) programul va afia valorile
8
alturate:
(10p.)
1
4.
(6p.)
Subiectul III
a. 513
b. 24
Folosind tehnica bactracking un elev a scris un program care genereaz toate numerele de
cte n cifre (0<n9), cifrele fiind n ordine strict cresctoare. Dac n este egal cu 5, scriei
n ordine cresctoare toate numerele avnd cifra unitilor 6, care vor fi generate de
program.
(6p.)
3.
Scriei un program C/C++ care citete de la tastatur un numr natural n (0<n100)i cele
3*n elemente ale tabloului unidimensional v, fiecare element fiind un numr natural cu cel
mult patru cifre fiecare. Tabloul este mprit n trei zone, cu cte n elemente: prima zon
conine primele n elemente din tablou, a doua zon conine urmtoarele n elemente din
tablou, restul elementelor fiind n zona a treia. Programul va interschimba primul element
par (dac exist) al zonei unu cu ultimul element impar (dac exist) al zonei trei i apoi va
scrie pe prima linie a fiierului text BAC.TXT toate elementele tabloului, separate prin cte
un spaiu. n cazul n care unul dintre aceste dou elemente, care urmeaz a fi
interschimbate, nu exist, programul nu va efectua nici o modificare asupra tabloului dat.
Exemplu: pentru n=3 i v=(1 2 3 4 5 6 7 8 9), fiierul BAC.TXT va conine:
1 9 3 4 5 6 7 8 2
(10p.)
4.
(4p.)
Subiectul III
Utiliznd metoda backtracking sunt generate numerele de 3 cifre care au cifrele n ordine
cresctoare, iar cifrele aflate pe poziii consecutive sunt de paritate diferit. tiind c primele
cinci soluii generate sunt, n aceast ordine, 123, 125, 127, 129, 145, care este cel de al
8-lea numr generat?
(4p.)
b. 149
c. 167
d. 147
a. 169
2.
Se consider subprogramul f,
descris alturat. Ce se va afia
n urma apelului f(3);? (6p.)
3.
Pe prima linie a fiierului text BAC.TXT se afl o valoare natural n (1<n50), iar pe a doua
linie n numere naturale cu maximum 4 cifre fiecare, desprite prin cte un spaiu. n irul
numerelor de pe a doua linie a fiierului exist cel pzin dou numere ptrate perfecte.
Scriei un program C/C++ care citete toate numerele din fiier i afieaz pe ecran
expresia aritmetic reprezentnd suma numerelor de pe a doua linie a fiierului care au
proprietatea c sunt ptrate perfecte, cu simbolul + ntre ele i, dup un semn =, valoarea
acestei sume, ca n exemplu. Termenii sumei afiate se pot afla n orice ordine.
Exemplu: dac fiierul BAC.TXT are urmtorul coninut
5
9 5 36 9 8
atunci pe ecran se poate afia:
9+9+36=54 sau 9+36+9=54 sau 36+9+9=54
(10p.)
4.
Subiectul III
3.
4.
(10p.)
Se consider fiierul BAC.TXT ce conine cel mult un milion de numere naturale separate
prin spatii, fiecare numr avnd cel mult nou cifre.
a) Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i determin,
folosind un algoritm eficient din punct de vedere timpului de executare, cele mai mari dou
numere de trei cifre care nu se afl n fiier. Cele dou numere vor fi afiate pe ecran n
ordine descresctoare, cu un spaiu ntre ele. Dac nu pot fi determinate dou astfel de
numere, programul va afia pe ecran valoarea 0.
Exemplu: dac fiierul BAC.TXT conine numerele:
12 2345 123 67 989 6 999 123 67 989 999
atunci programul va afia
998 997
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
Subiectul III
a. 9
b. 6
Un elev a scris un program care, folosind metoda backtracking, genereaz toate numerele
de cte 5 cifre, cifrele fiind n ordine strict cresctoare. Scriei toate numerele generate de
program care au prima cifr 5.
(6p.)
3.
4.
Subiectul III
1.
if (n==0) return 9;
else
{c=f(n/10);
if (n%10<c) return n%10;
else return c;
}
3.
Fiierul text numere.txt conine pe prima linie un numr natural n (n<30000), iar pe a
doua linie n numere ntregi avnd maximum 4 cifre fiecare. Se cere s se afieze pe ecran
un ir de n numere ntregi, cu proprietatea c valoarea termenului de pe poziia i
(i=1,2,,n) din acest ir este egal cu cea mai mare dintre primele i valori de pe a doua
linie a fiierului numere.txt.
a) Descriei pe scurt un algoritm de rezolvare, eficient din punct de vedere al timpului de
executare i al spaiului de memorie utilizat, explicnd n ce const eficiena sa.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)
Exemplu: dac fiierul numere.txt are coninutul 12
4 6 3 7 8 1 6 2 7 9 10 8
alturat, se afieaz pe ecran numerele
4 6 6 7 8 8 8 8 8 9 10 10
4.
a) Scriei doar antetul funciei sum care primete ca parametru un numr natural nenul x cu
maximum 9 cifre i returneaz suma divizorilor numrului x.
Exemplu: sum(6) are valoarea 12 (=1+2+3+6).
(3p.)
b) S se scrie un program C/C++ care citete de la tastatur un numr natural n (0<n<25) i
apoi n numere naturale nenule cu maximum 9 cifre fiecare. Programul calculeaz, folosind
apeluri ale funciei sum, i afieaz pe ecran cte numere prime conine irul citit.
Exemplu: pentru n=5 i valorile 12 3 9 7 1 se va afia pe ecran valoarea 2 (n irul dat
exist dou numere prime i anume 3 i 7).
(7p.)
Subiectul III
1.
3.
Fiierele text NR1.TXT i NR2.TXT conin, separate prin cte un spaiu, mai multe numere
ntregi de cel mult 9 cifre fiecare. Fiecare dintre fiiere conine cel mult 100 de valori i
numerele din fiecare fiier sunt ordonate strict cresctor. Se cere s se afieze pe ecran, n
ordine cresctoare, numerele divizibile cu 5 care se gsesc doar n unul din cele dou
fiiere.
Exemplu: dac fiierul NR1.TXT conine numerele 1 2 3 4 7 20 60, iar fiierul
NR2.TXT conine numerele 3 5 7 8 9 10 12 20 24, atunci se vor afia pe ecran
valorile 5 10 60.
a) Descriei un algoritm de rezolvare a acestei probleme, eficient din punct de vedere al
timpului de executare i al spaiului de memorie utilizat, explicnd n ce const eficiena
acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
4.
(6p.)
Scriei un program C/C++ care citete de la tastatur o valoare natural nenul n (n20),
apoi un ir de n numere naturale, avnd fiecare exact 5 cifre. Dintre cele n numere citite,
programul determin pe acelea care au toate cifrele egale i le afieaz pe ecran, n ordine
cresctoare, separate prin cte un spaiu.
Exemplu: pentru n=5 i numerele 11111 33333 12423 59824 11111 33443 se va
afia: 11111 11111 33333.
(10p.)
Subiectul III
1.
Trei biei, Alin, Bogdan i Ciprian, i trei fete, Delia, Elena i Felicia, trebuie s
formeze o echip de 3 copii, care s participe la un concurs. Echipa trebuie s fie mixt
(adic s conin cel puin o fat i cel puin un biat). Ordinea copiilor n echip este
important deoarece aceasta va fi ordinea de intrare a copiilor n concurs (de exemplu
echipa Alin, Bogdan, Delia este diferit de echipa Bogdan, Alin, Delia).
Cte echipe se pot forma, astfel nct din ele s fac parte simultan Alin i Bogdan?
Dai exemplu de o echip corect format din care s nu fac parte nici Alin i nici
Bogdan.
(6p.)
3.
4.
(2p.)
b) Pe prima linie a fiierului text BAC.IN se gsesc, separate prin cte un spaiu, mai multe
numere naturale de cel mult 9 cifre fiecare. Scriei programul C/C++ care citete numerele
din acest fiier, utiliznd apeluri ale subprogramului P elimin toate cifrele impare din fiecare
dintre aceste numere i apoi scrie n fiierul text BAC.OUT numerele astfel obinute,
separate prin cte un spaiu. Dac un numr din fiierul BAC.IN nu conine nicio cifr par
nenul, acesta nu va mai aprea deloc n fiierul de ieire.
(8p.)
Exemplu: dac fiierul BAC.IN conine numerele 25 7 38 1030 45127 0 35 60 15,
atunci BAC.OUT va avea coninutul: 2 8 42 60.
Subiectul III
Utiliznd metoda backtracking se genereaz permutrile cuvntului info. Dac primele trei
soluii generate sunt: fino, fion, fnio care este cea de-a cincea soluie?
(4p.)
b. fnoi
c. foni
d. ifon
a. foin
long f2(long n)
{ if (n==0) return 0;
else return f1(n%10)+f2(n/10);
}
3.
Se citete de la tastatur un numr natural n (n500) i apoi n cifre separate prin spaii. Se
cere s se afieze pe ecran cele n cifre citite, n ordine cresctoare, separate prin cte un
spaiu.
Exemplu: pentru n=19 i cifrele 3 3 0 9 2 1 2 1 3 7 1 5 2 7 1 0 3 2 3 se va
afia pe ecran 0 0 1 1 1 1 2 2 2 2 3 3 3 3 3 5 7 7 9.
a) Descriei pe scurt un algoritm de rezolvare al problemei, eficient din punct de vedere al
spaiului de memorie utilizat i al timpului de executare, explicnd n ce const eficiena
metodei alese.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
4.
(6p.)
Fiierul text BAC.TXT conine mai multe numere naturale, cu cel mult 6 cifre fiecare, cte
un numr pe fiecare linie a fiierului.
11
Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i le
21
afieaz pe ecran, n aceeai ordine, cte cinci pe fiecare linie, separate prin cte
30
un spaiu, cu excepia ultimei linii care poate conine mai puin de cinci numere.
40
Programul va afia apoi pe ecran, pe o linie separat, cte numere din fiier au
51
suma cifrelor par.
16
Exemplu: dac fiierul are coninutul alturat, pe ecran se vor afia numerele
17
de mai jos:
10
11 21 30 40 51
1
16 17 10 1
4
(10p.)
Subiectul III
(4p.)
Pentru funciile f i g definite mai jos, scriei care este rezultatul returnat la apelul g(11).
Dar rezultatul returnat la apelul f(6)?
(6p.)
long g(long x)
{ if (x>9)
long f(int c)
{ if (c<1)
return 1;
else
return g(c+f(c-1));
}
3.
4.
n fiierul text BAC.IN se gsesc, pe o singur linie, separate prin cte un spaiu, mai multe
numere naturale de cel mult 6 cifre fiecare. Se cere s se determine i s se afieze pe
ecran, separate printr-un spaiu, ultimele dou numere impare (nu neaprat distincte) din
fiierul BAC.IN. Dac n fiier se gsete un singur numr impar sau niciun numr impar se
va scrie pe ecran mesajul Numere insuficiente.
Exemplu: dac fiierul BAC.IN conine valorile: 12 15 68 13 17 90 31 42 se va
afia 17 31.
a) Descriei n limbaj natural un algoritm eficient din punct de vedere al spaiului de memorie
i al timpului de executare, pentru rezolvarea acestei probleme, explicnd n ce const
eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)
Subiectul III
1.
Un algoritm genereaz n ordine cresctoare toate numerele de n cifre, folosind doar cifrele
3, 5 i 7. Dac pentru n=5, primele cinci soluii generate sunt 33333, 33335, 33337,
33353, 33355, precizai care sunt ultimele trei soluii generate, n ordinea generrii.(6p.)
3.
Scriei definiia complet a subprogramului multiplu care are 3 parametri: a, prin care
primete un tablou unidimensional cu maximum 100 de numere naturale mai mici dect
1000, n, numrul efectiv de elemente ale tabloului i k, un numr natural (k9).
Subprogramul returneaz numrul de elemente din tablou care sunt multipli ai numrului k
i au ultima cifr egal cu k.
Exemplu: dac n=6, a=(9,273,63,83,93,123), iar k=3, subprogramul va returna
valoarea 4.
(10p.)
4.
n fiierul numere.txt sunt memorate maximum 10000 de numere naturale cu cel mult 9
cifre fiecare. Fiecare linie a fiierului conine cte un numr. Se cere afiarea pe ecran, n
ordine descresctoare, a tuturor cifrelor care apar n numerele din fiier. Alegei un algoritm
de rezolvare eficient din punct de vedere al timpului de executare.
Exemplu: dac fiierul numere.txt conine:
267
39628
79
se va tipri 9987766322.
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.
(6p.)
Subiectul III
1.
Un algoritm genereaz n ordine descresctoare toate numerele de 5 cifre, fiecare dintre ele
avnd cifrele n ordine strict cresctoare. tiind c primele cinci soluii generate sunt 56789,
46789, 45789, 45689, 45679, precizai care sunt ultimele trei soluii generate, n ordinea
generrii.
(6p.)
3.
Scriei definiia complet a subprogramului interval care are doi parametri a i n, prin
care primete un tablou unidimensional cu maximum 100 de numere naturale mai mici
dect 1000 i respectiv numrul efectiv de elemente din tabloul unidimensional.
Subprogramul returneaz numrul de elemente din tabloul unidimensional care aparin
intervalului nchis determinat de primul i respectiv ultimul element al tabloului.
Exemplu: dac tabloul are 6 elemente i este de forma (12,27,6,8,9,2), subprogramul
va returna valoarea 5.
(10p.)
4.
n fiierul numere.txt pe prima linie este memorat un numr natural n (n10000), iar pe
linia urmtoare un ir de n numere naturale distincte dou cte dou, separate prin cte un
spaiu, cu maximum 4 cifre fiecare. Se cere afiarea pe ecran a poziiei pe care s-ar gsi
primul element din irul aflat pe linia a doua a fiierului, n cazul n care irul ar fi ordonat
cresctor. Numerotarea poziiilor elementelor n cadrul irului este de la 1 la n. Alegei un
algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
executare.
Exemplu: dac fiierul numere.txt conine:
6
267 13 45 628 7 79
se va afia 5, deoarece primul element din irul iniial, 267, s-ar gsi pe poziia a cincea n
irul ordonat cresctor (7 13 45 79 267 628).
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.
(6p.)
Subiectul III
1.
Un algoritm genereaz, n ordine lexicografic, toate irurile alctuite din cte n cifre binare
(0 i 1). tiind c pentru n=5, primele patru soluii generate sunt 00000, 00001, 00010,
00011, precizai care sunt ultimele trei soluii generate, n ordinea obinerii lor.
(6p.)
3.
Scriei definiia complet a subprogramului count care are doi parametri, a i n, prin care
primete un tablou unidimensional cu maximum 100 de numere reale i respectiv numrul
efectiv de elemente din tablou. Subprogramul returneaz numrul de elemente din tabloul a
care sunt mai mari sau cel puin egale cu media aritmetic a tuturor elementelor din tablou.
Exemplu: dac tabloul are 6 elemente i este de forma (12, 7.5, 6.5, 3, 8.5, 7.5),
subprogramul va returna valoarea 4 (deoarece media tuturor elementelor este 7.5 i
numerele subliniate sunt cel puin egale cu aceast medie).
(10p.)
4.
(6p.)
Subiectul III
3.
Subprogramul aranjare are doi parametri: a prin care primete un tablou unidimensional
cu maximum 100 de numere reale nenule i n, numrul de elemente din tablou.
Subprogramul rearanjeaz elementele tabloului unidimensional astfel nct toate valorile
negative s se afle pe primele poziii, iar valorile pozitive n continuarea celor negative.
Ordinea n cadrul secvenei de elemente pozitive, respectiv n cadrul secvenei de elemente
negative, poate fi oricare. Tabloul modificat va fi furnizat tot prin intermediul parametrului a.
Exemplu: dac tabloul are 6 elemente i este de forma (12, -7.5, 6.5, -3, -8,
7.5), dup apel, acesta ar putea fi: (-7.5, -3, -8, 12, 6.5, 7.5).
Scriei definiia complet a subprogramului aranjare.
(10p.)
4.
n fiierul nr1.txt este memorat pe prima linie o valoare natural n de cel mult 8 cifre,
iar pe linia urmtoare sunt memorate n numere naturale, cu maximum 4 cifre fiecare,
ordonate strict cresctor i separate prin cte un spaiu. n fiierul nr2.txt este memorat
pe prima linie o valoare natural m de cel mult 8 cifre, iar pe linia urmtoare sunt memorate
m numere naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate prin
cte un spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict
cresctoare, a tuturor numerelor aflate pe a doua linie n cel puin unul dintre cele dou
fiiere. n cazul n care un numr apare n ambele fiiere, el va fi afiat o singur dat.
Alegei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al
timpului de executare.
Exemplu: pentru urmtoarele fiiere:
nr1.txt
nr2.txt
5
6
3 6 8 9 12
2 3 5 7 9 13
se va afia 2 3 5 6 7 8 9 12 13.
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.
(6p.)
Subiectul III
1.
3.
Subprogramul nule are doi parametri: a, prin care primete un tablou unidimensional cu
maximum 100 de numere ntregi, cu cel mult 4 cifre fiecare i n, numrul de elemente din
tablou. Subprogramul rearanjeaz elementele tabloului unidimensional astfel nct toate
valorile nule s se afle la sfritul tabloului. Ordinea n cadrul secvenei de elemente nenule
poate fi oricare. Tabloul modificat este furnizat tot prin parametrul a.
Exemplu: dac n=6, a=(12,0,0,-3,-8,0), dup apel, acesta ar putea fi:
a=(12,-3,-8,0,0,0).
Scriei definiia complet a subprogramului nule.
(10p.)
4.
n fiierul nr1.txt este memorat pe prima linie o valoare natural n de cel mult 8 cifre,
iar pe linia urmtoare sunt memorate n numere naturale, cu maximum 4 cifre fiecare,
ordonate strict cresctor i separate prin cte un spaiu. n fiierul nr2.txt este memorat
pe prima linie o valoare natural m de cel mult 8 cifre, iar pe linia urmtoare sunt memorate
m numere naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate prin
cte un spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict
cresctoare, a tuturor numerelor aflate pe a doua linie att n primul ct i n al doilea fiier.
Alegei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al
timpului de executare.
Exemplu: pentru urmtoarele fiiere:
nr1.txt
nr2.txt
5
6
3 6 8 9 12
2 3 5 7 9 13
se va afia 3 9.
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.
(6p.)
Subiectul III
Urmtoarele probleme se refer la mulimea de numere reale M={x1, x2, , xn} (n>1000).
Care dintre acestea, comparativ cu celelalte, admite un algoritm care se ncheie dup un
numr minim de pai?
(4p.)
elementului
b. generarea
elementelor
cartezian M x M
minim
al
produsului
Scriei definiia complet a unui subprogram i_prim care primete prin singurul su
parametru, n, un numr natural din intervalul [2,30000] i returneaz diferena minim
p2-p1 n care p1 i p2 sunt numere prime i p1np2.
Exemplu: dac n=20 atunci i_prim(n)=4, valoare obinut pentru p1=19 i p2=23.
(10p.)
4.
Fiierul text BAC.TXT conine pe prima linie dou numere naturale n i k separate de un
spaiu (3n10000, 2kn/2), iar pe a doua linie un ir de n numere naturale x1, x2, ...,
xn separate prin cte un spaiu, fiecare numr din acest ir avnd cel mult patru cifre.
a) Scriei un program C/C++ care citete numerele din fiier i determin, utiliznd o
metod eficient din punct de vedere al timpului de executare, cel mai mic indice i (1ink+1) pentru care media aritmetic a numerelor xi, xi+1, ..., xi+k-1 este maxim. Programul
afieaz valoarea lui i pe ecran.
8 3
Exemplu: pentru fiierul alturat se afieaz 2, deoarece media
maxim se obine pentru 9, 4, 7.
(6p.) 2 9 4 7 5 2 9 9
b) Explicai succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia.
(4p.)
Subiectul III
b. xkxk-1
d. xkxk-1 i xkxk+1
4.
Scriei programul C/C++ care citete din fiierul text BAC.TXT numrul ntreg n
(1n10000) i un ir de n perechi de numere ntregi a b (1ab32000), fiecare pereche
fiind scris pe o linie nou a fiierului, cu un spaiu ntre cele dou numere. Programul
afieaz pe ecran pentru fiecare pereche a,b cel mai mare numr natural din intervalul
nchis [a,b]care este o putere a lui 2 sau numrul 0 dac nu exist nicio putere a lui 2 n
intervalul respectiv. Numerele afiate pe ecran se scriu n linie, separate prin cte un
spaiu. Un numr p este putere a lui 2 dac exist un numr natural k astfel nct p=2k.
Exemplu: dac fiierul BAC.TXT conine numerele
3
2 69
10 20
19 25
se va afia: 64 16 0.
(10p.)
Subiectul III
Algoritmul de generare a tuturor numerelor de 5 cifre nenule, fiecare avnd cifrele ordonate
strict cresctor, este echivalent cu algoritmul de generare a:
(6p.)
4.
Fiierul text BAC.TXT conine pe prima linie un numr natural nenul n (1n1000), iar pe
fiecare dintre urmtoarele n linii, cte dou numere ntregi a i b (1ab32000), fiecare
pereche reprezentnd un interval nchis de forma [a,b]. Scriei un program C/C++ care
determin intervalele care au proprietatea c intersecia cu oricare dintre celelalte n-1
intervale este vid i afieaz pe cte o linie a ecranului, separate printr-un spaiu,
numerele care reprezint capetele intervalelor determinate.
(10p.)
4
Exemplu: dac fiierul BAC.TXT are coninutulalturat, pe ecran se va afia:
17 20
2 6
sau
17 20
2 6
17 20
2 6
10 15
8 16
Subiectul III
a. BCA
b. CAB
c. BC
d. BEA
3.
(3p.)
(3p.)
int f(int n)
{if (n<=9) return 0;
if (n%4==0) return 0;
return 1+f(n-3);
}
4.
Fiierul text bac.txt conine pe prima linie numrul natural n, 1n30000, pe urmtoarele
n linii un ir de n numere ntregi, ordonate cresctor, iar pe ultima linie dou numere ntregi
a i b (ab) separate de un spaiu. Fiecare dintre cele n numere, precum i valorile a i b,
au cel mult patru cifre.
a) Scriei un program C/C++, eficient din punct de vedere al timpului de executare, care
afieaz pe ecran cel mai mic numr ntreg din intervalul nchis [a,b] care se gsete n
irul dat. Dac nu exist un astfel de numr, programul afieaz textul NU.
4
Exemplu: dac fiierul bac.txt are coninutul alturat, programul afieaz
-2
valoarea 11
(6p.)
7
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena
11
ei.
(4p.)
35
8 15
Subiectul III
Un program citete o valoare natural nenul impar pentru n i apoi genereaz i afieaz
n ordine cresctoare lexicografic toate combinaiile formate din n cifre care ndeplinesc
urmtoarele proprieti:
- ncep i se termin cu 0;
- modulul diferenei ntre oricare dou cifre alturate dintr-o combinaie este 1.
Astfel, pentru n=5, combinaiile afiate sunt, n ordine, urmtoarele: 01010, 01210. Dac
se ruleaz acest program i se citete pentru n valoarea 7, imediat dup combinaia
0101210 va fi afiat combinaia:
(4p.)
a. 0121210
b. 0123210
c. 0111210
d. 0121010
4.
Fiierul text NUMAR.TXT conine pe prima linie un numr real pozitiv x care are cel mult
dou cifre la partea ntreag i cel mult apte cifre dup punctul zecimal..
a) Scriei un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
timpului de executare i al memoriei utilizate, afieaz pe ecran, separate printr-un spaiu,
dou numere naturale al cror raport este egal cu x i a cror diferen absolut este
minim.
Exemplu: dac fiierul conine valoarea alturat, se vor afia pe ecran 0.375
numerele 3 8.
(6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.
(4p.)
Subiectul III
(10p.)
Subiectul III
(10p.)
4. Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (2n100) i pe
urmtoarea linie n numere reale pozitive, n ordine strict cresctoare, separate prin cte un
spaiu.
a) Scriei un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
memoriei utilizate, determin i afieaz pe ecran cel mai mare numr natural x cu
proprietatea c n orice interval deschis avnd drept capete oricare dou dintre cele n numere
aflate pe linia a doua n fiierul NUMERE.IN se gsesc cel puin x numere ntregi.
Exemplu: dac fiierul NUMERE.IN are coninutul:
6
3.5 5.1 9.2 16 20.33 100
atunci se afieaz 2
Explicaie: n oricare dintre intervalele (3.5,5.1), (3.5,9.2), (3.5,16), (3.5,20.33),
(3.5,100), (5.1,9.2), (5.1,16), (5.1,20.33), (5.1,100), (9.2,16), (9.2,20.33),
(9.2,100), (16,20.33), (16,100), (20,33,100) exist cel puin dou numere ntregi.
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.
(4p.)
Subiectul III
Generarea tuturor cuvintelor de trei litere mici, nu neaprat distincte, ale alfabetului englez,
se poate realiza cu ajutorul unui algoritm echivalent cu cel de generare a:
(4p.)
b. combinrilor
a. produsului cartezian
c. aranjamentelor
d. permutrilor
3. Scriei un program C/C++ care citete de la tastatur un numr natural n din intervalul
[2,50] i apoi n numere reale i afieaz pe ecran cte dintre cele n numere reale sunt
egale cu media aritmetic a celorlalte n-1 numere reale.
(6p.)
4. a) Scriei definiia complet a unui subprogram primul, care
- primete prin singurul su parametru, a, o valoare natural din intervalul [2,10000]
- returneaz o valoare natural reprezentnd cel mai mic divizor al numrului a mai mare strict
dect 1.
(6p.)
b) Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n(1n100) i pe
urmtoarea linie n numere naturale din intervalul [2,10000] separate prin cte un spaiu.
Un numr natural n se numete aproape prim dac este egal cu produsul a dou numere
prime distincte. De exemplu, numrul 14 este aproape prim pentru c este egal cu produsul
numerelor prime 2 i 7.
Scriei un program C/C++ care determin, folosind apeluri utile ale suprogramului primul,
cel mai mare numr aproape prim de pe linia a doua a fiierului NUMERE.IN. n cazul n
care exist un astfel de numr se afieaz pe ecran mesajul DA, urmat de numrul
determinat, iar n caz contrar mesajul NU.
Exemplu: dac fiierul NUMERE.IN are coninutul:
6
100 14 21 8 77 35
atunci se afieaz pe ecran DA 77 pentru c numrul 77 este cel cel mai mare dintre numerele
aproape prime din fiier (14=7*2,21=7*3,77=7*11, 35=7*5).
(10p.)
Subiectul III
3.
4.
(10p.)
(4p.)
Subiectul III
3. Scriei definiia complet a subprogramului suma, care primete prin cei 4 parametri,
v,n,i,j:
- v, un tablou unidimensional cu maximum 100 de elemente ntregi din intervalul
[-1000,1000], numerotate de la 1 la n;
- n, un numr natural reprezentnd numrul de elemente din tabloul v;
- i i j, dou valori naturale cu 1ij100
(10p.)
i returneaz suma elementelor v1,vi-1, vj+1,,,vn din tabloul v.
4. Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (1n100) i pe
urmtoarea linie n numere reale pozitive ordonate cresctor, separate prin cte un spaiu.
a) Scriei un program C/C++ care citete din fiierul NUMERE.IN numrul natural n, i
determin, utiliznd un algoritm eficient din punct de vedere al timpului de executare i al
memoriei utilizate, numrul minim de intervale nchise de forma [x,x+1], cu x numr
natural, a cror reuniune include toate numerele reale din fiier.
Exemplu: Dac fiierul NUMERE.IN are coninutul:
6
2.3 2.3 2.8 5.7 5.7 6.3
atunci se afieaz 3 (intervalele [2,3], [5,6], [6,7] sunt cele 3 intervale de forma
cerut care conin numere din ir).
(6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.
(4p.)
Subiectul III
4.
n fiierul numere.txt se afl memorate, pe prima linie un numr natural n (1n100), iar
pe fiecare dintre urmtoarele n linii, cte dou numere ntregi x,y (-100xy100),
reprezentnd capetele cte unui segment [x,y] desenat pe axa Ox de coordonate.
a) Scriei n limbajul C/C++ un program eficient din punct de vedere al timpului de executare
i al spaiului de memorare, care citete din fiier datele existente, determin segmentul
rezultat n urma interseciei tuturor celor n segmente date i afieaz pe ecran dou numere
desprie printr-un spaiu ce reprezint capetele segmentului cerut. Dac segmentele nu au
nici un punct comun se va afia pe ecran valoarea 0.
(6p.)
b) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
5
Exemplu: dac fiierul numere.txt are coninutul alturat, se va afia -7 10
pe ecran
3 20
3 5
-5 5
0 12
-8 30
(4p.)
Subiectul III
4.
n fiierul numere.txt sunt memorate pe mai multe linii, numere ntregi (cel mult 100),
numerele de pe aceeai linie fiind desprite prin cte un spaiu, fiecare numr avnd cel
mult 9 cifre. S se determine cele mai mici dou valori avnd exact dou cifre fiecare,
memorate n fiier i s se afieze pe ecran aceste valori, desprite printr-un spaiu. Dac
n fiier nu se afl dou astfel de valori, pe ecran se va afia valoarea 0.
a) Descriei n limbaj natural o metod de rezolvare eficient din punct de vedere al
gestionrii memoriei i al timpului de executare.
(4p.)
b) Scriei programul C/C++ corespunztor metodei descrise la punctul a.
(6p.)
Exemplu: dac fiierul numere.txt are coninutul alturat, se 5 10
3 -77 20
va afia pe ecran, nu neaprat n aceast ordine:
50 5 0 12 18 30
-77 10
Subiectul III
Subprogramul sum3 primete prin parametrul x un tablou unidimensional, cu cel mult 100
de elemente, numere ntregi cu cel mult 4 cifre fiecare, iar prin parametrul n un numr
natural ce reprezint numrul efectiv de elemente ale tabloului x (n100). Scriei definiia
complet a subprogramului sum3 care returneaz suma elementelor tabloului care sunt
divizibile cu 3. Dac tabloul nu conine nicio valoare divizibil cu 3, subprogramul va returna
0.
(6p.)
4.
(4p.)
Subiectul III
Completarea unui bilet de LOTO presupune colorarea a 6 numere dintre cele 49, nscrise
pe bilet. O situaie statistic pe o anumit perioad de timp arat c cele mai frecvente
numere care au fost extrase la LOTO sunt: 2, 20, 18, 38, 36, 42, 46, 48. Cte
bilete de 6 numere se pot completa folosind doar aceste valori, tiind c numrul 42 va fi
colorat pe fiecare bilet?
(4p.)
b. 6!
c. 42
d. 56
a. 21
(4p.)
Subiectul III
Fiierul text numere.in conine pe prima linie un numr natural n (0<n<1000), iar pe a
doua linie n numere naturale cu cel mult 9 cifre fiecare, desprite prin cte un spaiu.
Scriei un program C/C++ care citete toate numerele din fiier i afieaz pe ecran,
separate prin cte un spaiu, numerele de pe a doua linie a fiierului, care ncep i se
termin cu aceeai cifr.
(10p.)
9
Exemplu:
dac fiierul numere.in are 55 107 3 101 92 7 208 2782
coninutul alturat, se numerele ce se vor afia 80
sunt: 55 3 101 7 2782
4.
a) Scriei definiia complet a unui subprogram sum care primete prin parametrul x un
numr natural de cel mult 4 cifre i returneaz suma divizorilor numrului x, diferii de 1 i
de el nsui.
Exemplu: dac x=10 se va returna valoarea 7 (7=2+5).
(4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural n (0<n<100), apoi
n numere naturale (cu cel mult 4 cifre fiecare). Programul determin, folosind apeluri utile
ale subprogramului sum, pentru fiecare numr natural citit, suma divizorilor si proprii i
afieaz pe ecran sumele determinate, n ordinea cresctoare a valorilor lor, separate prin
cte un spaiu.
(6p.)
Exemplu: dac n=5 i numerele citite sunt 10 2 33 6 11
valorile afiate pe ecran vor fi: 0 0 5 7 14
deoarece suma divizorilor lui 10 este 7, suma divizorilor lui 2 este 0, suma divizorilor
lui 33 este 14, suma divizorilor lui 6 este 5, suma divizorilor lui 11 este 0.
Subiectul III
Subprogramul scif returneaz suma cifrelor unui numr natural transmis ca parametru.
Care este valoarea expresiei scif(scif(518)+scif(518))?
(4p.)
14
10
28
1
b.
c.
d.
a.
3.
Subprogramul cifra primete prin intermediul parametrului a un numr natural cu cel mult
4 cifre i returneaz ultima cifr par a sa. Dac numrul nu conine cifre pare,
subprogramul returneaz valoarea -1. De exemplu, dac a=8345, subprogramul va
returna 4.
a) S se scrie definiia complet a subprogramului cifra.
(10p.)
b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n15000), iar pe
a doua linie a fiierului se afl un ir de n numere naturale, desprite prin cte un spaiu,
fiecare numr fiind format din cel mult 4 cifre.
Scriei un program C/C++ care citete numerele din fiier i afieaz pe ecran, folosind
apeluri utile ale subprogramului cifra, cel mai mare numr care se poate forma cu
ultimele cifre pare ale fiecrui element, dac acestea exist. Alegei o metod de rezolvare
eficient ca timp de executare. Dac toate numerele de pe a doua linie a fiierului au
numai cifre impare, programul va afia mesajul NU EXISTA.
Exemplu: dac fiierul bac.in are coninutul 7
alturat, pe ecran se va afia: 64220
(6p.) 369 113 2 0 33 1354
42
Subiectul III
3.
4.
k=3
a) Scriei doar antetul subprogramului nrdiv, care primete prin intermediul parametrului x
un numr natural nenul cu cel mult 4 cifre, i returneaz numrul de divizori primi ai lui x.
(4p.)
b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n1000), iar pe a
doua linie a fiierului se afl un ir format din n numere naturale nenule, desprite prin
cte un spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++
care citete numerele din fiier i care afieaz pe ecran, folosind apeluri utile ale
subprogramului nrdiv, prima i ultima valoare din irul celor n numere citite, care au un
numr par de divizori primi. Numerele afiate vor fi separate printr-un spaiu.
Exemplu: dac fiierul bac.in are coninutul alturat, pe 7
ecran se va afia: 20 10
(6p.) 30 105 20 140 7 10 5
Subiectul III
3.
Scriei n limbajul C/C++ definiia complet a subprogramul Del care are doi parametri: x,
un numr ntreg de cel mult 9 cifre, i y, un numr natural nenul de o cifr. Subprogramul
determin eliminarea tuturor cifrelor lui x mai mari strict dect y i furnizeaz numrul
obinut tot prin intermediul parametrului x. Dac toate cifrele lui x sunt mai mari strict dect
y, atunci x va primi valoarea -1.
Exemplu: dac x=37659 i y=6, dup apel x=365, iar y=6.
4.
(10p.)
Se consider subprogramul inter, cu doi parametri: x i y (numere ntregi formate din cel
mult patru cifre fiecare); subprogramul interschimb valorile a dou variabile transmise prin
intermediul parametrilor x i y.
a) Scriei n limbajul C/C++ definiia complet a subprogramului inter.
(4p.)
b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n1000, iar pe a doua
linie a fiierului se afl un ir de n numere naturale nenule, desprite prin cte un spaiu,
fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care afieaz pe
ecran, n ordine cresctoare, numerele aflate pe a doua linie a fiierului. Numerele vor fi
afiate pe o singur linie, iar ntre dou numere se va lsa un spaiu. Se vor folosi apeluri
utile ale subprogramului inter.
(6p.)
Subiectul III
3.
Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n1000), iar pe a
doua linie a fiierului se afl un ir format din n numere naturale, desprite prin cte un
spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care
citete valorile din fiier i care afieaz pe ecran mesajul DA dac toate elementele pare
din ir sunt n ordine cresctoare i mesajul NU n caz contrar.
Exemplu: dac fiierul bac.in are coninutul
alturat, pe ecran se va afia: DA
(10p.)
4.
7
10 113 12 33 42 1354 421
(4p.)
b) Considerm un numr natural nenul n>99 cu cel mult 9 cifre. Din n se obine un ir de
valori prin eliminarea succesiv a ultimei cifre, apoi a ultimelor dou cifre, apoi a ultimelor
trei cifre etc., pn ce se obine un numr de dou cifre, ca n exemplu. S se realizeze un
program C/C++ care citete de la tastatur numrul n i care, folosind apeluri utile ale
subprogramul pr, afieaz pe ecran, separate prin cte un spaiu, doar valorile prime din
irul numerelor obinute din n, prin procedeul descris mai sus.
Exemplu: pentru n=193124 se obine irul de valori 19312,1931, 193, 19. din care se
vor afia pe ecran doar valorile 1931 193 19 (nu neaprat n aceast ordine).
(6p.)
Subiectul III
3.
a) Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n1000), iar pe a
doua linie a fiierului se afl un ir format din n numere naturale, desprite prin cte un
spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care
citete numerele din fiier i care afieaz pe ecran mesajul DA dac elementele pare n ir
sunt n ordine cresctoare, iar cele impare sunt n ordine descresctoare i mesajul NU n
caz contrar. Alegei un algoritm eficient ca timp de executare i spaiu de memorie utilizat.
(6p.)
b) Descriei succint, n limbaj natural, metoda utilizat, justificnd eficiena acesteia.
(4p.)
Subiectul III
Cea mai mare dintre valorile strict negative memorate ntr-un tablou unidimensional NU
exist dac:
(4p.)
n tablou sunt memorate numai valori strict negative
n tablou exist cel puin o valoare negativ
n tablou sunt memorate valori nenule pozitive i negative
n tablou sunt memorate numai valori strict pozitive
Scriei un subprogram DIST, cu doi parametri, care primete prin intermediul parametrului a
un tablou unidimensional cu cel mult 100 de elemente, numere naturale de cel mult 4 cifre
fiecare, i prin intermediul parametrului n un numr natural nenul, n<100, ce reprezint
numrul de elemente din tablou. Subprogramul returneaz valoarea 1 dac toate
elementele tabloului a sunt distincte i dac diferena absolut a oricror dou elemente
vecine din tablou este diferit de 1, altfel returnnd valoarea 0.
(10p.)
4.
Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000), iar pe a
doua linie un ir format din n cifre, separate prin cte un spaiu.
a) Scriei un program C/C++ care determin n mod eficient din punct de vedere al
timpului de executare, cea mai mare cifr dintre cele situate pe a doua linie a fiierului,
precum i numrul de apariii ale acesteia. Cele dou numere vor fi afiate pe o singur
linie a ecranului, separate printr-un spaiu.
Exemplu: daca fiierul numere.txt are urmtorul coninut:
7
3 5 2 1 5 3 1
atunci pe ecran se va afia: 5 2.
(6p.)
Subiectul III
Scriei definiia complet a unui subprogram P, cu trei parametri, care primete prin
intermediul primului parametru, a, un tablou unidimensional de cel mult 100 de numere
ntregi, cu cel mult 4 cifre fiecare, prin intermediul celui de-al doilea parametru, n, numrul
efectiv de elemente ale tabloului, iar prin parametrul k, un numr natural (k<101) i
returneaz cea mai mare sum cu k termeni care se poate obine adunnd k elemente ale
tabloului.
Exemplu: dac n=6 i k=4, iar irul este format din elementele (5, 2, 5, 4, 1, 3),
atunci la apel se va returna 17.
(10p.)
4.
Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe
doua linie, separate prin cte un spaiu, n numere naturale formate din cel mult dou cifre
fiecare.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, numerele ce apar o singur dat n a doua linie a fiierului. Aceste numere
vor fi afiate pe ecran n ordine cresctoare, separate prin cte un spaiu.
Exemplu: dac fiierul numere.txt are urmtorul coninut:
7
3 5 2 1 5 23 1
atunci pe ecran se va afia: 2 3 23.
(6p.)
Subiectul III
Utiliznd metoda backtracking se genereaz numerele formate din cte 3 cifre distincte din
mulimea {1,3,5,7}. Dac primele trei numere generate sunt, n acest ordine: 135,
137, 153 care este cel de-al patrulea numr generat?
(4p.)
b. 173
c. 157
d. 357
a. 315
Scriei definiia complet a unui subprogram P cu doi parametri, care primete prin
intermediul primului parametru, n, un numr natural nenul (1n100) i prin intermediul
celui de-al doilea parametru, a, un tablou unidimensional cu elementele numerotate de la 1
la n, numere ntregi de cel mult 4 cifre fiecare. Subprogramul returneaz suma tuturor
numerelor impare aflate pe poziii pare din tablou.
Exemplu: dac n=6, iar irul a este format din elementele (3,12,7,1,4,3), atunci la apel se
va returna 4.
(10p.)
4.
Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe a
a doua linie n cifre, separate prin cte un spaiu.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, cel mai mare numr ce se poate forma cu toate cifrele coninute de a doua
linie a fiierului numere.txt. Numrul determinat se va afia pe ecran.
Exemplu: daca fiierul numere.txt are urmtorul coninut:
7
2 5 3 1 5 8 9
atunci pe ecran se va afia: 9855321.
(6p.)
Subiectul III
Care dintre urmtoarele variante reprezint antetul corect al unui subprogram care primete
prin parametrii x i y dou numere ntregi i furnizeaz prin parametrul m cea mai mic
dintre cele dou valori x i y?
(4p.)
a. int minim(int x,int y,int m)
b. void minim(int x,int y,int &m)
c. int minim(int x,int y)
d. void minim(int& x,int& y,int m)
4.
(6p.)
Subiectul III
Utiliznd metoda backtracking se genereaz toate cuvintele de cte 3 litere din mulimea
{a,b,c}. Dac primele patru cuvinte generate sunt, n acest ordine: aaa, aab, aac,
aba, care este cel de-al optulea cuvnt generat?
(4p.)
b. acc
c. aca
d. bca
a. acb
4.
Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000), iar pe a
doua linie n numere naturale, formate din cel mult dou cifre, separate prin cte un spaiu.
a) Scriei un program C/C++, eficient att din punct de vedere al timpului de executare, care
afieaz pe ecran toate numerele situate pe a doua linie a fiierului, n ordinea cresctoare
a valorilor lor, separate prin cte un spaiu.
Exemplu: dac fiierul numere.txt are urmtorul coninut:
7
12 21 22 11 9 12 3
atunci pe ecran se va afia: 3 9 11 12 12 21 22
(6p.)
Subiectul III
a.
3.
Fiierul bac.txt conine pe prima linie un numr natural n (n100), iar pe a doua linie,
separate prin cte un spaiu, n numere naturale nenule, cu cel mult 4 cifre fiecare. Scriei
programul C/C++ care citete de la tastatur un numr natural k (k25), construiete n
memorie i afieaz pe ecran un tablou unidimensional ce conine, n ordinea n care au
fost citite, numerele de pe a doua linie a fiierului bac.txt care au cel puin k divizori.
Exemplu: pentru k=5 i fiierul bac.txt cu coninutul 6
100 9 400 56 7 10
alturat, tabloul care se afieaz este:
100 400 56
(10p.)
4.
a) Scriei n limbajul C/C++ doar antetul subprogramului cifre, care prin intermediul
parametrului nr primete un numr natural de cel mult 9 cifre i furnizeaz prin intermediul
parametrilor nc i sc numrul de cifre i respectiv suma cifrelor din scrierea lui nr.
(4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural n (10n109) i
verific, folosind apeluri utile ale subprogramului cifre, dac n scrierea n baza 10 a lui n
se gsete cel puin o cifr care s fie media aritmetic a celorlalte cifre din componena lui
n.Programul afieaz pe ecran mesajul DA n caz afirmativ i mesajul NU n caz contrar.
Exemplu: pentru n=27989 programul va afia mesajul DA, deoarece n scrierea lui n apare
cifra 7 care este media aritmetic a celorlalte cifre din scrierea lui n: 7=(2+9+8+9)/4.
Pentru n=7351 se va afia mesajul NU.
(6p.)
Subiectul III
1.
Fiierul text bac.txt conine pe prima linie un numr natural n (n<100), iar pe a doua
linie, separate prin cte un spaiu, n numere naturale de cel mult 8 cifre fiecare.
Scriei un program C/C++ care citete de la tastatur un numr natural k (k<50) precum
i numerele din fiierul bac.txt i afieaz pe ecran, cu cte un spaiu ntre ele, toate
numerele de pe a doua linie a fiierului care sunt puteri ale lui k. Un numr natural x este
y
putere a lui k dac exist un numr natural y astfel nct x=k . Dac nu exist un
asemenea numr pe a doua linie a fiierului, se afieaz pe ecran mesajul NU.
Exemplu: dac se citete de la tastatur k=2, iar 8
fiierul are coninutul alturat, atunci pe ecran se 32 56 317 809 256 2 1 60
afieaz numerele:
32 256 2 1
(10p.)
4.
a) Scriei n limbajul C/C++ doar antetul unui subprogram cif, care primete prin
intermediul primului parametru, nr, un numr natural cu cel mult 9 cifre i furnizeaz prin
intermediul celui de-al doilea parametru, s, suma cifrelor din scrierea lui nr.
(4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural n (0<n<25), apoi
un ir de n numere naturale nenule cu cel mult 9 cifre fiecare i care afieaz pe ecran,
separate prin cte un spaiu, numerele din ir care au suma cifrelor maxim, folosind
apeluri utile ale subprogramului cif.
Exemplu: dac pentru n=8 se citete irul de numere 274 56018 354 8219 293 287
932 634 atunci, pe ecran, se afieaz numerele 56018 8219.
(6p.)
Subiectul III
1.
Se genereaz prin metoda backtracking mulimile distincte ale cror elemente sunt numere
naturale nenule i care au proprietatea c suma elementelor fiecrei mulimi este egal cu
7. Astfel, sunt generate, n aceast ordine, mulimile: {1,2,4}, {1,6}, {2,5}, {3,4},
{7}. Folosind aceeai metod pentru a genera mulimile distincte ale cror elemente sunt
numere naturale nenule i care au proprietatea c suma elementelor fiecrei mulimi este
egal cu 9, stabilii n ce ordine sunt generate urmtoarele mulimi: M1={2,3,4};
M2={3,6}; M3={2,7}; M4={4,5}.
(6p.)
3.
Se consider subprogramul cmdiv care primete prin parametrii x i y dou valori ntregi
pozitive (0<x<100 i 0<y<100) i returneaz cel mai mare divizor comun al lor.
a) Scriei definiia complet a subprogramului cmdiv.
(4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n (1n100) i
determin, utiliznd apeluri ale subprogramului cmdiv, numrul fraciilor ireductibile de
x
cu x numr natural (1xn). Numrul obinut va fi afiat pe ecran.
n
1 2 3 4 5 6
Exemplu: pentru n=6 se afieaz 2, deoarece, dintre fraciile , , , , , doar dou
6 6 6 6 6 6
1 5
sunt ireductibile : i .
(6p.)
6 6
forma
4.
Fiierul text bac.in conine pe prima linie un numr natural n (0<n<5000), iar pe a doua
linie, separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare.
Scriei un program C/C++ care determin i scrie n fiierul bac.out toate numerele de pe
a doua linie a fiierului care apar o singur dat pe aceast linie. Numerele determinate se
vor afia n ordinea cresctoare a valorilor lor, separate prin cte un spaiu.
Exemplu: dac pe prima linie a fiierului bac.in se afl 10, iar pe linia a doua se gsesc
numerele 2 4548 568 4548 57 89 5974 2 89 32 atunci valorile cutate sunt 32 57
568 5974.
(10p.)
Subiectul III
Se genereaz n ordine strict cresctoare numerele de cte ase cifre care conin: cifra 1 o
singur dat, cifra 2 de dou ori i cifra 3 de trei ori. Se obin, n aceast ordine, numerele:
122333, 123233, 123323, , 333221. Cte numere generate prin aceast metod au
prima cifr 1 i ultima cifr 2?
(4p.)
b. 3
c. 4
d. 8
a. 1
Se consider subprogramul cmax care prin parametrul a primete un numr natural nenul
mai mic dect 30000, iar prin parametrul b furnizeaz cifra maxim din numrul a.
a) Scriei, folosind limbajul C/C++, doar antetul subprogramului cmax.
(4p.)
b) Fiierul bac.txt conine cel mult 1000 numere naturale nenule, mai mici dect 30000
fiecare, separate prin cte un spaiu. Scriei programul C/C++ care citete din fiierul
bac.txt toate numerele i care determin cea mai mare cifr din scrierea lor i cel mai mic
dintre numerele care conin aceast cifr, folosind apeluri utile ale subprogramului cmax.
Cifra i numrul determinate se vor afia pe ecran, separate printr-un spaiu.
Exemplu: dac fiierul bac.txt conine valorile: 23 12 64 12 72 345 67 23 71 634
atunci pe ecran se afieaz 7 67.
(6p.)
Subiectul III
1.
Se genereaz n ordine strict cresctoare toate numerele de cte ase cifre care conin:
cifra 1 o singur dat, cifra 2 de dou ori i cifra 3 de trei ori. Se obin, n aceast ordine,
numerele: 122333, 123233, 123323, , 333221. Ce numr se afl imediat naintea i ce
numr se afl imediat dup numrul 332312 n irul numerelor generate?
(6p.)
3.
Se consider subprogramul divxy care primete prin parametrii x i y dou valori ntregi
pozitive (0<x<1000 i 0<y<1000) i returneaz valoarea 1 dac y este divizor al lui x sau x
este divizor al lui y i returneaz valoarea 0 n caz contrar.
a) Scriei definiia complet a subprogramului divxy.
(4p.)
b) Scriei un program C/C++ care citete de la tastatur trei numere naturale nenule a, b i
n, cu cel mult 3 cifre fiecare i care afieaz pe ecran toi divizorii lui n din intervalul nchis
determinat de a i b folosind apeluri utile ale subprogramului divxy. Intervalul nchis
determinat de a i b este [a,b] dac a<b sau [b,a] dac ba. Numerele afiate sunt
separate prin cte un spaiu. Dac nu exist niciun astfel de numr se afieaz mesajul NU
EXISTA.
Exemplu: pentru a=85, b=10 i n=40 se afieaz: 10 20 40 (nu neaprat n aceast
ordine).
(6p.)
4.
Fiierul bac.in conine pe prima linie un numr natural n (0<n<5000), iar pe a doua linie,
separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare.
Scriei un program C/C++ care determin i scrie n fiierul bac.out, toate numerele, citite de
pe a doua linie a fiierului bac.in, care apar de cel puin dou ori. Numerele determinate se
vor scrie n ordine cresctoare, pe aceeai linie, separate prin cte un spaiu.
Exemplu: dac fiierul bac.in conine pe prima linie numrul 11, iar pe linia a doua
valorile 23 12 54 12 78 345 67 23 78 934 23
atunci fiierul bac.out va conine: 12 23 78
(10p.)
Subiectul III
Care este antetul corect al subprogramului cifre, care primete prin intermediul primului
parametru, x, un numr natural i furnizeaz prin intermediul celui de-al doilea parametru,
y, suma cifrelor numrului natural x?
(4p.)
b. int cifre(int x)
a. void cifre(int x, int &y)
d. void cifre(int &x, int y)
c. void cifre(int x, int y)
Se consider numrul x=21034085. Permutnd cifrele lui x se obin alte numere naturale.
a) Dai exemplu de un astfel de numr care s fie divizibil cu 25.
b) Cte dintre numerele obinute au exact 7 cifre?
(6p.)
3.
(4p.)
Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a
doua linie n numere naturale nenule, separate prin cte un spaiu, fiecare numr avnd
maximum 4 cifre. Scriei un program C/C++ care citete toate numerele din fiierul text
date.in, construiete n memorie un tablou unidimensional a, cu cele n elemente din fiier
i afieaz pe ecran perechile (ai, aj) , 1i<jn, cu proprietatea c elementele fiecreia
dintre aceste perechi au aceeai paritate. Fiecare pereche se va afia pe cte o linie a
ecranului, elementele perechii fiind separate prin cte un spaiu. n cazul n care nu exist
nicio pereche, se va afia valoarea 0.
5
Exemplu: dac fiierul date.in are coninutul alturat,
16 22 3 6 1
se vor afia:
16 22
16 6
22 6
3 1
(10p.)
Subiectul III
(6p.)
b) Fiierul text date.in conine cel mult 400 de numere naturale avnd maximum 8 cifre
fiecare. Scriei un program C/C++ care, folosind apeluri utile ale subprogramului mult,
afieaz pe ecran valoarea maxim k, astfel nct primele k numere succesive din fiier s
poat forma o mulime.
Exemplu: dac fiierul date.in conine
16 17 8 31 8 2 10
4.
atunci se va afia 4 (deoarece primele patru numere din fiier pot forma o mulime i
acesta este cardinalul maxim posibil n condiiile impuse de enunul problemei)
(4p.)
Scriei un program C/C++ care citete de la tastatur dou numere naturale nenule n i k
(k<n10000) i afieaz pe ecran un ir format din k numere naturale consecutive care au
suma n. Numerele se vor afia pe ecran, n ordine cresctoare, desprite ntre ele prin
cte un spaiu. n cazul n care nu exist un astfel de ir, se va afia mesajul Nu exist.
(10p.)
Subiectul III
4.
Fiierul text bac.txt are dou linii: pe prima linie conine un numr natural nenul n
(n<=100), iar pe linia a doua un ir format din n numere naturale de cel mult 4 cifre fiecare,
desprite prin spaii. Scriei un program C/C++ care adaug n fiier toate permutrile
circulare distincte ale irului de pe linia a doua a fiierului. Astfel, se vor aduga la sfritul
fiierului nc n-1 linii, fiecare linie coninnd permutarea circular cu o poziie ctre
stnga, a elementelor irului aflat pe linia precedent din fiier. Elementele fiecrei
permutari vor fi separate prin cte un spaiu.
Exemplu: dac fiierul bac.txt conine liniile:
4
4
10 20 30 49
10 20 30 49
20 30 49 10
atunci, dup rularea programului, fiierul va avea coninutul 30 49 10 20
reprezentat alturat.
(10p.) 49 10 20 30
Subiectul III
(4p.)
4.
Exemplu: dac n=16, atunci se afieaz valoarea 11, dac n=126, atunci se afieaz
121, iar dac a=33, atunci se afieaz 33.
(6p.)
Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a
doua linie un ir de n numere naturale nenule distincte, separate prin cte un spaiu,
fiecare numr avnd maximum 8 cifre.
a) Scriei un program C/C++ care citete numerele din fiier i determin cte dintre
comopnentele irului citit pot fi scrise ca sum a altor dou numere din acelai ir.
Rezultatul obinut se va afia pe ecran. n cazul n care nu exist niciun astfel de element,
se va afia valoarea 0.
Exemplu: dac fiierul date.in conine
6
1 10 25 2 15 3
atunci se va afia valoarea 2 (deoarece 25=10+15, 3=1+2).
(8p.)
(2p.)
Subiectul III
Utiliznd metoda backtracking se genereaz toate matricele ptratice de ordinul 4 ale cror
elemente aparin mulimii {0,1}, cu proprietatea c pe fiecare linie i pe fiecare coloan
exist o singur valoare 1. Primele 4 soluii generate sunt, n aceast ordine:
1 0 0 0
1 0 0 0
0 1 0 0
0 1 0 0
0 0 0 1
0 0 1 0
0 0 1 0
0 0 0 1
Care este a opta soluie?
a. 0 1 0 0
b. 0 1 0 0
1 0 0 0
1 0 0 0
0 0 0 1
0 0 1 0
0 0 1 0
0 0 0 1
1
0
0
0
0
0
1
0
0
1
0
0
0
0
0
1
c. 0
0
1
0
1
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
1
0
0
0
0
1
0
(4p.)
0
0
0
1
d. 0
1
0
0
0
0
1
0
1
0
0
0
0
0
0
1
(4p.)
b) Se consider fiierul text date.in ce conine pe prima linie un numr natural nenul n
(n100), iar pe a doua linie n numere naturale, separate prin cte un spaiu, fiecare numr
avnd maximum 8 cifre nenule. Scriei un program C/C++ care citete toate numerele din
fiierul text date.in i afieaz pe ecran, desprite prin cte un spaiu, numerele situate
pe a doua linie a fiierului, formate numai din cifre distincte ordonate strict cresctor,
folosind apeluri utile ale subprogramului cifre. n cazul n care nu exist niciun astfel de
numr se va afia valoarea 0.
Exemplu: dac fiierul date.in are coninutul 6
alturat, atunci se vor afia numerele: 16 269 (6p.) 16 175 333 242477 321 269
4.
Scriei un program C/C++ care citete de la tastatur un numr natural nenul n (n100)
i 2*n numere naturale de maximum 3 cifre; primele n reprezint elementele tabloului
unidimensional a, iar urmtoarele n elementele tabloului unidimensional b; fiecare tablou
are elementele numerotate ncepnd de la 1. Programul construieste n memorie i
afieaz pe ecran, cu spaii ntre ele, cele n elemente ale unui tablou unidimensional c, n
care orice element ci (1in) se obine conform definiiei urmtoare:
ci =
123234
15345
(10p.)
Subiectul III
Pentru a genera toate numerele naturale cu exact 4 cifre i care au cifrele n ordine strict
descresctoare, se poate utiliza un algoritm echivalent cu cel pentru generarea:
(4p.)
aranjamentelor de 4 obiecte luate cte 10 b.
combinrilor de 10 obiecte luate cte 4
d.
permutrilor a 10 obiecte
permutrilor a 4 obiecte
2.
3.
Fiierul text numere.txt conine, pe o singur linie, cel mult 1000 de numere naturale
nenule cu cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un
program C/C++ care citete toate numerele din fiier i scrie pe ecran toate numerele pare
citite, ordonate cresctor. Dac fiierul numere.txt nu conine niciun numr par, atunci se
va afia pe ecran mesajul nu exista.
Exemplu: dac fiierul numere.txt conine numerele 2 3 1 4 7 2 5 8 6, atunci pe
ecran se va afia: 2 2 4 6 8
(10p.)
4.
Se consider subprogramele
prim, care primete prin intermediul unicului su parametrului x un numr natural nenul
de cel mult 4 cifre i returneaz valoarea 1 dac x este un numr prim i 0 n caz contrar;
numar, care primete prin intermediul parametrului x un numr natural nenul de cel mult
4 cifre i furnizeaz prin intermediul parametrului nrp numrul de numere prime mai mici
dect x.
a) Scriei numai antetul subprogramului prim i definiia complet a subprogramului
numar.
(6p.)
b) Scriei un programul C/C++ n care se citesc de la tastatur dou numere naturale
nenule de cel mult 4 cifre, a i b (a<b), i, prin apeluri utile ale subprogramului numar, se
verific dac intervalul nchis [a,b] conine cel puin un numr prim. Programul va afia pe
ecran, n caz afirmativ, mesajul DA, iar n caz contrar, mesajul NU.
(4p.)
Subiectul III
2.
Se consider subprogramul f,
definit alturat. Ce se va afia la
apelul f(38);?
(6p.)
3.
Fiierul text INTRARE.TXT conine, pe o singur linie, cel mult 100 de numere naturale
nenule de cel mult patru cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un
program C/C++ care citete numerele din fiier i scrie n fiierul text IESIRE.TXT, n
ordine cresctoare, toate valorile distincte obinute ca sum de dou elemente distincte
aflate pe linia a doua a fiierului.
Exemplu:
INTRARE.TXT
IESIRE.TXT
1 4 3 2
3 4 5 6 7
(10p.)
4.
(4p.)
b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur trei
numere naturale nenule x, y, z, de cel mult 4 cifre fiecare, (xy), i care, prin apeluri utile
ale subprogramului multiplu, verific dac intervalul [x,y] conine cel puin un multiplu
al lui z. Programul va afia pe ecran, n caz afirmativ, mesajul DA, iar n caz contrar
mesajul NU.
(6p.)
Subiectul III
1.
2.
3.
Fiierul text BAC.TXT conine, pe o singur linie, cel puin 3 i cel mult 100 de numere
naturale nenule distincte de cel mult 4 cifre fiecare, numerele fiind separate prin cte un
spaiu. Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i scrie
pe ecran, n ordine descresctoare, cele mai mici 3 numere citite.
Exemplu: dac fiierul BAC.TXT conine numerele 1017 48 310 5710 162, atunci se
va afia: 310 162 48
(10p.)
4.
(4p.)
Subiectul III
1.
3.
Fiierul text bac.txt conine, pe o singur linie, cel puin 3 i cel mult 100 de numere
naturale nenule distincte de cel mult 4 cifre fiecare, numerele fiind separate prin cte un
spaiu. Scriei un program C/C++ care citete numerele din fiier i scrie pe ecran ultima
cifr a produsului celor mai mari 3 numere citite.
Exemplu: dac fiierul bac.txt conine numerele:
1017 48 312 5742 162
atunci se va afia: 8 (ultima cifr a produsului numerelor 1017, 5742, 312)
(10p.)
4.
(4p.)
Subiectul III
Se utilizeaz metoda backtracking pentru a genera toate cuvintele care conin toate literele din
mulimea {i,n,f,o}, astfel nct fiecare liter s apar exact o dat ntr-un cuvnt i literele n
i o s nu se afle pe poziii vecine. tiind c primul cuvnt generat este info, iar al treilea, al
patrulea i al cincilea sunt nifo, niof, nfio care este cel de-al doilea cuvnt obinut?
(4p.)
b. inof
c. ionf
d. niof
a. iofn
Fiierul text bac.txt conine, pe prima sa linie, 100 de numere naturale de cel mult 4 cifre
fiecare, numerele fiind ordonate cresctor i separate prin cte un spaiu, iar pe a doua
linie un singur numr natural x. Scriei un program C/C++ care citete toate numerele din
fiier i verific dac x se afl n irul celor 100 de numere aflate pe prima linie a fiierului.
n caz afirmativ, se va afia pe ecran mesajul DA, altfel se va afia mesajul NU.
Exemple: dac fiierul bac.txt conine:
17 38 40 45 50 51 52 53 54 55 ... 145
52
atunci se va afia: DA ;
dac fiierul bac.txt conine:
2 11 15 16 20 25 30 35 40 ... 495
33
atunci se va afia: NU.
(10p.)
4.
(4p.)
Subiectul III
1.
3.
int f(int x)
Se consider tabloul unidimensional a definit
global, ce memoreaz elementele a1=12, a2=35, {if(x>=1)
return (a[x]+f(x-1))%10;
a3=2, a4=8 i subprogramul f, definit alturat. Ce
else
valoare are f(1)? Dar f(4)?
(6p.)
return 0;
}
Subprogramul cifra primete prin parametrul x un numr real nenul pozitiv i furnizeaz
prin parametrul y valoarea cifrei unitilor prii ntregi a lui x.
Exemplu: dac x=34.567, dup apel y=4.
a) Scriei definiia complet a subprogramului cifra.
(6p.)
b) Scriei un program C/C++ care citete de la tastatur dou numere reale cu cel mult dou
zecimale, numere reprezentnd mediile semestriale obinute de un elev. Programul stabilete,
folosind apeluri utile ale subprogramului cifra, dac cele dou medii citite se afl n aceeai
categorie de medii sau nu. Precizm c orice medie, n funcie de intervalul n care se
ncadreaz, face parte din una dintre categoriile: [3,3.99], [4,4.99], [5,5.99],
[6,6.99], [7,7.99], [8,8.99] sau [9,10]. n cazul n care ambele medii fac parte din
aceeai categorie, programul va afia mesajul Da, altfel va afia mesajul Nu.
(4p.)
4.
n fiierul text.in se afl un text scris pe mai multe linii, pe fiecare linie fiind caractere
diverse: litere mici ale alfabetului englez, cifre, spaii i semne de punctuaie. Gsii o metod
eficient din punctul de vedere al timpului de executare i al gestionrii memoriei ce permite
afiarea celor mai frecvente perechi de vocale alturate din text. Menionm c vocalele
sunt: a, e, i, o i u.
De exemplu, dac text.in conine textul:
Aleea ce strabate valea
e-o unduire de pietris scanteietor,
De-aceea nu stii daca zboara sau doar inoata in unde aurii
cele mai frecvente perechi de vocale ntlnite n acest text sunt: ea i oa (ele apar de 3 ori,
spre deosebire de alte perechi de vocale alturate care apar de mai puine ori).
a) Descriei succint, n limbaj natural, metoda de rezolvare aleas, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
b) Scriei programul C/C++ corespunztor metodei descrise la cerina a.
(6p.)
Subiectul III
Scriei definiia complet a unui subprogram fibo cu doi parametri, n i v, care primete
prin intermediul parametrului n un numr natural (1<n<30) i returneaz prin intermediul
parametrului v un tablou unidimensional care conine primii n termeni impari ai irului lui
Fibonacci (amintim c irul lui Fibonacci este: 1,1,2,3,5,8,13,21,).
(10p.)
4.
a) Fiierul date.in conine un ir de cel mult 10000 numere naturale (printre care cel
puin un numr par i cel puin un numr impar), cu cel mult 2 cifre fiecare, separate prin
cte un spaiu. Scriei un program C/C++ care citete numerele din fiierul date.in i
scrie n fiierul text date.out valorile distincte citite, separate prin cte un spaiu,
respectndu-se regula: pe prima linie vor fi scrise numerele impare n ordine cresctoare,
iar pe linia a doua numerele pare, n ordine descresctoare. Alegei o metod eficient din
punctul de vedere al timpului de executare.
(6p.)
Exemplu: dac pe prima linie a fiierului date.in se afl numerele:
75 12 3 3 18 75 1 3
atunci fiierul date.out va conine:
1 3 75
18 12
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
Subiectul III
4.
(6p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural nenul n cu exact
6 cifre i, folosind apeluri utile ale subprogramului verif, verific dac n are primele trei
cifre impare. Programul afieaz pe ecran mesajul Da n caz afirmativ i mesajul Nu n caz
contrar.
(4p.)
Pentru un ir de numere naturale, numim nod al irului un termen din ir care are doi
vecini, termenul precedent i termenul urmtor din ir, i valoarea termenului respectiv este
strict mai mic dect suma valorilor celor doi vecini ai si.
a) Fiierul text date.in conine un ir de cel puin dou i cel mult 10000 de numere
naturale avnd maximum 6 cifre fiecare, numere separate prin cte un spaiu. Scriei un
program C/C++ care citete toate numerele din fiier i afieaz numrul de noduri ale
irului citit, folosind un algoritm eficient din punctul de vedere al memoriei utilizate.
(6p.)
Exemplu: dac fiierul date.in are urmtorul coninut:
51 20 100 43 43 618 5000 31 2020 114 116 4
atunci pe ecran se afieaz 6 (cele ase numere subliniate reprezint noduri ai irului)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
Subiectul III
3.
4.
Fiierul text date.in conine pe prima linie , separate prin cte un spaiu, cel mult 1000 de
numere naturale, fiecare dintre ele avnd maximum 9 cifre.
a) Scriei un program C/C++ care citete numerele din fiierul date.txt i determin cea
mai lung secven ordonat strict descresctor, format din valori citite consecutiv din
fiier. Numerele din secvena gsit vor fi afiate pe ecran, pe o linie, separate prin cte un
spaiu. Dac sunt mai multe secvene care respect condiia impus, se va afia doar prima
dintre acestea. Alegei o metod de rezolvare eficient din punctul de vedere al timpului de
executare.
Exemplu: dac fiierul date.in conine
pe ecran se afieaz:
5 2 19 4 3 6 3 2 1 0 8
6 3 2 1 0
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
( 4p.)
Subiectul III
2.
3.
Subprogramul sfx primete prin singurul su parametru, x, un numr natural din intervalul
[100,2000000000] i returneaz valoarea 1 dac ultimele trei cifre ale numrului sunt n
ordine strict descresctoare sau valoarea 0 n caz contrar.
Exemplu: dac x=24973 se va returna valoarea 1.
a) Scriei definiia complet a subprogramului sfx.
(5p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n format din exact
6 cifre i verific, utiliznd apeluri ale subprogramului sfx, dac acest numr are toate cifrele
n ordine strict descresctoare. Programul va afia mesajul Da n caz afirmativ i mesajul Nu
n caz contrar.
Exemplu: dac n=756543 se va afia Nu, iar dac n=976532 se va afia Da.
(5p.)
4.
Pentru un ir de numere naturale, numim pol al irului un termen din ir care are doi vecini,
termenul precedent i termenul urmtor din ir, i valoarea termenului respectiv este strict
mai mare dect valoarea fiecruia dintre cei doi vecini ai si.
a) Fiierul text date.in conine un ir de cel mult 10000 de numere naturale avnd
maximum 6 cifre fiecare, numere separate prin cte un spaiu. Scriei un program C/C++
care citete toate numerele din fiier i afieaz numrul de poli ai irului citit, folosind un
algoritm eficient din punctul de vedere al memoriei utilizate.
(6p.)
Exemplu: dac fiierul date.in are urmtorul coninut:
51 20 100 43 43 618 5000 31 2020 114 116 4
atunci pe ecran se afieaz 4 (cele patru numere subliniate reprezint poli ai irului)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
( 4p.)
Subiectul III
3.
4.
Fiierele text A.TXT i B.TXT conin cel mult 10000 de numere naturale cu cel mult 9
cifre fiecare, scrise fiecare pe cte o linie.
a) Scriei un program C/C++ care citete numerele din cele dou fiiere i, printr-o metod
eficient din punct de vedere al timpului de executare i al spaiului de memorie utilizat,
afieaz pe ecran cte dintre numerele din fiierul A.TXT sunt strict mai mici dect toate
(6p.)
numerele memorate n fiierul B.TXT.
91111
41111
Exemplu:
dac
fiierul
iar fiierul B.TXT are coninutul
91111
81111 alturat:
A.TXT are coninutul alturat,
61111
11111
91111
91111
91111
51111
81111
111111
61111
31111
91111
431111
61111
201111
atunci programul va afia valoarea 4, deoarece 41111, 11111, 51111, 31111 sunt mai
mici dect toate elementele din fiierul B.TXT.
b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia.
(4p.)
Subiectul III
3.
4.
Subiectul III
1.
3.
4.
Subiectul III
3.
4.
Subiectul III
Pentru rezolvarea crei probleme dintre cele enumerate mai jos se poate utiliza metoda
backtracking ?
(4p.)
b. determinarea tuturor divizorilor unui
a. determinarea reuniunii a 3 mulimi
numr din 3 cifre
c. determinarea tuturor elementelor mai mici
d. determinarea tuturor variantelor n care
dect 30000 din irul lui Fibonacci
se pot genera steagurile cu 3 culori (din
mulimea: rou, galben, albastru i
alb), avnd la mijloc culoarea galben
3.
4.
Subiectul III
Se genereaz n ordine cresctoare toate numerele de exact 4 cifre care se pot forma cu
elementele mulimii {0,1,2,3,4}. Primele 8 soluii generate sunt, n ordine: 1000, 1001,
1002, 1003, 1004, 1010, 1011, 1012. Care sunt primele trei numere ce se vor genera
imediat dup numrul 3443?
(4p.)
b. 3444,4443,4444
a. 4000,4001,4002
c. 3444,4444,4000
d. 3444,4000,4001
3.
Un numr natural se numete palindrom dac numrul citit de la stnga la dreapta este egal
cu numrul citit de la dreapta la stnga.
a) Scriei definiia complet a subprogramului Palindrom care primete prin intermediul
parametrului n un numr natural de cel mult nou cifre i returneaz 1 dac acesta este
palindrom i 0 n caz contrar.
(10p.)
b) Fiierul text NUMERE.IN conine cel mult 100000 numere naturale de cel mult nou cifre
fiecare, numerele fiind desprite prin cte un spaiu. Cel puin unul dintre numere este
palindrom.
Scriei programul C/C++ care citete numerele din fiierul NUMERE.IN i, folosind apeluri
utile ale subprogramului Palindrom determin n mod eficient, din punct de vedere al
memoriei utilizate i al timpului de executare, care este cel mai mare numr palindrom citit i
de cte ori apare el n fiierul NUMERE.IN. Programul scrie n fiierul text NUMERE.OUT
numrul astfel determinat precum i numrul de apariii ale acestuia, pe rnduri diferite.
Exemplu: dac NUMERE.IN conine numerele:
23 565 78687 7887 7865 78687 7887 23 78687 98798
atunci NUMERE.OUT va conine:
78687
3
(6p.)
Subiectul III
Se genereaz n ordine cresctoare toate numerele de 4 cifre, cu cifre distincte, astfel nct
diferena n valoare absolut dintre prima i ultima, respectiv a doua i a treia cifr este
egal cu 2. Primele 11 soluii generate sunt, n ordine: 1023, 1203, 1243, 1423, 1463,
1573, 1643, 1683, 1753, 1793, 1863. Care dintre urmtoarele numere se va genera
imediat naintea numrului 9317?
(4p.)
b. 9357
c. 9207
d. 8976
a. 9247
3.
void F(int x)
{ if(x != 0)
{ F(x/2);
cout << x%2;
}
}
printf(%d, x%2);
Subiectul III
Se genereaz n ordine cresctoare toate numerele de 4 cifre, cu cifre distincte, astfel nct
diferena n valoare absolut dintre ultimele dou cifre ale fiecrui numr generat este egal
cu 2. Primele opt soluii generate sunt, n ordine: 1024, 1035, 1042, 1046, 1053, 1057,
1064, 1068. Care dintre urmtoarele numere se va genera imediat dup numrul 8975?
(4p.)
b. 9013
c. 8957
d. 9024
a. 8979
3.
printf(%d,x%10);
(10p.)
Subiectul III
1.
2.
3.
4.
Se numete numr mare orice numr natural care are mai mult de nou cifre.
a) Scriei un program C/C++ care citete de pe prima linie a fiierului text NUMERE.IN un
numr natural n (10<n<1000), iar de pe a doua linie n cifre desprite prin cte un spaiu,
dintre care cel puin una nenul, i afieaz pe ecran cel mai mic numr mare format cu toate
cele n cifre din fiier. Alegei o metod eficient din punct de vedere al utilizrii memoriei.
(6p.)
b) Descriei succint n limbaj natural metoda de rezolvare folosit explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
Exemplu: dac fiierul NUMERE.IN conine
10
7 9 4 0 9 0 1 1 8 8
atunci se va afia pe ecran numrul mare :
1001478899
Subiectul III
1.
3.
a) Scriei definiia complet a funciei UltimaCifra care primete prin cei doi parametri a
i b cte un numr natural (0<a<1000000, 0<b<1000000), calculeaz n mod eficient din
punct de vedere al timpului de executare i returneaz ultima cifr a numrului ab (a la
puterea b).
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri)
(4p.)
c) Fiierul text SIR.IN conine pe prima sa linie un numr natural n (0<n<1001), iar pe
fiecare dintre urmtoarele n linii cte o pereche de numere naturale, xi yi (1in,
xi30000, yi30000).
Scriei programul C/C++ care citete numerele din fiierul SIR.IN i scrie n fiierul text
SIR.OUT ultima cifr expresiei: x1 + x 2 +...+ x n ,folosind apeluri ale funciei
UltimaCifra.
3
Exemplu: dac fiierul SIR.IN are coninutul alturat, atunci
25 6
SIR.OUT va conine cifra 0.
(10p.)
8 10
1 4589
y1
y2
yn
Subiectul III
3.
Scriei definiia complet a unui subprogram s cu trei parametri care primete prin
intermediul parametrului n un numr natural de maximum 9 cifre, prin intermediul
parametrului c o cifr i furnizeaz prin intermediul parametrului k numrul de cifre ale
numrului n care aparin intervalului [c-1,c+1].
Exemplu: pentru n=1233 i c=3, k va avea valoarea 3, iar pentru n=650 i c=3, k va
avea valoarea 0.
(10p.)
4.
Fiierul BAC.TXT are pe prima linie dou numere naturale n i m (0<n<1000, 0<m<1000)
separate prin cte un spaiu, pe linia a doua n numere ntregi ordonate strict cresctor, iar
pe linia a treia m numere naturale distincte. Numerele din fiier aflate pe linia a doua i a
treia au cel mult 6 cifre fiecare i sunt desprite n cadrul liniei prin cte un spaiu. S se
scrie un program care citete toate numerele din fiier i afieaz pe ecran, desprite prin
cte un spaiu, toate numerele de pe a doua linie a fiierului care apar cel puin o dat i pe
linia a treia a acestuia.
Exemplu: dac fiierul are urmtorul coninut:
6 5
2 3 4 5 8 9
4 5 2 11 8
atunci se va afia: 5 2 8, nu neaprat n aceast ordine.
a) Descriei n limbaj natural o metod de rezolvare eficient ca timp de executare.
(4p.)
(6p.)
Subiectul III
a.
elementelor
produsului
cartezian b.
AxAxAxAxA, unde A={1,2,,10}
c.
d.
3.
Scriei un program C/C++ care citete de la tastatur dou numere naturale nenule n i k
(0<n<100, 0<k<4) i apoi n numere reale pozitive care au cel mult 3 cifre la partea
ntreag i cel mult 5 cifre zecimale i afieaz pe ecran numrul de valori reale citite care
au mai mult de k cifre zecimale.
Exemplu: dac pentru n se citete valoarea 5 i pentru k valoarea 2 i apoi irul de
(10p.)
numere reale 6.2 4.234 2 8.13 10.001 pe ecran se va afia valoarea 2.
4.
Fiierul text bac.in conine pe prima sa linie un numr natural n (0<n<10000), iar pe
urmtoarea linie n numere naturale din intervalul [1,100] separate prin cte un spaiu.
Se cere s se citesc din fiier toate numerele i s se afieze pe ecran numrul sau
numerele care apar de cele mai multe ori printre numerele citite de pe a doua linie a
fiierului. Numerele afiate vor fi separate prin cte un spaiu. Alegei un algoritm de
rezolvare eficient att din punctul de vedere al timpului de executare ct i al gestionrii
memoriei. .
Exemplu: dac fiierul bac.in are urmtorul coninut:
12
1 2 2 3 2 9 3 3 9 9 7 1
pe ecran se vor afia valorile 2, 3 i 9, nu neaprat n aceast ordine.
a) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia (4-6 rnduri) (4p.)
b) Scriei programul C/C++ ce rezolv
descrise la punctul a).
Subiectul III
1.
3.
a) Scriei doar antetul unui subprogram prim cu doi parametri, care primete prin
intermediul parametrului n un numr natural cu cel mult patru cifre i returneaz prin
intermediului parametrului p valoarea 1 dac n este prim i 0 n caz contrar.
(2p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n (3<n<10000)
i afieaz pe ecran, desprite prin cte un spaiu, primele n numerele prime, folosind
apeluri utile ale subprogramului prim.
(8p.)
Exemplu: pentru n=4 pe ecran vor fi afiate numerele 2 3 5 7
4.
Fiierul text bac.in conine pe prima sa linie un numr natural n (0<n<10000), iar pe
urmtoarea linie n numere naturale din intervalul [1,100]. Se cere s se citesc din fiier
toate numerele i s se afieze pe ecran, n ordine descresctoare, toate numerele care
apar pe a doua linie a fiierului i numrul de apariii ale fiecruia. Dac un numr apare de
mai multe ori, el va fi afiat o singur dat. Fiecare pereche valoare - numr de apariii va
fi afiat pe cte o linie a ecranului, numerele fiind separate printr-un spaiu, ca n exemplu.
Alegei un algoritm de rezolvare eficient din punctul de vedere al timpului de executare.
Exemplu: dac fiierul bac.in are urmtorul coninut:
12
1 2 2 3 2 2 3 3 2 3 2 1
pe ecran se vor afia, n aceast ordine, perechile:
3 4
2 6
1 2
a) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia (4-6 rnduri) (4p.)
b) Scriei programul C/C++ ce rezolv
descrise la punctul a).
Subiectul III
Problema generrii tuturor codurilor formate din exact 4 cifre nenule, cu toate cifrele
distincte dou cte dou, este similar cu generarea tuturor:
(4p.)
a. aranjamentelor de 9 elemente luate cte
b. permutrilor elementelor unei mulimi cu
4
4 elemente
c. elementelor
d. submulimilor cu 4 elemente ale mulimii
produsului
cartezian
{1,2,3,4,5,6,7,8,9}
AxAxAxA unde A este o mulime cu 9
elemente
3.
Scriei definiia complet a subprogram max, cu trei parametri, a, b, c, care primete prin
intermediul parametrilor a i b dou numere reale cu exact dou cifre la partea ntreag i
exact dou zecimale fiecare. Subprogramul determin cel mai mare numr real dintre
urmtoarele patru valori: a, b i numerele reale obinute din a i b prin interschimbarea
prii ntregi cu partea fracionar n cadrul aceluiai numr. Aceast valoare este furnizat
prin intermediul parametrului real c.
Exemplu: dac a=33.17 i b=15.40, c va avea valoarea 40.15 (cea mai mare valoare
dintre 33.17, 15.40, 17.33 i 40.15)
(10p.)
4.
Subiectul III
1.
3.
Fiierul text bac.in conine cel mult 1000 de numere naturale cu cel mult patru cifre
fiecare, desprite prin cte un spaiu. Scriei programul C/C++ care citete numerele din
fiier i afieaz pe ecran, n ordine cresctoare, acele numere din fiier care au toate cifrele
egale. Dac fiierul nu conine niciun astfel de numr, se va afia pe ecran mesajul NU
EXISTA.
Exemplu: dac fiierul bac.in conine numerele: 30 44 111 7 25 5 atunci pe ecran
se va afia 5 7 44 111.
(10p.)
4.
a) Scriei definiia complet a unui subprogram divi cu doi parametri, care primete prin
intermediul parametrului n un numr natural nenul cu cel mult 6 cifre i returneaz prin
intermediul parametrului d cel mai mic divizor propriu al lui n sau 0 in cazul n care n nu are
niciun divizor propriu. De exemplu, pentru n=15, d va avea valoarea 3.
(4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural nenul n
(1<n<1000000) i afieaz pe ecran cel mai mare numar natural mai mic dect n care l
divide pe n. Se vor folosi apeluri utile ale subprogramului divi.
Exemple: dac n=120, se afieaz pe ecran 60, iar dac n=43, se afieaz 1.
(6p.)
Subiectul III
Subiectul III
2.
3.
Scriei n C/C++ definiia complet a subprogramului suma care are doi parametri:
- n, prin care primete un numr natural (1n100);
- v, prin care primete un tablou unidimensional cu n elemente, numere ntregi situate n
intervalul [10,30000]. Funcia returneaz suma numerelor din tabloul v care au ultimele
dou cifre identice.
Exemplu: dac n=4 i v=(123, 122, 423, 555) funcia va returna 677 (=122+555).
(10p.)
4.
Fiierul text NUMERE.IN conine, pe mai multe linii, cel mult 30000 de numere naturale
nenule mai mici sau egale cu 500, numerele de pe fiecare linie fiind desprite prin cte un
spaiu. Fiierul conine cel puin dou numere distincte, fiecare avnd dou cifre.
a) Scriei programul C/C++ care citete toate numerele din fiierul NUMERE.IN i creeaz
fiierul text NUMERE.OUT care s conin pe prima linie cel mai mare numr de dou cifre
din fiierul NUMERE.IN, i de cte ori apare el n acest fiier, iar pe a doua linie, cel mai mic
numr de dou cifre din fiierul NUMERE.IN i de cte ori apare el n acest fiier. Alegei o
metod de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
executare.
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul a), explicnd n
ce const eficiena ei (3 4 rnduri).
(4p.)
Exemplu: dac fiierul
atunci
fiierul
NUMERE.OUT
va
2 253 34 3
88 2
NUMERE.IN are coninutul 6 88 9 2 3
avea urmtorul coninut:
34 2
alturat:
4 54 34 88
Subiectul III
Subiectul III
3.
Scriei programul C/C++ care citete de la tastatur un numr natural n (1n100), apoi
un ir de n numere ntregi, cu cel mult 2 cifre fiecare, notat a1,a2,a3,an, apoi un al doilea
ir de n numere ntregi, cu cel mult 2 cifre fiecare, notat b1,b2,b3,bn. Fiecare ir conine
att valori pare, ct i impare. Programul afieaz pe ecran suma acelor numere impare din
irul b care sunt mai mici dect suma tuturor numerelor pare din irul a.
Exemplu: pentru n=4 i numerele 2,3,7,8 respectiv 44,3,1,8 se afieaz valoarea 4
pentru c numerele 3 i 1 sunt mai mici dect suma numerelor pare din irul a, care este
10.
(10p.)
4.
Se consider subprogramul CMMMC care primete prin cei doi parametri, x i y, dou
numere naturale (1x10000, 1y10000) i returneaz cel mai mic multiplu comun al lor.
a) Scriei numai antetul subprogramului CMMMC.
(4p.)
b) Fiierul text NUMERE.IN conine, pe fiecare linie, cte dou numere naturale nenule mai
mici sau egale dect 10000, desprite printr-un spaiu. Scriei un program C/C++ care,
pentru fiecare linie k din fiierul NUMERE.IN, citete cele dou numere de pe aceast linie
i scrie n fiierul text NUMERE.OUT , tot pe linia k, cel mai mic multiplu comun al acestora,
ca n exemplu.
Se vor utiliza apeluri utile ale subprogramului CMMMC.
(6p.)
12 14
84
Exemplu: dac fiierul
atunci fiierul
11 12
132
NUMERE.IN are coninutul
NUMERE.OUT va avea
4
8
8
alturat:
urmtorul coninut:
Subiectul III
3.
Scriei programul C/C++ care citete de la tastatur un numr natural n (1n100), apoi
un ir de n numere ntregi, cu cel mult 2 cifre fiecare, notat a1,a2,a3,an, apoi un al doilea
ir de n numere ntregi, cu cel mult 2 cifre fiecare, notat b1,b2,b3,bn. Fiecare ir conine
att valori pare, ct i impare. Programul afieaz pe ecran suma acelor numere din irul b
care sunt strict mai mici dect media aritmetic a tuturor numerelor pare din irul a.
Exemplu: pentru n=4 i numerele 2,3,7,8 respectiv 44,3,1,8 se afieaz valoarea 4
pentru c numerele 3 i 1 sunt mai mici dect media aritmetic a numerelor pare din irul a,
care este 5.
(10p.)
4.
Se consider subprogramul CMMDC care primete prin cei doi parametri, x i y, dou
numere naturale (1x10000, 1y10000) i returneaz cel mai mare divizor comun al lor.
a) Scriei numai antetul subprogramului CMMDC.
(4p.)
b) Fiierul text NUMERE.IN conine, pe fiecare linie, cte dou numere naturale nenule mai
mici sau egale dect 10000, desprite printr-un spaiu, reprezentnd numitorul i
numrtorul cte unei fracii. Scriei un program C/C++ care, pentru fiecare linie k din
fiierul NUMERE.IN, citete numitorul i numrtorul fraciei de pe aceast linie i scrie n
fiierul text NUMERE.OUT , tot pe linia k, numitorul i numrtorul acestei fracii, adus la
forma ireductibil, ca n exemplu. Se vor utiliza apeluri apeluri utile ale subprogramului
CMMDC.
(6p.)
12
14
6
7
Exemplu: dac fiierul
atunci fiierul
11 12
11 12
NUMERE.IN are coninutul
NUMERE.OUT va avea
2 2
1 1
alturat:
urmtorul coninut:
4 8
1 2
Subiectul III
La examenul de bacalaureat, un elev primete un test format dintr-un subiect de tip I, unul
de tip II i unul de tip III. Stiind c pentru fiecare tip de subiect sunt elaborate exact 100
de variante, algoritmul de generare a tuturor posibilitilor de a forma un test este similar
cu algoritmul de generare a:
(4p.)
b. aranjamentelor
a. elementelor produsului cartezian
c. permutrilor
d. submulimilor
void f(int n)
{
cout<<"*"; | printf("*");
if(n>2)
{
f(n-1);
cout<<"#"; | printf("#");
}
}
3.
Scriei definiia complet a subprogramului numar, cu trei parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr nenul; subprogramul retuneaz numrul obinut prin
nlocuirea n numrul primit prin parametrul n a fiecrei apariii a cifrei c1 cu cifra c2. Dac
c1 nu apare n n, subprogramul returneaz valoarea n.
Exemplu: pentru n=12445, c1=4 i c2=7 valoarea returnat va fi 12775.
(10p.)
4.
Fiierul text bac.txt conine cel puin dou i cel mult 1000 de numere naturale distincte,
dintre care cel puin dou sunt pare. Numerele sunt separate prin cte un spaiu i fiecare
dintre ele are cel mult 9 cifre.
a) Scriei un program C/C++ care determin cele mai mari dou numere pare din fiier,
utiliznd un algoritm eficient din punct de vedere al timpului de executare i al spaiului de
memorie utilizat. Cele dou numere vor fi afiate pe ecran, n ordine descresctoare,
separate printr-un spaiu.
Exemplu: dac fiierul conine numerele: 5123 8 6 12 3 se va afia: 12 8
(6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)
Subiectul III
1.
2.
3.
Scriei definiia complet a subprogramului reduce, cu doi parametri, care primete prin
intermediul parametrilor a i b dou numere naturale formate din cel mult 9 cifre fiecare.
Funcia returneaz o valoare obinut din numrul a prin nsumarea acelor cifre diferite de 0
ale numrului a care NU divid numrul b. Dac nu exist asemenea cifre, se va returna
valoarea 0.
Exemplu: pentru a=184465709 i b=18, cifrele corespunztoare cerinei sunt 8, 4, 4, 5 i
7, deci valoarea returnat va fi 28 (28=8+4+4+5+7). Dac a=2402804 i b=8000,
valoarea returnat va fi 0.
(10p.)
4.
Fiierul text bac.txt conine un ir de cel mult 2009 numere naturale, cu cel mult nou
cifre fiecare, pe mai multe rnduri, numerele de pe acelai rnd fiind separate prin cte un
spaiu.
a) Scriei un program C/C++ care afieaz pe ecran cel mai mic numr din fiier pentru care
suma cifrelor pare este egal cu suma cifrelor impare, precum i numrul de apariii n fiier
ale acestui numr, folosind o metod eficient din punctul de vedere al timpului de
executare. Cele dou valori vor fi afiate pe o linie a ecranului, separate printr-un spaiu.
Exemplu: dac n fiier avem numerele 22031 9021 22031 1021 2011 10012 1021
457008 99882 atunci pe ecran se vor afia numerele: 1021 2.
(6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)
Subiectul III
1.
Scriei definiia complet a subprogramului numar, cu patru parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr cu proprietatea c1<c2; subprogramul furnizeaz prin
intermediul celui de al patrulea parametru, x, o valoare obinut prin eliminarea din numrul
primit prin parametrul n a fiecrei cifre cuprinse n intervalul nchis [c1, c2]. Dac toate
cifrele lui n aparin acestui interval, valoarea furnizat prin x va fi 0.
Exemplu: pentru n=162448, c1=4 i c2=7, valoarea furnizat prin x va fi 128.
(10p.)
4.
Fiierul text bac.txt conine cel mult 10000 de numere naturale din intervalul nchis
[0,9], dintre care cel puin unul este prim. Numerele se afl pe mai multe rnduri, cele de
pe acelai rnd fiind separate prin cte un spaiu.
a) Scriei un program C/C++ care determin i afieaz pe ecran cel mai mare numr prim
care apare n fiier i numrul de apariii ale acestuia, utiliznd un algoritm eficient din punct
de vedere al timpului de executare i al spaiului de memorie utilizat. Programul afieaz pe
ecran cele dou valori determinate, separate printr-un spaiu.
Exemplu: dac fiierul conine numerele: 5 8 9 1 9 5 1 1 2 2 se va afia 5 2. (6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)
Subiectul III
Scriei definiia complet a subprogramului numar, cu trei parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr nenul. Subprogramul caut prima apariie (de la stnga
spre dreapta) a cifrei c1 n n, i dac aceasta apare, o nlocuiete cu c2, iar urmtoarele
cifre, dac exist, sunt nlocuite cu cte o cifr 0. Subprogramul furnizeaz tot prin n
numrul astfel obinut. Dac cifra c1 nu apare n n, atunci valoarea lui n rmne
nemodificat.
Exemplu: pentru n=162448, c1=4 i c2=7 valoarea furnizat prin n va fi 162700. (10p.)
4.
Fiierul text bac.txt conine pe mai multe rnduri cel mult 50000 de numere naturale din
intervalul nchis [0, 99], numerele de pe acelai rnd fiind separate prin cte un spaiu.
a) Scriei un program C/C++ care afieaz pe ecran, n ordine descresctoare, acele
numere din fiier care sunt mai mari dect un numr natural k, citit de la tastatur, utiliznd
un algoritm eficient din punct de vedere al timpului de executare. Dac un numr apare de
mai multe ori, i este mai mare dect k, se va afia o singur dat. Numerele vor fi afiate
cte 20 pe fiecare linie (cu excepia ultimei linii care poate s conin mai puine valori),
separate prin cte un spaiu.
Exemplu: dac fiierul conine numerele: 15 8 99 15 1 37 1 24 2, iar pentru k se citete
valoarea 7, se vor afia numerele 99 37 24 15 8.
(6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)
Subiectul III
1.
void f(char c)
{
if (c != 'e')
{
f(c+1);
cout<<c; |
}
}
printf(%c,c);
3.
Funcia verif primete prin intermediul parametrului n un numr natural format din cel mult
9 cifre, i prin intermediul parametrului a, un numr natural nenul (2a9). Funcia
returneaz valoarea 1 dac n este un numr format din cifre aparinnd intervalului nchis
[0,a] i valoarea 0 n caz contrar.
a) Scriei definiia complet a funciei verif.
(4p.)
b) Spunem c n poate fi o reprezentare n baza b (1<b10), dac toate cifrele lui n sunt
strict mai mici dect b. Scriei un program care citete de la tastatur o valoare natural n cu
cel mult 9 cifre i, utiliznd apeluri ale funciei verif, afieaz pe ecran, n ordine
cresctoare, cu spaii ntre ele, toate valorile lui b pentru care valoarea citit nu poate fi o
reprezentare n baza b.
(6p.)
Exemplu: Pentru n=4101, se afieaz 2 3 4.
4.
Fiierul text bac.txt conine cel mult 1000 de numere ntregi de cel mult 9 cifre fiecare,
numerele fiind separate prin cte un spaiu; printre numerele din fiier exist cel puin dou
numere pozitive, aflate pe poziii consecutive.
a) Scriei un program C/C++ care afieaz dou numere pozitive, aflate unul dup altul n
fiier, a cror sum este maxim, utiliznd un algoritm eficient din punct de vedere al
timpului de executare i al spaiului de memorie utilizat. Dac exist mai multe soluii, se
afieaz doar acea pereche pentru care diferena dintre cele dou numere este maxim.
Numerele vor fi afiate pe ecran, n ordinea din fiier, separate printr-un spaiu.
Exemplu: dac fiierul conine numerele: -2 2 16 4 -1 25 -2 8 12 7 13 se vor
afia numerele 16 4, n aceast ordine, cu un spaiu ntre ele.
(6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)
Subiectul III
Pentru a planifica n orarul unei coli, la clasa a XII-a, 4 ore de informatic n zile lucrtoare
diferite din sptmn, cte o singur or pe zi, se poate utiliza un algoritm echivalent cu
algoritmul de generare a:
(4p.)
a. permutrilor de 4 elemente
Subprogramul par primete prin singurul su parametru, n, un numr natural nenul cu cel
mult 8 cifre i returneaz valoarea 1 dac n conine cel puin o cifr par, sau returneaz
valoarea 0 n caz contrar.
Exemplu: pentru n=723 subprogramul va returna valoarea 1.
a) Scriei numai antetul subprogramului par.
(2p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural nenul n cu cel
mult trei cifre, apoi un ir de n numere naturale, cu cel puin dou i cel mult 8 cifre fiecare,
i afieaz pe ecran numrul de valori din irul citit care au numai cifra unitilor par,
celelalte cifre fiind impare. Se vor utiliza apeluri utile ale subprogramului par.
Exemplu: dac n=4, iar irul citit este 7354, 123864, 51731, 570 se va afia 2 (numerele
(8p.)
7354 i 570 respect condiia cerut).
4.
Fiierul numere.in conine cel mult 5000 de numere reale, cte unul pe fiecare linie. Se
cere s se scrie un program care s citesc toate numerele din fiier i s afieze pe ecran
numrul de ordine al primei, respectiv al ultimei linii pe care se afl cel mai mare numr din
fiier. Cele dou numere vor fi separate printr-un spaiu. Alegei o metod de rezolvare
eficient din punct de vedere al spaiului de memorare i al timpului de executare.
Exemplu: dac fiierul are coninutul alturat, pe ecran se vor afia numerele 2 6. 3.5
7
a) Descriei succint, n limbaj natural, metoda de rezolvare aleas, explicnd n ce -4
const eficiena ei.
(4p.)
7
b) Scriei programul C/C++ corespunztor metodei descrise.
(6p.) 2
7
6.3
5
Subiectul III
(4p.)
Scriei un program C/C++ care creeaz fiierul text SIR.TXT i scrie n el toate irurile
formate din dou caractere distincte, litere mari ale alfabetului englez, astfel nct niciun ir
s nu fie format din dou vocale alturate. Fiecare ir va fi scris pe cte o linie a fiierului.
(6p.)
Subiectul III
Subiectul III
a. 2134
b. 2143
c. 3421
3
3
3
2
2
1
1
2
1
3
1
3
2
1
2
1
3
2
3
d. 3412
Funcia recursiv f este astfel definit nct f(1)=8, iar f(n+1)=2*f(n)-4 pentru orice n
natural nenul.
a) Ce valoare are f(5) ?
(3p.)
b) Care este cea mai mare valoare pe care o poate lua x astfel nct f(x) < 1000 ? (3p.)
3.
Scriei definiia complet a funciei f, care primete prin intermediul parametrului n un numr
natural nenul (2n200), iar prin intermediul parametrului a un tablou unidimensional care
conine n valori ntregi, fiecare dintre aceste valori ntregi avnd cel mult patru cifre. Funcia
returneaz valoarea 1 dac elementele tabloului formeaz un ir cresctor, valoarea 2 dac
elementele tabloului formeaz un ir descresctor, valoarea 0 dac elementele tabloului
formeaz un ir constant i valoarea -1 n rest.
(10p.)
4.
Fiierul text numr.txt conine pe prima linie o valoare natural n cu exact 9 cifre nenule
distincte. Scriei un program eficient din punctul de vedere al timpului de executare care
citete din fiier numrul n i afieaz pe ecran cea mai mic valoare m format din exact
aceleai cifre ca i n, astfel nct m>n. n cazul n care nu exist o astfel de valoare,
programul va afia pe ecran mesajul Nu exista.
Exemplu: Dac fiierul numr.txt conine numrul 257869431, se va afia pe ecran
numrul 257891346.
a) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
b) Scriei un program C/C++ care rezolv problema conform metodei descrise.
(6p.)
Subiectul III
1.
Funcia f primete prin intermediul parametrului n un numr natural nenul (2n200), iar
prin intermediul parametrului a un tablou unidimensional care conine n valori ntregi nenule
(fiecare dintre aceste valori ntregi avnd cel mult patru cifre).
Funcia returneaz valoarea -1 dac numrul de valori negative din tabloul a este strict mai
mare dect numrul de valori pozitive din tablou, valoarea 0 dac numrul de valori
negative din a este egal cu numrul de valori pozitive din tablou i valoarea 1 dac numrul
de valori pozitive din tabloul a este strict mai mare dect numrul de valori negative din a.
Scriei definiia complet a funciei f.
(10p.)
4.
a) Scriei un program C/C++ care citete de la tastatur un numr natural nenul, S, avnd
maximum 9 cifre, i printr-o metod eficient din punct de vedere al timpului de executare,
determin i scrie n fiierul rez.dat trei valori naturale a cror sum este egal cu S, i al
cror produs este maxim. Cele trei valori vor fi scrise n ordine cresctoare pe prima linie a
fiierului rez.dat, separate prin cte un spaiu.
Exemplu: dac se citete valoarea 5, fiierul rez.dat va avea o linie cu coninutul 1 2 2.
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
Subiectul III
1.
Funcia verif primete prin intermediul a trei parametri, notai a, b i c, trei valori naturale
nenule, fiecare de maximum patru cifre. Funcia returneaz valoarea 1 dac cele trei valori
pot constitui laturile unui triunghi i valoarea 0 n caz contrar.
a) Scriei definiia complet a funciei verif.
(5p.)
b) Scriei un program C/C++ care citete de la tastatur ase valori naturale nenule, fiecare
de maximum patru cifre, apoi verific, utiliznd apeluri utile ale funciei verif, dac primele
trei numere citite pot constitui laturile unui triunghi i dac ultimele trei numere citite pot
constitui laturile unui triunghi; n caz afirmativ, programul afieaz pe ecran mesajul
congruente dac cele dou triunghiuri sunt congruente sau mesajul necongruente dac
cele dou triunghiuri nu sunt congruente; dac cel puin unul dintre cele dou triplete de
valori nu pot constitui laturile unui triunghi, programul va afia pe ecran mesajul nu. (5p.)
4.
Fiierul BAC.DAT conine pe prima linie, separate printr-un spaiu, dou valori naturale n i m
(2n1000, 2m1000), pe a doua linie n valori ntregi i pe a treia linie m valori ntregi.
Valorile de pe a doua i de pe a treia linie apar n fiier n ordine strict cresctoare, sunt
separate prin cte un spaiu i au cel mult 4 cifre fiecare.
Se cere afiarea pe ecran a dou valori, dintre cele aflate n poziii consecutive pe a treia
linie a fiierului, care determin intervalul nchis n care se afl un numr maxim de valori de
pe a doua linie a fiierului. Se va utiliza o metod eficient din punct de vedere al timpului de
executare i al spaiului de memorie utilizat. Se garanteaz c cel puin un numr aflat pe a
doua linie a fiierului aparine unuia dintre intervalele determinate de numerele de pe a treia
linie a fiierului.
Exemplu: dac fiierul BAC.DAT are coninutul 10 4
-1 1 3 4 5 6 10 15 16 117
alturat, programul va afia: 1 9
0 1 9 20
Explicaie: cele patru numere de pe a treia linie a fiierului determin trei intervale:
[0,1], [1,9], [9,20]; n intervalul [1,9] se afl 5 valori de pe a doua linie a fiierului,
acesta fiind numrul maxim de valori aflate n unul dintre cele trei intervale.
a) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
b) Scriei un program C/C++ care s rezolve problema conform metodei descrise.
(6p.)
Subiectul III
1.
3.
(4p.)
Subiectul III
1.
3.
Scriei n limbajul C/C++ definiia complet a subprogramului numar, cu exact doi parametri,
care primete prin intermediul parametrului x un numr natural nenul de cel mult 2 cifre, i
prin intermediul parametrului y un numr natural nenul de cel mult 9 cifre. Subprogramul
returneaz cel mai mare numr natural z pentru care exist un numr natural k astfel nct
z=xk i zy.
Exemplu: pentru y=18 i x=2 subprogramul va returna valoarea 16(=24<18).
(10p.)
4.
Pe prima linie a fiierului text DATE.TXT se afl dou numere naturale nenule n i m
(n3000, m3000), pe a doua linie un ir de n numere naturale, ordonate cresctor, avnd
fiecare cel mult 9 cifre, iar pe linia a treia un ir de m numere naturale, ordonate
descresctor, avnd fiecare cel mult 9 cifre. Numerele sunt desprite, n cadrul liniilor, prin
cte un spaiu.
a) Scriei programul C/C++ care citete numerele din fiier i afieaz, pe ecran, doar
numerele pare din cele dou iruri, ordonate cresctor. Programul nu va afia nimic dac nu
exist numere pare n cele dou iruri. Alegei o metod de rezolvare eficient ca timp de
executare.
Exemplu: dac fiierul are coninutul alturat, pe ecran se 5 8
va afia: 2 4 4 32 42 42 88 88
(6p.) 2 4 7 37 42
88 88 67 45 42 32 4 1
b) Descriei succint, n limbaj natural, metoda utilizat,
justificnd eficiena acesteia.
(4p.)
Subiectul III
1.
Se utilizeaz metoda backtracking pentru a genera toate cuvintele formate din dou litere
distincte din muimea {w,x,z,y} astfel nct niciun cuvnt s nu nceap cu litera x i
niciun cuvnt s nu conin litera w lng litera z. Cuvintele vor fi generate n ordinea wx,
wy, zx, zy, yw, yx, yz. Folosind aceeai metod se genereaz toate cuvintele de dou
litere distincte din mulimea {w,x,z,y,t} astfel nct niciun cuvnt s nu nceap cu litera
x i niciun cuvnt s nu conin litera w lng litera z. Care sunt a treia i a patra soluie
generat?
(6p.)
3.
4.
Pe prima linie a fiierului text DATE.TXT se afl un ir de cel mult 10000 de numere ntregi,
avnd cel mult 4 cifre fiecare. Numerele sunt desprite prin cte un spaiu.
a) Scriei un program C/C++ care citete numerele din fiier i afieaz pe ecran lungimea
maxim a unei secvene de numere din ir, cu proprietatea c oricare dou numere din
secven, aflate pe poziii consecutive, au pariti diferite. Pe a doua linie a ecranului,
programul va afia o secven de lungime maxim, valorile fiind desprite prin cte un
spaiu. Dac exist mai multe secvene de lungime maxim, se va afia una dintre ele,
oricare. Alegei o metod de rezolvare eficient ca timp de executare.
Exemplu: dac fiierul conine, n ordine, numerele 2 4 3 2 7 4 6 2 7 8 12, se va
afia:
5
4 3 2 7 4
(6p.)
(4p.)
Subiectul III
Aplicnd metoda backtracking pentru a genera toate permutrile celor n elemente ale unei
mulimi, o soluie se memoreaz sub forma unui tablou unidimensional x1,x2,,xn. Dac
sunt deja generate valori pentru componentele x1,x2,,xk-1, iar pentru componenta
curent, xk (1<k<n), a fost gsit o valoare convenabil, atunci se ncearc alegerea (4p.)
a. unei noi valori pentru componenta xk-1
b. unei valori pentru componenta xk+1
d. unei noi valori pentru componenta x1
c. unei noi valori pentru componenta xk
printf(%d,x-1);
3.
Scriei definiia complet a subprogramului divizor, cu trei parametri, prin care primete 3
numere naturale nenule cu cel mult 9 cifre fiecare i returneaz numrul divizorilor comuni
tuturor celor 3 numere.
Exemplu: dac numerele primite ca parametri sunt 24, 20 i 12, subprogramul returneaz
valoarea 3 (divizorii comuni sunt 1, 2 i 4).
(10p.)
4.
(4p.)
Subiectul III