Documente Academic
Documente Profesional
Documente Cultură
Tablouri unidimensionale
Parcurgeri (sume, numrri)
1.
Fiind dat un vector de numere ntregi, s se determine suma elementelor pozitive din vector.
Exemplu. Pentru vectorul 1, 23, 2, 4, 5 se va afia 30 (=23+2+5).
2.
3.
Scriei un program care tiprete elementele pare aflate pe poziii divizibile cu 3 dintr-un vector de numere
ntregi.
Exemplu. Daca vectorul iniial este (1,2,8,-4,7,9,120,53) se va afia 8.
4.
5.
6.
S se scrie un program care numr elementele pozitive, negative i respectiv nule dintr-un vector, parcurgndu-l
o singur dat.
Exemplu. n vectorul (-3,4,30,-1,0,-22,0,376) se gsesc 3 numere pozitive, 3 numere negative i 2
numere nule.
7.
8.
S se calculeze suma elementelor negative i de valoare par dintr-un vector de numere ntregi.
Exemplu. Suma cerut n cazul vectorului (12,-4,9,7,-5,31,-74,515, -33,-8) este 86.
9.
Fiind dat un vector v cu n elemente numere ntregi, scriei un program care calculeaz produsul i numrul
elementelor negative aflate pe poziii impare n vector.
Exemplu. n cazul vectorului (12,-4,9,7,-5,31,-74,515,-33,-8) avem 3
poziiile impare iar produsul lor este -12210.
componente negative pe
10. S se afieze poziia pe care apare primul element pozitiv dintr-un vector citit de la tastatur.
Exemplu. n vectorul (-5,-8,-6,-41,-9,-1,-475,-12,-4) nu exist nici un numr pozitiv, iar n vectorul
(-4,9,874,-54) primul numr pozitiv se gsete pe poziia 2.
11. Se d un vector v cu n elemente numere ntregi. S se copieze ntr-un alt vector u elementele pozitive ale
vectorului iniial.
Exemplu. Dac v=(-5,8,-6,0,-9,1,-475,12,4) atunci u=(8,1,12,4).
44
Tablouri
12. Se consider un vector A cu m elemente i dou numere reale P, Q. S se scrie un program care copiaz ntr-un
vector B toate elementele din A aflate n intervalul (P,Q) n ordinea n care apar ele n vector.
Exemplu. Dac A=(12,-4,9,7,-5,31,-74,515,-33,-8) i P=-10, Q=9 atunci B=(-4,7,-5,-8).
13. Se consider un vector A cu m elemente i dou numere reale P, Q. S se scrie un program care copiaz ntr-un
vector B toate elementele din A aflate n intervalul (P,Q) n ordinea invers apariiei lor n vectorul A.
Componentele vectorului B vor fi generate direct n aceast ordine!
Exemplu. Dac A=(12,-4,9,7,-5,31,-74,515,-33,-8) i P=-10, Q=9 atunci B=(-8,-5,7,-4).
14. Se d un vector de numere reale. S se determine procentul de numere din vector mai mici (strict) dect MA i
procentul de numere din vector mai mari (strict) dect MA, unde am notat cu MA media aritmetic a componentelor
din vector.
Exemplu. Dac vectorul este (-2,13,34.75,125,3.5,8,61) atunci media aritmetic este 34.75, numerele
mai mici strict dect aceast medie sunt 2, 13, 3.5, 8 (adic 57.14%), iar numerele strict mai mari dect medie
sunt 125, 61 (adic 28.57%).
15. Se consider doi vectori cu componente reale. Se citete un numr natural k. S se intercaleze n primul vector,
dup poziia k, tabloul al doilea.
Exemplu. Dac x=(1,2,3,4,5,6,7), y=(9,10,11) i k=4 dupa intercalare
x=(1,2,3,4,9,10,11,5,6,7).
16. Scriei un program care citete de la tastatur cele n numere reale ce compun vectorul a i apoi cele m numere
reale ce constituie componentele vectorului b i afieaz pe ecran cte dintre componentele vectorului a sunt
strict mai mici dect toate componentele vectorului b.
Exemplu. Dac a=(4,8,1,9,5,11,3,43,6,20) i b=(9,9,6,9,9,8, 6,9), atunci numrul cutat este 4,
deoarece valorile 4,1,5 i 3 sunt mai mici dect toate elementele lui b.
17. S se calculeze i afieze media aritmetic i cea armonic a componentelor unui vector x de numere reale. Prin
medie armonic a vectorului x=(x1,x2,,xn) se nelege raportul:
n
1
1
1 .
...
x1 x 2
xn
Exemplu. Pentru x=(1,8,4,21,3,56,9) media aritmetic este 14.57 iar media armonic este 3.71.
18. Scriei cte un program care s realizeze inversarea unui vector:
a) n acelai vector i fr a utiliza un vector suplimentar;
b) ntr-un alt vector.
Exemplu. Dac vectorul iniial este (1,2,3,4) cel final va fi (4,3,2,1).
19. Fie v un vector de numere ntregi. S se construiasc un vector w, astfel nct wi= numrul de apariii ale lui
vi n vectorul v.
Exemplu. Pentru v=(1,5,2,1,5,7,2,1,5) se obine w=(3,3,2,3,3,1, 2,3,3).
20. Fiind dat un vector v cu n elemente numere ntregi, s se construiasc ali doi vectori: primul va conine numai
elementele pare, iar al doilea numai elementele impare ale vectorului iniial.
44
Tablouri
Exemplu. Daca vectorul iniial este v=(1,64,2,5,23,9,6,11) se vor obine vectorii (64,2,6) i respectiv
(1,5,23,9,11).
21. S se calculeze componentele irului Y y1, y2,..., yn tiind c yi, i 1,2,..., n este media aritmetic a
componentelor pozitive de rang mai mic sau egal cu i ale vectorului X, n cazul n care exist componente
pozitive, respectiv -1 n caz contrar.
Exemplu. Pentru x=(-2,-3,71,43,-3,1,-4,8,12) se obine y=(-1,
-1,71,57,57,38.33,38.33,30.75,27)
22. S se verifice dac un vector conine elemente n ordinea: negativ, negativ, pozitiv, negativ, negativ, pozitiv, .
Exemplu. (-1,-2,3,-5,-6,2,-8) are aspectul cerut (-1,2,-3,-4) nu are aspectul dorit.
23. Fie dat un vector x x1, x 2, x3,..., x n . S se modifice vectorul astfel nct n final s avem:
a) x x2, x3,..., x n, x1
b) x x n, x1, x 2,..., x n 1
c) x x 2, x1, x4, x3,..., x n, x n 1 .
24. Un tablou a cu elemente n mulimea 0,1 se numete alternativ dac pentru orice i, a i a i 1 0 . S se
scrie un program care s decid dac un astfel de tablou citit de la tastatur este alternativ sau nu.
Exemplu. Vectorul (1,0,0,3,0,0,0,5) este alternativ ns vectorul (1,0,0,3,4,0,0,0,0,0,3) nu este
alternativ.
25. Se d numrul natural n>1 i vectorul x x1, x 2,..., x n s se verifice dac numerele date sunt n progresie
aritmetic sau geometric i s se dea un mesaj corespunztor.
Exemplu. Vectorul (2,4,6,8,10) este n progresie aritmetic iar vectorul (2,10,50,250,1250,6250) este
n progresia geometric.
26. Fie un vector x de numere ntregi. S se formeze un vector y de numere ntregi, n care yi s fie restul
mpririi lui xi la suma cifrelor lui xi . Restul mpririi se va determina folosind:
a) operatorii al limbajului;
b) scderi repetate.
Exemplu. Pentru x=(12,5,123,85,7,33,12,8,26) se va obine y=(0,0,3,7,0,3,0,0,2).
27. S se afieze elementele prime ale unui ir de n numere ntregi citit de la tastatur.
Exemplu. Pentru vectorul (101,10,3301,1021,5,15,7,91,37,29) se va afia 101, 3301, 1021, 5, 7, 37,
29.
28. Memorai n primele n componente ale unui vector x de numere ntregi, primele n numere prime mai mari dect
999, care citite invers, sunt tot numere prime.
Exemplu. Pentru n=5 se obin numerele 1009, 1021, 1031, 1033, 1061.
29. Cte elemente din tabloul x=(x1,x2,,xn) de numere ntregi au exact k divizori proprii.
Exemplu. Pentru vectorul (1,584,165,45,102,65,47,312,125,945) i k=6 se va afia 3 (numerele 584,
165 i 102 au exact 6 divizori proprii).
45
Tablouri
30. La codificarea unui text scris cu cel mult primele n litere mici ale alfabetului englez, se folosesc cele mai mici n
numere naturale care au exact 3 divizori naturali. Pentru litera a se folosete cel mai mic numr cu proprietatea
respectiv, pentru b cel mai mic numr diferit de cel folosit pentru a, i aa mai departe.
a) S se afieze, separate prin cte un spaiu, cele n numere folosite la codificare.
b) Pentru un text dat de la tastatur, se cere s se afieze codificarea textului, fiecare caracter fiind nlocuit
cu numrul corespunztor i orice dou coduri consecutive vor fi separate printr-un spaiu.
Exemplu. Pentru n=5 i textul abeaab se va afia a) 4, 9, 25, 49, 121; b) 4 9 121 4 4 9.
31. S se calculeze cmmdc(x1,x2,x3,,xn).
Exemplu. cmmdc(2940,882,70,182) este 14.
32. Cte numere perfecte exist n tabloul x=(x1,x2,,xn) de numere ntregi citite de la tastatur. Un numr este
perfect dac este egal cu suma divizorilor si mai mici dect el.
Exemplu. Pentru vectorul (10,5,6,12,8128,5,0,28) se va afia 3 (deoarece 6, 8128 i 28 sunt numere
perfecte).
33. S se afieze valorile ntregi p i q, prime ntre ele astfel nct
i 1, n ,
p a1 a2
...
q b1 b2
an
, numerele ntregi ai, bi ,
bn
dndu-se de la tastatur.
44
Tablouri
40. S se scrie un program care insereaz ntre oricare dou elemente ale vectorului x de numere reale, media
aritmetic a vecinilor si.
Exemplu. Dac iniial x=(2,5,10,3,7) dup prelucrare x=(2,3.5,5, 7.5,10,6.5,3,5,7).
41. Fiind dat un vector cu n numere reale, s se determine valoarea expresiei e n fiecare din cazurile:
a) e x 1 x 2 ... x n
Exemplu. Pentru x=(10,2,31,335,12,45,26) => e=461
b) e x 1 x 3 ... x
Exemplu. Pentru x=(10,2,31,335,12,45,26) => e=79
c) e x 1 * x 2 * x 3 * ... * x n
Exemplu. Pentru x=(10,2,3,5,12,4) => e=14400
d) e x 1 * x 3 * ...x
Exemplu. Pentru x=(10,2,3,5,12,4) => e=360
e) e= suma cuburilor componentelor negative din vector;
Exemplu. Pentru x=(10,2,-3,-5,12,45,-26) => e=-17728.
f) e=media aritmetic a componentelor impare din vector.
Exemplu. Pentru x=(10,2,3,5,12,45,26) => e=17.6666.
42. Fie a1,a2,,an, n numere reale. Calculai suma
S a12 a22 a32 ... a2n .
xi
.
xj
i 2k
j 2k 1
45
Tablouri
a1 a 2
a
... n .
1
2
n
Exemplu. Pentru vectorul a=(45,8,1,98,6) se obine suma s=75.03333.
47. S se determine numrul de componente din vectorul C=(C1,C2,C3,,Cn) aflate ntre dou limite date a i b i
media aritmetic a componentelor aflate n afara intervalului.
Exemplu. Dac C=(2,8,4,6,9,10,3,5,2,10) iar a=3 i b=7 se vor afia valorile 4 i respectiv 6.8333.
48. Se dau doi vectori A, B de lungimi egale cu elemente numere ntregi. S se scrie un program care s calculeze
media aritmetic a tuturor elementelor din A pentru care componentele respective din B sunt numere negative.
Exemplu. Dac A=(1,2,3,4,5,6,7) iar B=(2,5,-3,6,-9,-5,10) se obine media 4.6666.
49. Dndu-se un vector X (citit de la tastatur) s se calculeze vectorul Y tiind c
y1
yn
x1 x 2
2
x n 1 xn
2
y2
x1 x 2 x 3
yn 1
x n 2 xn 1 xn
3
k 3, n 2 .
ui
1
1
1
.
3i 2 3i 1 3i
51. Se citesc n numere naturale. Aceste numere se mpart n grupe astfel nct n cadrul fiecrei grupe toate numerele
au acelai numr de cifre 1 n reprezentarea n baza 2. Se cere s se afieze mediile aritmetice a numerelor din
fiecare grup.
Exemplu. Pentru n=10 i numerele 92,60,47,16,52,45,65,7,8,87 se obin urmtoarele medii aritmetice: 12,
65,29.5,65.66,67.
44
Tablouri
52. S se calculeze ultima cifr a numrului x[1]+x[2]++x[n], unde x este un vector cu n componente numere
naturale citite de la tastatur.
Exemplu. Pentru n=10 i vectorul x=(92,60,47,16,52,43,65,7,8,87) se obine cifra 7.
53. S se calculeze ultima cifr a numrului x 1 x 2 * x 3 *...* x n , unde x este un vector cu n componente numere
naturale citite de la tastatur.
Exemplu. Ultima cifr a expresiei 5374*683*37*83 este 9.
54. S se scrie un programul pentru calculul coeficienilor de corelaie a dou variabile aleatoare discrete X i X,
unde:
X ia valorile: X[1], X[2], , X[n],
Y ia valorile: Y[1], Y[2], , Y[n],
X i
MX Y i MY
i1
RXY
X i MX 2
i1
Y i
i1
MY 2
45
Tablouri
Exemplu. La o rulare a acestui program s-au obinut urmtoarele rezultate ( n a fost generat i el aleator): faa 1 de
4704 ori; faa 2 de 4603 ori; faa 3 de 4596 ori; faa 4 de 4717 ori; faa 5 de 4655 ori; faa 6 de 4714 ori.
Perechile care ndeplinesc condiia de la punctul b) sunt aadar (5,4655) i (6,4714).
58. Se citesc de la tastatur cele n elemente ale unui ir dat de numere ntregi. S se afieze toate perechile de
elemente ale irului (nu neaprat consecutive) cu proprietatea c ambele elemente ale perechii au aceeai sum a
cifrelor.
Exemplu. Pentru vectorul (12,9,54,32,222,49,34,6,1,91) se vor afia perechile (9,54) i (222,6).
59. S se afieze toate tripletele de numere cresctoare de pe poziii consecutive din vectorul x de numere reale.
Exemplu. Pentru x=(2,9,41,61,6,24,84,1,21) se vor afia tripletele (2,9,41),(9,41,61) i
(6,24,84).
60. Fiind dat un vector de numere ntregi, s se afieze de cte ori gsim dou elemente aflate pe poziii consecutive
n vector care s fie egale ntre ele.
Exemplu. Pentru vectorul (1,2,2,3,4,4,4,5,6) se va afia valoarea 3.
61. Fie un vector x de numere ntregi. S se afieze toate tripletele de numere consecutive din x, n care al treilea
numr este restul mpririi primului la al doilea.
Exemplu. Pentru vectorul (21,7,15,4,3,1,45,7,3,1) tripletele cerute sunt (15,4,3), (4,3,1),
(45,7,3) i (7,3,1).
62. Fie un vector x de numere ntregi. S se afieze toate tripletele de numere consecutive din x, n care al treilea este
media aritmetic dintre primul i al doilea.
Exemplu. Pentru vectorul (2,9,3,6,10,3,7,5,6,5) tripletele cerute sunt (9,3,6), (3,7,5) i (7,5,6).
63. Fie un vector x de numere ntregi. S se afieze toate tripletele de numere consecutive din x, n care al treilea este
media geometric dintre primul i al doilea.
Exemplu. Pentru vectorul (1,3,2,5,125,25,4,8,33,8,7) singurul triplet este (5,125,25).
64. Fie un vector x de numere ntregi. S se afieze toate perechile de numere consecutive din x, cu proprietatea c al
doilea este egal cu suma cifrelor primului numr.
Exemplu. Pentru vectorul (124,7,12,3,4,4) perechile cerute sunt (124,7), (12,3), (4,4).
65. Fie un vector x de numere ntregi. S se afieze toate tripletele de numere consecutive din x, cu proprietatea c
ele pot reprezenta laturile unui triunghi.
Exemplu. Singurul triplet din vectorul (12,45,10,5,9,4,51) este (10,5,9).
66. Fie un vector x de numere ntregi. S se afieze toate perechile de numere consecutive din x, cu proprietatea c al
doilea reprezint restul mpririi primului numr la suma cifrelor sale.
Exemplu. Pentru vectorul (124,5,12,44,4,9) se afieaz perechile (124,5) i (44,4).
67. Fie un vector x de numere ntregi. S se afieze toate perechile de numere consecutive din x, cu proprietatea c al
doilea reprezint numrul de apariii ale cifrei 3 n ptratul primului.
Exemplu. Pentru vectorul (361,2,5,1156,4,0) perechile afiate vor fi (361,2),(1156,4),(4,0).
68. Fie un vector x de numere ntregi. S se afieze toate perechile de numere x i, x i 1 cu proprietatea c
x i x i 1 i suma cifrelor lui x i este mai mic dect suma cifrelor lui x i 1 .
44
Tablouri
a x2 b x c 0 ,
unde a,
a x2 b x c 0 ,
unde a,
45
Tablouri
44
Tablouri
88. Numerele de la 1 la n sunt aezate n ordine cresctoare pe circumferina unui cerc, astfel nct n ajunge lng 1.
ncepnd cu numrul s, se elimin din cerc numerele din k n k, dup fiecare eliminare cercul strngndu-se.
Care va fi numrul ce va rmne ultimul?
Exemplu. Dac vectorul iniial este (1,2,3,4,5,6,7,8,9,10) iar k=3, s=1 se vor elimina pe rnd numerele
3, 6, 9, 2, 7, 1, 8, 5, 10 i rmne numrul 4.
89. Aceeai problem ca la problema anterioar dar numerele nu se elimin, ci doar se marcheaz, pn unul din ele
va fi marcat de 2 ori. Cte numere au rmas nemarcate?
Exemplu. Dac vectorul iniial este (1,2,3,4,5,6,7,8,9,10), pasul este k=4 iar s=1, se vor marca pe rnd
numerele 4, 8, 2, 6, 10 deci vor rmne 5 numere nemarcate.
90. Se citete de la tastatur un numr natural n. Se cere s se afieze urmtoarele valori:
n e1 1 e2 1... e m 1
n
n
p1 1 p2 1... p m 1
p1 p2...p m
p1e1 1 1 p2e2 1 1
pe m 1 1
... m
p1 1
p2 1
pm 1
Sn = x1x2x3xn.
Indicaie. Se observ ca sumele de mai sus sunt date de relaiile lui Vieta n polinomul (x-x1)(x-x2)(x-xn)
Exemplu. Pentru n=4, x1=4, x2=5, x3=-1, x4=2 se obin sumele S1=10, S2=27, S3=2, S4=-40.
92. Se d un ir de n cifre a=(ai), 1in50. S se scrie un program care calculeaz:
S=a1a2an + a2a3an-1ana1 + + ajaj+1ana1a2aj-1 + + =ana1a2an-2an-1.
45
Tablouri
95. Determinai ctul mpririi polinomului P x a0x n a1x n 1 ... an 1x an prin x , folosind schema
lui Horner. Reamintim c schema lui Horner const n urmtorul procedeu:
- Se pun coeficienii polinomului pe prima linie a unui tabel, urmai de valoarea ;
- Se copiaz (coboar) primul coeficient pe linia a doua;
- n continuare, linia a doua se completeaz recurent: pentru a obine o nou valoare, se nmulete cu
ultima valoare determinat i se adun cu numrul aflat deasupra poziiei curente (pe prima linie).
Ultima valoare obinut este restul mpririi celor dou polinoame, iar valorile anterioare, n ordine, reprezint
coeficienii ctului.
Exemplu. Pentru P(x)=2x3-3x2+x-2 i =4 se obine ctul 2x2+5x+21 i restul 82:
2
-3
-2
21
82
=4
96. Se citete de la tastatur un numr natural n. Se cere s se descompun n factori primi acest numr folosind doi
vectori: unul pentru memorarea factorilor primi, iar al doilea cu exponenii corespunztori acestor factori.
Exemplu. Pentru n=4712 cei doi vectori vor fi p=(2,19,31), e=(3,1,1), ceea ce reprezint urmtoarea
descompunere n factori primi: 23*191*311.
97. Se consider irul 1, 2,1, 3,2,1, 4,2,2, 5,4,3,2,1, 6,2,2,3,3,3,.... obinut din irul
numerelor naturale prin nlocuirea fiecrui numr natural printr-un grup de numere, dup urmtoarele reguli:
numrul prim p este nlocuit prin numerele p, p-1, p-2,..., 3, 2, 1, iar numrul compus k este nlocuit
prin k urmat de toi divizorii si proprii, un divizor d repetndu-se de d ori. Dndu-se numrul natural n se cere
s se tipreasc primele n numere din irul dat.
Exemplu. Dac n=10 irul generat va fi (1,2,1,3,2,1,4,2,2,5).
98. Pe un traseu circular se gsesc n depozite de morcovi. Se dau distanele dintre dou depozite consecutive ( 1->2,
2->3, , n-1->n, n->1). Fiecare dintre depozite conine o anumit cantitate de morcovi (posibil zero).
Numrul total de morcovi din cele n depozite ajung unui iepura exact ct poat parcurge tot traseul o singur
dat. Se consider c pentru parcurgerea unui km iepuraul are nevoie s mnnce un morcov pentru a avea
energie suficient. Iepuraul poate mnca orici morcovi. S se determine de la ce depozit i n ce direcie va
pleca iepuraul, astfel nct el s poat reveni la locul de plecare.
Exemplu. Pentru n=5, distanele (12,3,61,10,4) i numrul de morcovi din depozite (0,20,40,0,30) se va
pleca de la depozitul 3 spre depozitul 2, sau de la depozitul 5 spre depozitul 1.
99. Considerm irul de numere naturale:
1; 1,1;
2,1;
1,2, 1,1;
definit astfel:
-
plecnd de la ultimul grup cunoscut, urmtorul grup se construiete prin indicarea perechilor de forma
(factor de repetiie, numr care se repet) referitoare la coninutul grupului de la care s-a plecat. Astfel,
din grupul 1,1,1,2,2,1 se obine 3,1,2,2,1,1 deoarece apar n ordine 3 de 1, 2 de 2 i 1 de 1.
44
Tablouri
100. Cnd dorim s listm o brour cu mai multe foi ndoite la mijloc ordinea de listare este alta dect de obicei. O
astfel de brour are patru pagini pe foaie, cu dou pe fa i dou pe spate. Cnd aezm toate aceste foi n
ordine i ndoim teancul n dou, paginile apar n ordinea corect, ca ntr-o carte obinuit. Problema cere s se
scrie un program care, citind numrul de pagini ce trebuiesc tiprite, genereaz ordinea de tiprire. Eventualele
pagini goale ce trebuie s fie adugate se vor aduga la sfritul crii.
Exemplu. Pentru n=10 paginaia este urmtoarea:
foaia 1: faa: , 1; spatele: 2, ;
foaia 2: faa: 10, 3; spatele: 4, 9
foaia 3: faa: 8, 5, spatele: 6, 7.
101. Un numr de n copii aezai pe un cerc joac urmtorul joc. Pe rnd fiecare din copii spune un numr dup
urmtoarea regul:
-
dac unui copil i vine rndul s spun un numr divizibil cu 5, atunci el spune PAS i sensul jocului
se schimb, iar dac numrul este divizibil cu 7 sau are ultima cifr 7 sensul jocului se schimb
deasemenea.
Exemplu. n=4
copilul 1 spune 1
copilul 2 spune 2
copilul 3 spune 3
copilul 4 spune 4
copilul 1 spune PAS se schimb
sensul
copilul 4 spune 6
copilul 3 spune 7 se schimb
sensul
copilul 4 spune 8
copilul 1 spune 9
copilul 2 spune PAS se schimb
sensul
copilul 1 spune 11
copilul 4 spune 12
copilul 3 spune 13
copilul 2 spune 14 se schimb
sensul
copilul 3 spune PAS se schimb
sensul
copilul 2 spune 16
copilul 1 spune 17 se schimb
sensul
copilul 2 spune 18
copilul 3 spune 19
.a.m.d
S se scrie un program, care citete de la tastatur numrul de copii care vor s joace acest joc
i numrul de pai ai jocului i afieaz copiii care au spus PAS. Dac un copil spune PAS de
mai multe ori, el se va afia o singur dat.
Exemplu. Pentru n=10 (copiii) i numrul de pai np=50 se va afia valoarea 2 (doi copii nu au
spus PAS i anume 2 i 8).
102. De la tastatur se citesc cele N elemente ale unui ir de numere. S se scrie un program care
interschimb dou secvene de lungimi L1 i L2 care ncep din poziiile p1, respectiv p2.
Elementele care nu sunt cuprinse n cele dou secvene pot fi mutate astfel nct
interschimbarea s se poat face. Nu se vor folosi vectori auxiliari.
Exemplu. Pentru n=9, irul 1,2,3,4,5,6,7,8,9, P1=2, L1=2, p2=6, L2=3, rezultatul este
1,6,7,8,4,5,2,3,9.
103. Generarea permutrilor. S se scrie un program care genereaz toate permutrile mulimii
{1,2,,n} folosind ordinea lexicografic a acestora.
45
Tablouri
Indicaii. Se pleac de la cea mai mic permutare n sens lexicografic adic (1,2,,n). La un
anumit pas, avnd construit permutarea p=(p1,p2,,pn), pentru a determina urmtoarea
permutare se determin acel indice i pentru care
pi<pi+1
pi+1>pi+2>>pn.
Urmtoarea permutare se obine prin nlocuirea lui pi cu cel mai mic dintre elementele pi+1,
pi+2, , pn care este mai mare dect pi, urmat de inversarea ordinii ultimelor n-i elemente,
nct ele s apar n ordine cresctoare. Dac nu exist nici un indice i ca mai sus nseamn c
s-a obinut permutarea cea mai mare, {n,n-1,,1} i algoritmul se ncheie.
Exemplu. Pentru n=4 permutrile sunt generate n urmtoarea ordine: (1,2,3,4),(1,2,4,3),
(1,3,2,4),(1,3,4,2),(1,4,2,3),(1,4,3,2),(2,1,3,4),(2,1,4,3),(2,3,1,4),(2,3,4,1),(2,4,1,3) etc.
m
104. Generarea combinrilor. Se cere s se genereze toate cele C n submulimi de m elemente ale
mulimii {1,2,3,,n}, cu proprietatea c oricare dou astfel de submulimi difer prin natura
elementelor (nu i prin ordinea lor). Se va folosi generarea n ordine lexicografic a acestor
submulimi.
Indicaii. Se vor genera deci toi vectorii v=(v1,v2,,vm) care satisfac relaia
1<=v1<v2<<vm<=n.
Se pleac de la vectorul cel mai mic n sens lexicografic adic (1,2,,m). La un anumit pas, fiind
dat vectorul v=(v1,v2,,vm), vectorul care-i urmeaz n sens lexicografic se determin astfel: se
determin cel mai mare indice i satisfcnd relaiile
vi<n-m+i
vi+1=n-m+1,,vm-1=n-1, vm=n.
Urmtorul vector va fi v=(v1,v2,,vi-1,vi+1,vi+2,,vi+n-i+1). Dac nu exist nici un astfel de
indice i nseamn c v=(n-m+1,n-m+2,,n) adic au fost generate toate combinrile de m elemente
ale mulimii {1,2,,n}.
Exemplu. Pentru n=5 i m=3 combinrile se vor genera n urmtoarea ordine: (1,2,3) (1,2,4) (1,2,5)
(1,3,4) (1,3,5) (1,4,5) (2,3,4) (2,3,5) (2,4,5) (3,4,5).
m
105. Generarea combinrilor. Se cere s se genereze toate cele C n submulimi de m elemente ale
mulimii {1,2,3,,n}, cu proprietatea c oricare dou astfel de submulimi difer prin natura
elementelor (nu i prin ordinea lor). De aceast dat se va folosi reprezentarea submulimilor
unei mulimi prin vectori caracteristici. Astfel o submulime S a mulimii A={1,2,,n} va fi
reprezentat prin vectorul caracteristic v=(v1,v2,,vn) unde vi=1 dac i face parte din
mulime, respectiv vI=1 dac i nu aparine mulimii.
Vectorii v se vor genera n ordine lexicografic, plecnd de la vectorul v=(0,0,,0,1,1,,1) n
care primele n-m componente sunt nule iar urmtoarele m componente sunt egale cu 1.
Exemplu. Pentru n=5 i m=3 combinrile se genereaz n acest caz n ordinea (3,4,5) (2,4,5)
(2,3,5) (2,3,4) (1,4,5) (1,3,5) (1,3,4) (1,2,5) (1,2,4) (1,2,3).
m
44
Tablouri
cutm cel mai mare indice i cu proprietatea c ai poate fi mrit (adic mcar una din valorile
ai+1, ai+2,,n este disponibil). Dac exist un astfel de indice, aranjamentul urmtor este
obinut din a prin nlocuirea elementelor ai, ai+1, , am cu cele mai mici numere disponibile
n ordine cresctoare.
Exemplu. Pentru n=5 i m=4 aranjrile se vor afia n urmtoarea ordine: (1,2,3,4) (1,2,3,5)
(1,2,4,3) (1,2,4,5) (1,2,5,3) (1,2,5,4) (1,3,2,4) (1,3,2,5) (1,3,4,2)
(1,3,4,5) (1,3,5,2) etc.
107. Un numr de n (n100) celule sensibile sunt aezate n cerc, fiecare comunicnd cu cei doi
vecini ai si. O celul se poate gsi n dou stri: excitat sau linitit. Dac o celul este
excitat la un moment dat atunci ea emite un semnal care ajunge dup un timp scurt (s zicem
o milisecund) la cele dou celule vecine cu ea. Fiecare celul este excitat atunci i numai
atunci cnd la ea ajunge un semnal de la una dintre celulele vecine; dac semnalele ajung
deodat din amndou prile, atunci ele se anuleaz i celula nu se mai excit. Dndu-se o
configuraie iniial de celule excitate i linitite, se cere s se determine configuraia dup n
pai.
Exemplu: Dac configuraia iniial este 10011010100110101001101 atunci configuraia
dup 10 pai va fi: 10101010000000001010101.
Maxime i minime
108. Se dau doi vectori x, y cu n componente (1n100). Primul conine nume de elevi, iar al
doilea notele la informatic. Se cere s se afieze numele elevilor cu nota cea mai mic. Dac
mai muli elevi au aceast not minim se vor afia toi.
Exemplu. Dac x=(Ionescu, Iliescu, Antonescu, Popescu, Ptrulescu,
Piscupescu) iar y=(6,5,9,10,5,7) se va afia: Iliescu, Ptrulescu.
109. S se realizeze programul pentru determinarea elementului maxim i a tuturor poziiilor unde
apare el ntr-un vector A de numere ntregi cu dimensiunea N.
Exemplu. Elementul maxim din vectorul (2,7,3,57,2,50,57,57,4,9) este 57 i se
gsete pe poziiile 4, 7, 8.
110. S se determine elementele cu numr maxim de divizori i elementele cu numr minim de
divizori dintr-un vector x de numere ntregi.
Exemplu. Pentru vectorul x=(59,748,15,665,12,4,7,99,68,74) componentele cu
numr minim de divizori (2) sunt 59 i 7 iar cu numr maxim de divizori este numrul 748
(12 divizori).
111. Se dau coordonatele a n puncte n plan (xi,yi), i 1, n . S se afieze lungimea celui mai
lung segment i coordonatele capetelor acestui segment.
Exemplu. Dac punctele sunt (1,8), (4,5), (4,2), (4,9), (3,9) atunci segmentul de
lungime maxim va avea capetele de coordonate (4,2) respectiv (3,9) i va avea lungimea
7.07.
112. Dndu-se un vector cu n componente numere ntregi, s se determine cele mai mici trei valori
pozitive i cele mai mari trei valori negative. Nu se va folosi nici o metod de sortare i nu se
vor modifica valorile componentelor din vector.
45
Tablouri
Exemplu. Dac vectorul dat este (-37,87,84,-65,-18,-90,93,-76,91, -3,-6,14,41,-27,61,-49,-45,51,62, 38) atunci cele mai mici trei valori pozitive sunt: 38,
41, 51 iar cele mai mari trei valori negative: -14, -6, -3.
113. Se d un vector coninnd litere. S se afieze frecvena apariiei fiecrei litere n vector (nu se
face distincie ntre literele mari i cele mici) i literele cu cea mai mare frecven, respectiv
cea mai mic frecven de apariie.
Exemplu. Pentru vectorul x=(A,c,e,a,s,t,a,e,
s,t,e,o,P,R,O,B,L,E,M,A,I,n,
t,e,r,e,s,a,n,t,a,d,e,L,U,C,
R,U,C,u,v,e,c,t,o,r,s,I,a), litera care apar cel
mai des n vector este E iar literele cele mai rar ntlnite sunt B, D, M, P, V.
114. Se citete un vector cu n componente numere ntregi. S se determine cel mai mare numr
raional subunitar, n care numitorul i numrtorul aparin tabloului.
Exemplu. X=(2,1,3) => 2/3
115. Se citete de la tastatur un ir cu n elemente numere naturale, nu neaprat distincte. S se
afieze elementul care apare de cele mai multe ori n ir. Dac exist mai multe astfel de
elemente, se vor afia toate.
Exemplu. Pentru n=8 i elementele (23,7,11,7,19,7,11,11) se vor afia elementele 7 i
11 care apar fiecare de cte trei ori.
116. Se consider n stlpi de nlimi h(1), h(2), , h(n) metri. La baza fiecrui stlp se afl
cte un melc codificat prin numrul stlpului. Fiecare melc i urc ziua p(i) metri i coboar
noaptea q(i) metri (p(i)>q(i)). S se afieze melcii n ordinea n care ating vrfurile
stlpilor. Se va considera c melcii care ajung n aceeai zi n vrf ajung simultan.
Exemplu. Pentru h=(10,5,8,3,25,7,9), p=(2,3,2,4,5,3,2), q=(1,2,1,3,1,2,0)
melcii sosesc n urmtoarea ordine: 4, 2, 6, 7, 5, 3, 1.
117. Se d un vector cu n componente numere ntregi. S se determine diferena maxim dintre
dou elemente consecutive ale acestui vector.
Exemplu. Dac x=(15,36,94,15,64,32,245,11,260,33,56) diferena maxim este
249.
118. Se citesc vectorii A cu n elemente i B cu m elemente. S se determine care elemente din A sunt
mai mici dect toate elementele din B.
Exemplu: Dac a=(4,8,1,9,5,11,3,43,6,20) i b=(9,9,6,9,9,8, 6,9), atunci
numrul cutat este 4, deoarece valorile 4,1,5 i 3 sunt mai mici dect toate elementele lui b.
119. S se determine vectorul y cu componentele yi,i 1,2,..., n , unde yi este poziia
valorii minime din irul xi,xi 1,..., x n .
Exemplu. Pentru vectorul x=(9,4,3,8,5,1,6,2,7,10) se obine vectorul
y=(6,6,6,6,6,6,8,8,9,10).
120. Se citete de la tastatur un vector de n numere ntregi i o poziie p. Toate elementele de la
dreapta poziiei p se adun la elementele aflate la stnga poziiei p la aceeai distan fa de
poziia p, ele devenind nule. Un element aflat la dreapta poziiei p i care nu are corespondent
44
Tablouri
max
x 1 x 2 ... x i
,y i
i
daca y i 0
max x ,y 1 y 2 ... y i
i
i
daca y i 0
zi
45
Tablouri
Yi X X X
i
1 2
i
x1,x2,...,x n i
y1,y2,...,y n . S se calculeze vectorul c astfel:
128. Se d n N i vectorii x
x 1 x 2 ... x i
daca x i y i 0
daca x i y i 0 , i=1,2,,n.
daca x i y i 0
n N i
xi,yi R pentru
i 1, n
s se calculeze:
E x1 y1 x2 y2 ... xn y n
xi
y *y 1
i
i
i ci
daca xi yi E
daca xi yi E .
daca xi yi E
x1,x2,...,x n i
y1,y2,...,y n , xi,yi R , i 1, n i se cere s se calculeze i s
n N i vectorii x
44
Tablouri
daca xi yi
daca xi yi , i=1,2,,n.
daca xi yi
x1 x 2 ... x i
zi max0, x i, y i
x 1 y 1 x 2 y 2 ... x i y i
daca i m
daca i m .
daca i m
x1 x2 ... xi
zi 0
max yi , yi 1 ,.., yn
daca xi yi
daca xi yi
daca xi yi
45
Tablouri
135. Cte din elementele vectorului x=(x1,x2,,xn) de numere ntregi sunt numere Fibonacci.
Exemplu. n vectorul x=(5,10,1,7,9,8,1,6,55,19) sunt 5 numere Fibonacci.
136. Scriei un program care verific dac o valoare x se gsete sau nu printre cele n elemente ale
unui ir dat, afind un mesaj corespunztor. Valorile lui n i x, precum i elementele irului
se citesc de la tastatur. Se vor considera urmtoarele situaii:
a) Se consider irul nesortat;
b) irul se consider sortat iar cutarea se va face folosind algoritmul de cutare binar.
44
Tablouri
Subiruri de elemente
142. Se d un vector de numere ntregi pozitive de cel puin dou cifre fiecare. S se determine cea
mai lung subsecven de elemente consecutive prime, ale cror oglindire sunt tot numere
prime.
Exemplu. Dac vectorul este (51,48,11,971,44,19,181,751,347, 33,929,359)
secvena cerut este 181, 751, 347.
143. Se d un vector de numere ntregi. Se cere s se afieze subsecvena palindromic de lungime
maxim. (elementele subsecvenei sunt elemente consecutive n vector).
Exemplu. Dac vectorul dat este (1,12,31,12,1,5,13,27,4,4,27,13,
9,26,9,13,27,4) atunci secvena palindromic de lungima maxim este
(4,27,13,9,26,9,13,27,4).
144. Se d un ir de numere. Gsii un subir de lungime maxim care ncepe i se sfrete cu
acelai numr.
Exemplu. Pentru vectorul (57,55,24,9,50,74,3,98,4,86,48,75,88,
86,29,88,16,82) secvena cerut este (86,48,75,88,86).
145. Se dau dou iruri de numere ntregi x cu nx elemente i y cu ny elemente, unde nx>ny. S se
decid dac y este un subir al lui x, adic dac exist un numr k astfel nct
x k y1, x k 1 y2, ... , x k ny 1 y ny .
45
Tablouri
146. Definim noiunea de pant ca fiind o secven de elemente consecutive din vectorul A astfel
nct a[i]=a[i-1]+1. S se determine panta de lungime maxim.
Exemplu. n vectorul (1,2,3,8,6,7,10,11,12,13,3,1,4,5) panta de lungima maxim
este (10,11,12,13).
147. Fie un tablou a : array 0..n 1 cu elemente de tip ntreg cu proprietatea
a 0 a 1 ... a n 1 . Un platou este o subsecven maximal de elemente consecutive
n tablou care conin aceeai valoare. Lungimea unui platou este numrul de elemente ce
compun platoul. S se scrie un program care afieaz lungimea p a celui mai lung platou.
Exemplu. Pentru a=(2,4,4,4,5,6,8,8,8,8,9,9,10,14,14,15,16, 16,16,17) cel
mai lung platou ncepe n poziia 7 i are lungimea 4.
148. Se consider un ir de n numere naturale mai mici dect 32000. Se cere s se determine o
succesiune cu numr maxim de elemente din ir, care are proprietatea c fiecare component a
succesiunii are acelai numr de cifre distincte n scrierea sa.
Exemplu. Pentru vectorul (55,8,37,949,26,2213,157,38,2) secvena cerut este
(37,949,26).
149. Pentru un vector x de n numere ntregi dat, s se afieze o secven (dac exist) de elemente
consecutive din vector pentru care suma elementelor se divide cu n.
Exemplu. Pentru vectorul (89,54,4,63,96,17,98,6,55,60) cea mai lung secven care
ndeplinete condiia cerut este (63,96,17,98,6).
150. Se dau doi vectori A cu m componente i B cu n componente (n>m). Componentele ce
formeaz vectorul A sunt distincte dou cte dou. S se scrie un program care s verifice dac
toate componentele vectorului A luate n orice ordine se gsesc n vectorul B pe poziii
consecutive. Dac testul este reuit s se afieze fiecare poziie din vectorul B unde ncepe
secvena de elemente din A.
Exemplu. Dac A=(3,4,5,6) i B=(2,5,6,4,3,9,3,12) atunci vectorul A se gsete n B
ncepnd cu poziia 2.
Sortri i interclasri
151. Sortarea prin metoda bulelor. Metoda const n parcurgerea vectorului, interschimbnd
valorile adiacente din vector atunci cnd acestea nu se afl n ordinea dorit. Atunci cnd n
urma unei astfel de treceri prin vector nu s-a fcut nici o interschimbare nseamn c vectorul
este sortat. S se scrie un program care sorteaz cresctor un vector cu n componente numere
ntregi folosind aceast metod.
152. Sortarea prin amestecare. Este o variant uor mbuntit a metodei bulelor. Ea const n
efectuarea de treceri alternative n direcii opuse. Se poate observa c la parcurgerea de la
stnga la dreapta valorile mari (n cazul sortrii cresctoare) migreaz spre dreapta iar la
parcurgerea de la dreapta spre stnga cele mici migreaz spre stnga.
153. Metoda bulelor cu santinel. Este asemntoare cu metoda bulelor. Diferena const c la
fiecare pas se memoreaz poziia n care a avut loc ultima interschimbare. La pasul urmtor
44
Tablouri
trecerea n vector se face doar pn la aceast poziie (numit santinel), restul elementelor
fiind evident sortate.
154. Sortarea prin selecie direct. La pasul i al algoritmului (i=1,2,,n, unde n este lungimea
vectorului) al acestei metode se determin
xk=min{xi,xi+1,,xn}
45
Tablouri
Se va afia
Mulimi proporionale
2/3=4/6=20/30
164. Se d un ir de numere ntregi. S se ordoneze irul astfel nct primele poziii s conin
componentele pare ordonate cresctor, iar apoi s conin componentele impare ordonate
descresctor.
Exemplu. Dac vectorul iniial este (45,30,3,154,23,2,28,14,453) dup sortare se
obine (2,14,28,30,154,453,45,23,3).
165. Dndu-se un vector cu maxim 100 de numere naturale, s se localizeze elementul maxim i
toate elementele dinaintea lui s se ordoneze cresctor, iar cele de dup el, descresctor.
Exemplu. Dac vectorul iniial este (3,1,9,4,100,2,36,1,4,9,5) dup sortare se va
obine (1,3,4,9,100,36,9,5,4,2,1).
166. Se consider un vector coninnd n (n<=100) numere naturale cu valori cuprinse ntre 1 i
60000. S se alctuiasc un program care s ordoneze cresctor doar numerele pare din
vector, fr ns a afecta poziiile pe care sunt situate numerele impare. Programul va afia pe
ecran vectorul obinut dup ordonare.
Exemplu. X=(11,40,32,44,3,13,8,17) => x=(11,8,32,40,3,13, 44,17).
167. Se consider un vector cu n componente. tiind c el conine dou subsecvene de numere
ordonate cresctor, s se ordoneze ntregul vector prin interclasarea celor dou subsecvene.
Exemplu. X=(1,3,5,7,20,4,9,11,44,60) => X=(1,3,4,5,7,9,11, 20,44,60)
168. Se d un ir de numere, scrise ntr-o ordine aleatoare. Ele reprezint rezultatele pariale ale
unor operaii de adunare cu numere naturale. Printre numere se gsete i numrul de la care sa plecat iniial. S se reconstituie exerciiul folosind numerele date.
Exemplu. Dac numerele date sunt: 12, 6, 23 atunci exerciiul este urmtorul: 6+6=12;
12+11=23.
169. Se d un vector cu elemente avnd doar valorile 1, 2, 3. Vectorul se consider ordonat
parial: primele k-1 poziii sunt ocupate de elemente egale cu 1, poziiile de la k la l-1 de
elemente egale cu 2, poziiile de la l la m-1 de elemente egale cu 3, iar poziiile de la m la n
de elemente neordonate (1<=k<=l<=m<=n, n,m,k,l dai). S se scrie un program care
sorteaz vectorul dat. Sortarea se va face prin interschimbarea valorilor ntre ele. Valoarea
unui element se analizeaz o singur dat. n afara celor n locaii pentru irul dat, nu se va
folosi nici o variabil auxiliar pentru interschimbarea valorilor ntre ele.
44
Tablouri
C A B
45