Sunteți pe pagina 1din 14

www.compendium.

ro

- 1 -

Exerciii programare

Structuri de control
1. Structuri Simple
1.1. De atribuire / 1.2. De intrare / 1.3. De ieire / 1.4. Condiia (ntrebarea, testul)
Is1 - Metoda paharelor. S se interschimbe coninutul a dou variabile a i b.
Is2 - Se d temperatura n grade Celsius, s se afieze n grade Farenheit. F = (C+32) * 1,8.
Is3 - Se dau lungimea i limea, s se calculeze aria i perimetrul dreptunghiului.

2. Structuri Decizionale
2.1. Alternativa

2.2. De selecie


Id1 - Se citesc de la tastatur dou numere, s se afieze cel mai mare
Id2 - Se citete de la tastatur un numr, s se afieze dac este par sau impar
Id3 - Se citete de la tastatur un numr, s se afieze dac este pozitiv sau negativ
Id4 - Se citete de la tastatur un numr, s se afieze dac este pozitiv, negativ sau nul
Id5 - Se citesc de la tastatur trei numere, s se afieze cel mai mare
Id6 - Se citesc de la tastatur patru numere, s se afieze cel mai mare
Id7 - Se citesc de la tastatur trei numere, s se afieze dac ele pot fi laturi ale unui triunghi
i, dac da, s se afieze tipul de triunghi pe care l pot forma (oarecare, dreptunghi, isoscel, echilateral)
Id8 - S se scrie un programpentru rezolvarea ecuaiei de gradul I (ax+b=0)
Id9 - S se scrie un program pentru rezolvarea ecuaiei de gradul al II-lea (ax
2
+bx+c=0)
Id10 - Se citesc de la tastatur trei numere, s se ordoneze cresctor.
Id11 - S se scrie condiia ca un numr x s aparin intervalului (8,13]
Id12 - S se scrie condiia ca un numr x s NU aparin intervalului (8,13]
Id13 - S se scrie condiia ca un numr x s aparin intervalului [a,b)

Ids1 - Se citete de la un numr, n funcie de el s se afieze luna corespunztoare (1=ianuarie, 2=februarie etc)
Ids2 - Se citete de la un numr, n funcie de el s se afieze ziua corespunztoare (1=luni, 2=mari etc)
Ids3 - Se citete de la tastatur o not, n funcie de ea s se afieze un calificativ (FBine / Bine / Mediu / Slab / FSlab)

3. Structuri Repetitive
3.1. Cu test iniial

3.2. Cu test final

3.3. Cu contor


Ir1 - S se afieze numerele de la 1 la 10
Ir2 - S se afieze numerele de la 13 la 8
Ir3 - Se citete un numr x, s se afieze numerele strict pozitive pare mai mici dect x


www.compendium.ro

- 2 -
Exerciii asupra unui numr

Se citete de la tastatur un numr x de fix 4 cifre
Nf1 - S se extrag n 4 variabile cifrele numrului i s se afieze pe ecran una sub alta
Nf2 - S se spun dac numrul este palindrom
Nf3 - S se calculeze inversul numrului

Se citete de la tastatur un numr ntreg x
N1 - S se calculeze i afieze suma cifrelor numrului x
N2 - S se afieze cte cifre are numrul x
N3 - S se afieze cea mai mare cifr din numrul x
N4 - S se afle inversul lui x (exem: x=1974, inversul=4791)
N5 - S se afieze dac numrul este palindrom(exem: 1991, 12721)
N6 - S se afieze prima cifr a lui x

N7 - S se afieze divizorii lui x
N8 - S se afle ci divizori are x
N9 - S se calculeze suma divizorilor lui x
N10 - S se afieze dac x este prim sau nu
N11 - S se afle cel mai mic divizor al lui x (diferit de 1)
N12 - S se afle cel mai mare divizor al lui x (diferit de el nsui)
N13 - S se afieze toate numerele palindrome de la 10 pn la x
N14 - S se afieze toate numerele prime de la 2 pn la x

N15 - S se afle cmmdc a dou numere a i b (Algoritmul lui Nicomede. Algoritmul lui Euclid)
N16 - S se afieze dac a i b sunt prime ntre ele
N17 - S se afle cmmmc a dou numere a i b

N18 - S se afieze factorii primi ai lui x (exemple: 252, 84, 108)
N19 - S se calculeze ci factori primi are x / suma factorilor primi
N20 - S se afieze factorii primi ai lui x i puterile lor

N21 - S se verifice dac un numr real are cifre dup virgul i s se afieze partea zecimal
N22 - S se verifice dac un numr este ptrat perfect
N23 - S se determine cel mai mare ptrat perfect mai mic dect x

N24 - S se calculeze a la puterea n (a i n citite de la tastatur)
N25 - S se calculeze suma 1+2+3+...+x
N26 - S se calculeze x factorial (x! =1*2*3*...*x)
N27 - S se afieze cte zerouri conine la sfrit numrul x! (varianta1: x<32000, varianta2: x>10 cifre)

Nb1 - S se afieze cte cifre are x n binar
Nb2 - S se transforme x n binar
Nb3 - S se transforme x ntr-un sistemde numerotaie citit de la tastatur (k)
Nb4 - S se verifice dac numrul x este rotund (in binar are acelasi numr de 1 i 0)
Nb5 - S se verifice dac x este n binar, s se citeasc pn cnd este n binar, apoi s se transforme numrul n zecimal
Nb6 - S se transforme un numr real x n binar; de la tastatur se introduce i numrul de zecimale dorite.


www.compendium.ro

- 3 -
Se citesc de la tastatur n numere (exemplu: 7,-3,8,9,-3,-2,4,0).
Ia1 - S se calculeze suma numerelor
Ia2 - S se calculeze produsul / media numerelor
Ia3 - S se afieze cel mai mare numr citit
Ia4 - S se afieze cel mai mare numr impar citit
Ia5 - S se afieze suma cifrelor pentru fiecare numr
Ia6 - S se afieze suma cifrelor tuturor numerelor

Ib1 - S se afieze cea mai mare sum / diferen dintre dou numere citite succesiv
Ib2 - S se afieze perechile de numere pentru care primul citit este mai mare dect al doilea. (se afieaz 7,3 - 9,3 - 3,2.)

Ic1 - S se afieze cea mai mare sum dintre trei numere citite succesiv
Ic2 - S se calculeze termenul n din irul Fibonacci. f(1)=1, f(2)=1, f(n)=f(n-1)+f(n-2) pentru n>=3

Aceleai exerciii pentru enunul: S se citeasc de la tastatur numere pn se introduce valoarea 0.


Sume
Ns1 - S se calculeze k*(k+1)
Ns2 - S se calculeze 1+x+x
2
+x
3
+...+x
n
Ns3 - S se calculeze 1! + 2! + 3! + ... x!
Ns4 - S se calculeze suma armonic (exem: pentru 1859, suma este 1*9 +2*5 +3*8 +4*1)
Ns5 - S se calculeze cifra de control a lui x (suma sumei cifrelor pn cnd rmne o singur cifr)
(Numrul destinului: suma cifrelor care formeaz data de natere, pn cnd rmne o singur cifr)

Alte exerciii
Na1 - S se verifice dac numrul are cifrele ordonate cresctor (exem: 1459; verificare pt 1859)
Na2 - S se afieze de cte ori apare cifra k n numr
Na3 - S se afieze de cte ori apare fiecare cifr n numr
Na4 - S se afieze o singur dat cifrele care apar / nu apar n numr
Na5 - S se elimine cifrele impare din numr
Na6 - S se afieze dac numrul conine numai cifre pare
Na7 - S se afieze dac numrul conine numai cifre identice

S se verifice dac dou numere sunt n echer (au acelai numr de cifre, iar suma cifrelor de pe aceeai poziie este 9).


Tipuri de numr
Se citete de la tastatur un numr ntreg x. S se verifice dac x este
superprim- daca el este primsi toate prefixele sale sunt de asemeni prime (exemplu: 313, 2339)
aproape prim- este produs de dou numere prime

superpalindrom- are ptratul tot palindrom(exemplu: 11)
semipalindrom- cifrele din prima jumtate sunt acelai din a doua jumtate (exemplu: 13813)

perfect - suma divizorilor si (exceptnd numrul nsui) este egal cu numrul dat
supraperfect - suma divizorilor si (exceptnd numrul nsui) este mai mare dect numrul dat
imperfect - suma divizorilor si (exceptnd numrul nsui) este mai mic dect numrul dat

dublic - are doua cifre alturate egale
echilibrat - numrul de cifre pare este egal cu numrul de cifre impare
ciuruit - are minim dou zerouri
corect - suma i produsul cifrelor sunt ptrate perfecte
optim- conine 8 sau suma cifrelor lui este 8
greu ncercat - are dou cifre ntre care diferena este 9
subire - este mai mic dect suma divizorilor si fr 1 i el nsui
legat - diferena dintre oricare dou cifre este 1
pitic - toate cifrele sunt mai mici dect 4
generos - suma cifrelor lui e mai mare decat n+2. S se afle suma numerelor generoase de dou cifre.

www.compendium.ro

- 4 -
Vectori


V1 - S se citeasc de la tastatur un vector v cu n elemente, n citit tot de la tastatur
V2 - S se afieze elementele vectorului
V3 - S se afieze elementele vectorului, pornind de la ultimul element ctre primul
V4 - S se afieze elementele din prima jumtate a vectorului
V5 - S se afieze elementele de pe poziii pare
V6 - S se afieze elementele pare
V7 - S se afieze elementele pare de pe poziii impare

V8 - S se calculeze suma elementelor
V9 - S se calculeze produsul elementelor
V10 - S se calculeze media aritmetic a elementelor pare
V11 - S se calculeze norma (radical din suma ptratelor elementelor)

V12 - S se afle maximul i minimul elementelor (i poziia unde se gsete acesta)
V13 - S se afieze toate poziiile unde se gsete maximul
V14 - S se afieze prima poziie unde se gsete maximul
V15 - S se afieze ultima poziie unde se gsete maximul
V16 - S se afieze primele 3 poziii unde se gsete maximul
V17 - S se afieze a doua poziie unde se gsete maximul
V18 - S se afle maximul i minimul elementelor pare/impare

Exerciii cu folosire contor

VF1 - S se afieze cte elemente din vector sunt pare i cte impare
VF2 - S se afieze cte elemente din vector sunt pozitive i cte negative
VF3 - S se calculeze cte elemente ntre 2 i 7 sunt n vector
VF4 - S se calculeze cte elemente prime sunt n vector
VF5 - S se afieze procentual cte elemente sunt peste medie i cte sunt sub medie

Exerciii cu folosirea unui singur indice
Vi1 - S se afieze diferenele dintre elementele alturate
Vi2 - S se tearg elementul de pe poziia k din vector (poziia k se citete de la tastatur)
Vi3 - S se insereze n vector o valoare x citit de la tastatur pe poziia k
Vi4 - S se mute ultimul element pe prima poziie n faa celorlalte
Vi5 - S se introduc un numr citit de la tastatur n poziia corect ntr-un vector ordonat cresctor

Vectorul frecvenelor
VFr1 - Se d un numr, s se pstreze ntr-un vector de cte ori apare fiecare cifr (exem: 738753)
VFr2 - S se afieze cel mai mare numr format din cifrele numrului luate o singur dat (8753)
VFr3 - S se afieze cel mai mare numr format din cifrele numrului luate de cte ori apar (877533)
VFr4 - S se afieze cel mai mic numr format din cifrele numrului luate o singur dat (3578)
VFr5 - S se afieze cel mai mic numr format din cifrele numrului luate de cte ori apar (335778)
VFr6 - S se spun dac se poate forma un palindrom din cifrele numrului i, dac da, s se afieze acesta.
Verificare pentru 470878800

Cutare numr n vector (Folosirea variabilei de tip steag / semafor)
Se citete de la tastatur un numr (x).
VS1 - S se afieze un mesaj dac x exist sau nu n vector
VS2 - S se afieze dac x exist sau nu n vector cu ieire din bucl n momentul gsirii prima oar a numrului
VS3 - S se afieze dac x exist sau nu n vector i, dac da, de cte ori i pe ce poziii


Exerciii care se rezolv cu variabil steag
VS4 - Se citete un numr x, s se verifice dac numrul divide vreun element al vectorului
VS5 - S se determine dac vectorul conine numere negative
VS6 - S se determine dac vectorul conine numere consecutive pe poziii alaturate
VS7 - S se determine dac elementele vectorului formeaz sau nu o progresie aritmetic
VS8 - S se determine dac elementele alturate dintr-un vector sunt diferite
VS9 - S se determine dac toate elementele unui vector sunt diferite
VS10 - S se determine dac elementele unui vector sunt ordonate strict cresctor

www.compendium.ro

- 5 -
Metode de ordonare
VO-1 - Metoda prin interschimbare (SimpleSort)
VO-2 - Metoda bulelor (BubbleSort)
VO-3 - Metoda prin aflare minim(SelectionSort)
VO-4 - Indexare (CountSort) (Intr-un alt vector pe poziie corespunzatoare se stocheaz numrul de elemente mai mici
dect cel curent. Exemplu: Dac V=(7,4,9,2,6), vectorul Z=(3,1,4,0,2) (deoarece 7 mai mare dect trei elemdin V))
VO-5 - Metoda prin insertie (InsertionSort) (S se citeasc de la tastatur elementele vectorului i s se introduc n vector
pe poziia necesar a.i. vectorul s fie ordonat dup citirea fiecarui nou element.)
VO-6 - Metoda rapida (QuickSort)

Exerciii ordonare
VO-7 - S se ordoneze elementele pare din vector, cele impare ramnnd neschimbate
VO-8 - S se ordoneze elementele din vector dup ultima cifr a fiecarui element
VO-9 - S se ordoneze elementele din vector dup prima cifr a fiecarui element
VO-10 - S se numere cte [comparaii / interschimbri] se execut la [ metoda prin interschimbare / metoda bulelor ]
VO-11 - S se afieze numrul maximde comparaii care se execut la [ metoda prin interschimbare / metoda bulelor ]

Exerciii cu mai muli indici pe vector
VI-1 - S se inverseze primul element cu ultimul, al doilea cu penultimul amd (exem: 7,4,9,2,0,6 =>6,0,2,9,4,7)
VI-2 - S se elimine duplicatele (elementele egale alturate) (exem: 7,4,4,4,5,7,4,3,3,9 =>7,4,5,7,4,3,9)

Exerciii cu creare vector nou
VN1 - Se citete de la tastatur un numr, s se stocheze cifrele numrului ntr-un vector (exem: 1859 =>9,5,8,1)
VN2 - S se stocheze n alt vector elementele pare
VN3 - S se stocheze n alt vector elementele prime
VN4 - S se stocheze elementele n alt vector, fr a se repeta (exem: 7,4,4,4,5,7,4,3,3,9 =>7,4,5,3,9)
VN5 - S se afieze de cte ori se repet fiecare element
VN6 - S se stocheze elementele pare i urmtorul al acestuia (exem: 7,4,9,2,6 =>4,5,2,3,6,7)

Exerciii diverse
VB1 - S se afieze elementele din vector care apar o singur dat
VB2 - S se afieze elementele din vector care apar de dou ori
VB3 - S se afieze cele mai mari dou valori
VB4 - S se afieze cea mai mare valoare care se repet
VB5 - S se afle cmmdc al elementelor vectorului

VB6 - S se determine i s se afieze primul numr par din vector
VB7 - S se determine i s se afieze ultimul numr par din vector
VB8 - S se aranjeze elementele unui vector astfel nct elementele pare s fie la inceput, iar cele impare la final
VB9 - S se aranjeze elementele unui vector astfel nct zerourile s fie la final (exem: 7,0,0,4,9,0,2,0 =>7,4,9,2,0,0,0,0)
VB10 - S se aranjeze elementele unui vector astfel nct elementele pozitive s fie la inceput, iar cele negative la final

VB11 - S se afieze dac un vector este creast sau nu
VB12 - S se afieze cte creste are un vector
VB13 - S se calculeze suma numerelor formate din elementele vectorului astfel: dac vectorul are valoarea (2, 4, 0, 7), se
adun numerele 2407+7042.

Exerciii de 3 stele (***)
Vx1 - S se determine dac exist un indice pentru care suma primelor i elemente este egal cu suma celorlalte n-i.
Vx2 - S se afieze cel mai lung ir de numere aflate n ordine cresctoare (exem: 3,9,8,5,2,3,4,5,4,2,9,10,7 =>2,3,4,5)
Vx3 - Se d un vector, s se afieze cte grupuri de elemente egale exist n vector i cte elemente conine fiecare grup.
Vx4 - Se citesc de la tastatur numere, s se stocheze ntr-un vector ultimele 5 numere citite.

S se creeze un vector care s conin urmatoarele numere:
Vx5 - 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,...
Vx6 - 1,1,2,1,2,3,1,2,3,4,1,2,3,4,5,...
Vx7 - 1,2,2,3,4,4,5,6,6,7,8,8,...
Vx8 - 1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3, ... S se afieze pe grupe astfel: 1 - 23 - 456 - 7891 01112 ...
www.compendium.ro

- 6 -


Lucru cu 2 vectori
Se dau doi vectori (a i b) de dimensiune n.
VD1 - S se creeze un alt vector care s conin suma elementelor pe linie a celor doi vectori (c[i]=a[i]+b[i])
VD2 - S se calculeze produsul cartezian al celor doi vectori (c[i]=a[i]*b[i])
VD3 - S se calculeze produsul scalar al celor doi vectori: <a,b>=suma(a[i]*b[i])
(Norma calculat n funcie de produsul scalar: ||v||=sqrt(<v,v>) )
VD4 - S se afieze dac cei doi vectori sunt ortogonali (adic produsul lor scalar este zero)

VD5 - S se adauge vectorul b n coada vectorului a
VD6 - S se insereze vectorul b n vectorul a ntr-o poziie dat de la tastatur
VD7 - S se schimbe elementele celor doi vectori
VD8 - S se interclaseze cei doi vectori (c[1]=a[1]; c[2]=b[1]; c[3]=a[2]; c[4]=b[2]; ...)

Reuniunea, intersecia, diferena - Exemplu: a=(7,3,7,7,2,1,9,8,2) b=(7,4,9,2,6)
VD9 - S se afieze o singur dat toate numerele din vectori (reuniunea)
VD10 - S se afieze o singur dat numere comune din vectori (intersecia)
VD11 - S se afieze o singur dat numerele care exist n primul vector i nu exist n al doilea (a-b)
VD12 - S se afieze o singur dat numerele care exist n al doilea vector i nu exist n primul (b-a)

VD13 - S se afieze dac vectorul b este inclus n a
VD14 - S se determine dac un vector este mai mare (maximul unuia este mai mic dect minimul celuilalt)
VD15 - S se verifice dac cei doi vectori sunt sau nu proporionali i, dac da, s se afieze proporia
VD16 - Se dau doi vectori de cifre reprezentnd cifrele a dou numere mari (de minim 10 cifre). S adune cele dou
numere ntr-un al treilea vector.


Matrici
Ma1 - S se citeasc de la tastatur o matrice cu mlinii i n coloane, mi n citite tot de la tastatur
Ma2 - S se afieze matricea (trecnd pe randul urmator dup fiecare linie afisata)
Ma3 - S se afieze elementele matricei facndu-se parcurgere pe linie, pornind din fiecare colt al matricei

Ma4 - S se afieze elementele matricei facndu-se parcurgere pe coloan, pornind din fiecare colt al matricei


Ma5 - S se calculeze suma elementelor
Ma6 - S se calculeze norma unei matrici dreptunghiulare (suma ptratelor elementelor)
Ma7 - S se calculeze suma elementelor pare aflate pe linii impare
Ma8 - S se afieze cte elemente pare i cte elemente impare sunt ntr-o matrice

Ma9 - S se afle maximul
Ma10 - S se afieze poziiile unde se afl maximul
Ma11 - S se afieze indicele liniilor unde se afl minimul

Mb1 - S se calculeze suma elementelor de pe diagonala principal (adic urma unei matrici ptratice)
Mb2 - S se calculeze suma elementelor de pe diagonala secundar

Mb3 - Se d k de la tastatur, s se afieze suma pe linia k

Mb4 - S se calculeze sumele pe linii
www.compendium.ro

- 7 -
Mb5 - S se calculeze sumele pe coloane
Mb6 - Maxim/ minimpe linii (variante: afiare pe ecran, stocare ntr-un vector)
Mb7 - Maxim/ minimpe coloane (variante: afiare pe ecran, stocare ntr-un vector)
Mb8 - Cutare numr - Se d un numr x, s se afle dac exist sau nu n matrice

Permutari, transpuneri
Mp1 - S se interschimbe prima linie cu ultima linie
Mp2 - S se interschimbe linia 2 cu coloana 3 (ntr-o matrice ptratic)
Mp3 - S se interschimbe linia i cu coloana j (ntr-o matrice ptratic)
Mp4 - S se transpun o matrice

Mp5 - Flip orizontal - S se interschimbe coloanele astfel: prima se interschimb cu ultima, a doua cu penultima etc.
Mp6 - Flip vertical - S se interschimbe liniile astfel: prima se interschimb cu ultima, a doua cu penultima etc.
Mp7 - Rotire orizontal - S se mute ultima coloan n faa celorlalte.
Mp8 - Rotire vertical - S se mute ultima linie n faa celorlalte.
Mp9 - S se roteasc pe orizontal 3 poziii
Mp10 - S se roteasc pe vertical 3 poziii

MP - S se calculeze suma elementelor din ptratele delimitate de mediane


MT1 - S se calculeze suma elementelor din triunghiul superior diagonalei principale
MT2 - S se calculeze suma elementelor din triunghiul inferior diagonalei principale
MT3 - S se calculeze suma elementelor din triunghiul superior diagonalei secundare
MT4 - S se calculeze suma elementelor din triunghiul inferior diagonalei secundare


MTd1 - S se calculeze suma elementelor din triunghiul superior diagonalelor
MTd2 - S se calculeze suma elementelor din triunghiul inferior diagonalelor
MTd3 - S se calculeze suma elementelor din triunghiul inferior diagonalei principale i superior diagonalei secundare
MTd4 - S se calculeze suma elementelor din triunghiul inferior diagonalei secundare i superior diagonalei principale


MT5 - S se calculeze suma elementelor din matrice, mai puin triunghiul inferior diagonalelor
MT6 - S se calculeze suma elementelor benzii diagonal principal de raz 2 a matricei

Construire matrici
MD0 - S se construiasc matricile ptratice urmtoare (numrul de linii i coloane se d de la tastatur, n exemple n=4)
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
1 3 5 7
9 11 13 15
17 19 21 23
25 27 29 31
1 1 1 1
3 3 3 3
5 5 5 5
7 7 7 7
1 4 9 16
25 36 49 64
81 100 121 144
169 196 225 256
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
0000
0000
1111
1111
1 2 3 4
5 6 7 0
9 10 0 0
11 0 0 0
1 0 0 0
2 3 0 0
4 5 6 0
7 8 9 10
1 1 2 3
5 8 13 21
34 55 89 ...
(irul Fibo)
0 1 0 1
1 0 1 0
0 1 0 1
1 0 1 0
0000
0000
1111
1111

Diverse
MD1 - S se afieze liniile/coloanele care au toate elementele numere pare / impare / prime / ptrate perfecte
MD2 - S se ordoneze elementele de pe diagonala principal / secundar
MD3 - S se calculeze produsul cartezian ntre linia i i coloana i i rezultatul s se stocheze ntr-un vector
www.compendium.ro

- 8 -
MD4 - S se afieze dac vreun element de pe diagonala principal este mai mare dect suma celorlalte elemente din linie
MD5 - S se afieze dac fiecare element de pe diagonala principal este mai mare dect suma celorlalte elemente din linie
MD6 - Se d o matrice ptratic, s se afieze dac e un ptrat magic. (Suma pe fiecare linie este egal cu suma pe fiecare
coloan i cu suma pe fiecare diagonal)
MD7 - S se afieze maximul minimelor liniilor

Mx1 - S se calculeze produsul a dou matrici de dimensiuni mxn, respectiv nxp
Mx2 - S se calculeze matricea A la puterea n

Matrici rare
MR1 - S se calculeze gradul de umplere al unei matrici
MR2 - S se converteasc o matrice n format de memorare cu trei vectori
MR3 - S se converteasc matrice rar memorat n trei vectori ntr-o matrice normal. Se dau dimensiunile matricei.
MR4 - S se afieze o matrice rar memorat n vectori
MR5 - S se transpun o matrice rar
MR6 - S se adune dou matrici rare
MR7 - S se normalizeze o matrice rar (eliminarea elementelor nule din vectorul de valori)

Matricea de permutare - are un singur 1 pe fiecare linie i pe fiecare coloan, n rest, valori nule. Se stocheaz n vectori
index_linii sau index_coloane.
Matricea triunghiular - are elemente nenule pe i deasupra diagonalei principale i nule dedesupt.

Se d o matrice i un vector
MV1 - S se treac elementele de pe linia k ntr-un vector
MV2 - Primele n*n elemente din vector (care are t elemente) s se treac ntr-o matrice ptratic
MV3 - S se calculeze produsul dintre matrice i vector
MV4 - S se determine dac fiecare linie a unei matrici este proportional sau nu cu un vector
MV5 - S se determine liniile pentru care produsul elementelor este mai mic dect produsul elementelor vectorului obtinut
prin reducerea dimensiunii vectorului dat la indicii liniilor


iruri (vectori de caractere)
Funcii de lucru cu iruri n C++: cin, cin.get, gets, scanf - cout, printf - strlen, strcpy, strcat, strcmp, strchr, strstr, strrev,
strlwr, strupr, strtok, strncpy, strncat, strncmp, cout<<s[2], cout<<s+2, itoa(x,s,10), x=atoi(s), declararea vector de iruri

Se citete de la tastatur un ir s. Exemplu: irul UNIVERSITATEA CRAIOVA
S1 - S se afieze lungimea irului
S2 - S se afieze dac primul caracter din ir este liter sau nu
S3 - S se tearg din ir 3 caractere, ncepnd din poziia a 2-a
S4 - S se introduc n ir un alt ir citit de la tastatur n poziia a 4-a
S5 - S se afieze irul de la coad la cap
S6 - Se citesc de la tastatur 3 iruri, s se ordoneze alfabetic

S7 - S se afieze de cte ori apare n ir caracterul a / un caracter citit de la tastatur
S8 - S se afieze cte majuscule / litere mici conine irul
S9 - S se afieze cte vocale / cifre conine irul
S10 - S se citeasc de la tastatur dou iruri i s se scrie algoritmul care realizeaz adunarea acestora n zecimal

Determinare cuvinte
Se d un ir de caractere n care cuvintele sunt separate cu un singur spaiu.
Sc1 - S se afieze cte cuvinte conine irul
Sc2 - S se afieze lungimile cuvintelor din ir
Sc3 - S se afieze cuvintele din ir
Sc4 - S se transforme n majuscul prima liter a fiecrui cuvant
Sc5 - S se ordoneze alfabetic cuvintele din ir
Aceleai enunuri pentru cazul n care cuvintele sunt separate prin orice combinaie de caractere.

Parcurgeri caracter cu caracter
S18 - S se verifice dac un ir este palindrom. Exemple: reper, cojoc, unu, capac , aerisirea, rotitor, caiac, tivit, soios.
S19 - S se verifice dac un ir este palindrom, fr a se ine cont de spaii. Exemple de iruri palindrom:
Ele ne seduc cu desenele. Era sa pozez o pasare. Era o tipa rapitoare. Maria bea, ca e bairam.
www.compendium.ro

- 9 -

Diferenta intre palindromsi polindrom: Palindromul este un cuvnt sau o fraz care poate fi citit att de la stnga la
dreapta, ct i de la dreapta la stnga, sensul rmnnd acelai. Polindromul este cuvntul care citit de la coad la cap are
un alt neles. Exemple: animate - etamina, analog - golana, Roma - amor.

Se1 - S se dubleze vocalele
Se2 - Se d un ir, de exemplu "abcd", s se afieze "abbcccdddd"

Se3 - *** - S se afieze astfel irul "EDITURA":
*
**
***
****
*****
******
*******
E
ED
EDI
EDIT
EDITU
EDITUR
EDITURA
*******
******
*****
****
***
**
*
EDITURA
EDITUR
EDITU
EDIT
EDI
ED
E

Se5 - S se afieze irul astfel:
E E D I T U R A T E D I T U R A
E D I E D I T U I T U D I T U R
E D I T U E D I D I T U R I T U
E D I T U R A E E D I T U R A T

Se6 - S se afieze irul astfel: EDIT, DITU, ITUR, TURA
S se testeze algoritmii pentru irul UNIVERSITATEA

S17 - *** - S se citeasc de la tastatur caractere i, ntr-un vector, s se stocheze primele p paranteze drepte citite. S se
verifice dac irul este corect, adic:
1/ numrul de paranteze deschise este egal cu numrul de paranteze nchise;
2/ orice parantez nchis are n stnga ei un numr mai mare de paranteze deschise dect nchise.
S se afieze ci muguri sunt n vector (un mugur e o parantez deschis urmat de una nchis). S se afieze irul cu o
culoare, iar mugurii s fie afiai cu alt culoare.


Tipul de dat articol (nregistrare)
A1 - S se realizeze o structur de tip masina, coninnd cmpurile: cod, marca, model, an_fabricatie, culoare.
A2 - S se realizeze o structur de tip carte, coninnd cmpurile: pret, titlu, autor.

A3 - S se realizeze o structur de tip fracie. S se citeasc de la tastatur i s se adune dou fracii.
A4 - S se realizeze o structur de tip complex, coninnd cmpuri pentru partea imaginar i partea real. S se citeasc de
la tastatur dou astfel de numere i s se afieze suma, diferena i produsul lor.
A5 - S se realizeze o structur de tip elev, coninnd cmpurile: numar_matricol, nume, prenume, data_nastere, ultimul
cmp fiind declarat ca o structur separat avnd cmpurile zi, luna, an.
A6 - S se declare un vector v de 10 elemente de tip elev i s se citeasc i s afieze valorile din primul element.
S se afieze primul caracter din numele celui de al doilea elev.
S se afieze primul caracter al fiecrui nume din vectorul de elevi.
A7 - S se realizeze o structur de tip student, coninnd cmpurile: numar_matricol, nume, prenume, notele la 20 de
materii i s se afieze nota la a doua materie.
A8 - S se realizeze o structur prin care se pot crea trei variabile care s rezolve soluia pentru c.x=a.x+b.x; c.y=a.y+b.y;
A9 - Formula distanei dintre dou puncte este
www.compendium.ro

- 10 -
A10 - Coordonatele mijlocului segmentului sunt


Fiiere
Fiiere text
F1 - Fiierul text "numere.txt" conine numere. S se citeasc numerele din fiier i s se afieze pe ecran suma i media lor.
F2 - Fiierul text "numere.txt" conine pe prima linie valoarea n, iar pe a doua linie n numere. S se citeasc numerele i s
se scrie ordonate cresctor n fiierul "rezultat.txt".

Fiiere cu tip
FT1 - Se d un fiier cu elemente de tip persoan, s se ordoneze coninutul acestuia dup nume
FT2 - S se realizeze un programde gestiune [a unei agende telefonice / al unui top muzical / al unor facturi]
Operaii de baz: Introducere / Afiare / Modificare / tergere / Cutare


Subprograme - funcii i proceduri
Noiuni: antet, corp, apel, parametri, variabile locale, variabile globale, transmisie prin valoare, transmisie prin adres
S se realizeze un subprogram care:
S1 - primete 3 numere i returneaz cea mai mare valoare dintre ele
S2 - primete un numr i returneaz dac este primsau nu
S3 - primete dou numere i returneaz cmmmc-ul lor
S4 - verific dac un numr este palindrom. Aplicaie: S se verifice dac un numr este superpalindrom (exemplu: 11, care
are ptratul, 121, tot palindrom)
S5 - primete ca parametru un numr real i returneaz partea zecimal ca numr ntreg

Sp1 - interschimb prin metoda paharelor coninutul a dou variabile primite ca parametri
Sp2 - primete dou numere i returneaz cel mai mare i cel mai mic dintre ele prin ali parametrii
Sp3 - primete dou numere i returneaz prin ali parametrii suma, diferena i produsul lor


Recursivitate
R1 - Se citete de la tastatur un numr (n). S se calculeze n factorial.
R2 - S se calculeze aranjamente de n luate cte k, A(n,k)
R3 - S se calculeze combinri de n luate cte k, C(n,k)
R4 - S se calculeze combinri de n luate cte k dup relaiile: C(n,k) =((n-k+1)/k) * C(n,k-1) i C(n,0)=1

C(n,k) =n! / ( k! * (n-k)! ) C(3,2) =ab, ac, bc
A(n,k) =n! / (n-k)! A(3,2) =ab, ba, ac, ca, bc, cb
P(n) =n! P(3) =abc, acb, bac, bca, cab, cba

R5 - irul Fibonacci. f(1)=1, f(2)=1, f(n)=f(n-1)+f(n-2) pentru n>=3


R6 - S se calculeze 1+2+3+4+5...+n
R7 - S se calculeze 1-2+3-4+5...+n

R8 - Cmmdc a dou numere
R9 - Suma cifrelor unui numr
R10 - Se dau a i n, s se calculeze a la puterea n

RV1 - Suma elementelor unui vector
RV2 - Produsul elementelor
RV3 - Maximul elementelor
www.compendium.ro

- 11 -
RV4 - Cutare numr n vector
RV5 - Suma elementelor dintre al 2-lea i al 5-lea din vector


Algoritmi
Divide et impera ("D&i")
D1 - Se d un vector v i un numr x, s se afieze dac x exist sau nu n vector folosind cutarea binar (spargere n
dou a vectorului ordonat)
D2 - Se d un vector, s se afle maximul sau folosind algoritmul "D&i" (aflare maximpt.fiecare jumtate, apoi pt.fiecare
jumtate din jumtate, amd)

Backtracking
B1 - Se d un numr x, s se afieze P(x) =permutari de x (Exemplu pt. x=3: 123, 132, 213, 231, 312, 321)
B2 - Se dau n i k, s se afieze combinari de n luate cte k
B3 - Se dau n i k, s se afieze aranjamente de n luate cte k
B4 - ntr-un vector se dau valorile monedelor ordonate descresctor, se d o sum, s se afieze variantele de plat a sumei.
S se afieze variantele de plat a sumei n numrul minimde monede.
B5 - Se d un numr x, s se afieze permutrile cifrelor sale

B6 - Problema damelor: S se aeze n dame pe o tabl de ah de dimensiune n*n fr ca acestea s se atace ntre ele
B7 - Problema sriturii calului: S se afieze poziiile pe care poate sri un cal pe o tabl de ah de dimensiune n*n astfel
nct s sar o singur dat pe toate ptrelele
B8 - Problema colorrii hrilor
B9 - Problema canibalilor i a misionarilor

Greedy
G1 - Problema cu utilitatea economic
G2 - Problema continu a rucsacului
G3 - Problema discret a rucsacului
G4 - Se dau distanele intermediare ntre benzinriile dintre dou localitai, se tie capacitatea rezervorului mainii i
consumul ei la suta de km. S se stabileasc drumul cu cele mai puine opriri pentru alimentare.


Liste



Creare static l.s.i.
LC1 - S se creeze o list simplu-nlnuit din 3 noduri, a,b,c
LC2 - S se adauge un nod d la sfritul listei
LC3 - S se insereze un nod e ntre b i c
LC4 - S se tearg nodul c
LC5 - S se interschimbe nodul b cu nodul d
LC6 - S se creeze o list circular

Parcurgere dinamic l.s.i.
LP1 - S se afieze o list simplu-nlnuit
LP2 - S se calculeze suma elementelor dintr-o list simplu-nlnuit
LP3 - S se calculeze cte elemente conine din lista
LP4 - S se calculeze media elementelor din list
LP5 - S se afle cel mai mare numr dintr-o list simplu-nlnuit
LP6 - Se d de la tastatur un numr x, s se verifice dac exist sau nu n list.
Dac nu exist numrul, s se adauge la sfritul listei.
LP7 - S se numere cte elemente are o list circular

Creare dinamic l.s.i.
LD1 - S se creeze dinamic o list simplu-nlnuit (se citesc numere pn se introduce valoarea 0)
LD2 - S se creeze o list care s conin n numere citite de la tastatur
LD3 - S se creeze o list care s conin primele 10 numere pare
www.compendium.ro

- 12 -
LD4 - Se d un vector v, se d un numr x, s se caute x n vector i s se stocheze ntr-o list poziiile unde este gsit
LD5 - S se creeze o list care s conin elementele prime pn la un numr x citit de la tastatur

Inserri
Li1 - Se d o list, s se insereze un nod la sfritul ei
Li2 - S se insereze un nod ntr-o list simplu-nlnuit ntr-o poziie introdus de la tastatur
Li3 - S se creeze dinamic o list dublu-nlnuit (se citesc numere pn se introduce valoarea 0)
Li4 - S se insereze 0 dup fiecare numr par

tergeri
LS1 - S se tearg dintr-o list simplu-nlnuit nodul de pe poziia k
LS2 - S se tearg primul element dintr-o lsi (funcia s returneze adresa actualului prim element)
LS3 - S se tearg toate elementele pare dintr-o lsi
LS4 - S se tearg elementele pare de la nceputul unei lsi, pn se ntalnete un numr impar

Alte exerciii
LA1 - S se ordoneze o lsi
LA2 - S se ordoneze o ldi
LA3 - S se verifice dac informaiile dintr-o lsi sunt n ordine cresctoare


Stiva (de cri)

St1 - S se simuleze folosirea unei stive cu ajutorul unui vector
St2 - S se simuleze folosirea unei stive cu ajutorul unei liste dublu nlnuite



Coada (la pine)

C1 - S se simuleze folosirea unei cozi cu ajutorul unui vector
C2 - S se simuleze folosirea unei cozi cu ajutorul unei liste simplu nlnuite



Grafuri



Se d un graf (X,G), X=mulimea nodurilor, G=mulimea relaiilor dintre noduri
Exemple de grafuri: Neorientat: 1-2, 2-3, 3-4, 3-5, 4-5, 1-6, 2-6. Orientat: 1-2, 2-3, 3-2, 3-4, 4-3, 4-5, 6-5.

Metode de reprezentare: matricea de adiacen, listele de adiacen, fiierul text
Noiuni: neorientate/orientate , nod (vrf), arc (muchie), grad de inciden (interior, exterior), nod izolat, nod terminal,
ordin graf, drum, lan, circuit, ciclu, drum/lan/circuit/ciclu elementar, subgraf, graf parial, componente conexe,
componente tare conexe.
Tipuri de grafuri: complet (cte muchii are), complementar, regulat, bipartit, conex, hamiltonian, eulerian.

Ordin graf = numrul de noduri.
Un subgraf se obine prin eliminarea minim a unui vrf.
Un graf parial se obine prin eliminarea minima unei muchii.
O component este conex dac oricare dou vrfuri sunt conectate printr-un lan.
O component este tare conex dac oricare dou vrfuri sunt conectate printr-un drum.
Un graf este hamiltonian dac are un ciclu elementar care trece prin toate nodurile.
Un graf este eulerian dac este conex i gradele tuturor vrfurilor sunt pare.
www.compendium.ro

- 13 -
Graf regulat =are toate gradele nodurilor numere pare.

Gi1 - Se dau de la tastatur numrul de noduri i arcele, s se stocheze graful ntr-o matrice de adiacen
Se dau de la tastatur numrul de noduri, numrul de arce i arcele
Gi2 - S se stocheze graful ntr-o matricea de adiacen
Gi3 - S se stocheze graful n liste de adiacen
Gi4 - S se stocheze graful ntr-un fiier text

Se dau cele trei forme de stocare ale unui graf (matrice de adiacen, liste de adiacen, fiier text)
Gi5 - Se d fiierul text, s se creeze matricea de adiacen
Gi6 - Se d matricea de adiacen, s se creeze fiierul text
Gi7 - Se d matricea de adiacen, s se creeze listele de adiacen
Gi8 - Se d fiierul text, s se creeze listele de adiacen
Gi9 - Se dau listele de adiacen, s se creeze matricea de adiacen
Gi10 - Se dau listele de adiacen, s se creeze fiierul text

Gd1 - S se afieze gradele de inciden [interioare / exterioare] ale nodurilor
Gd2 - Se cere un nod, s se afieze toate nodurile [ctre care / de la care / i ctre, i de la care] acesta are arce

Gd3 - Parcurgerea n lime (BF)
Gd4 - Parcurgerea n adncime (DF)
Gd5 - S se realizeze matricea drumurilor
Gd6 - S se determine componentele tare conexe
Gd7 - S se afieze dac graful este tare conex

Gr1 - S se afieze nodurile cu gradul de inciden interior egal cu cel exterior
Gr2 - Matricea ponderilor
Gr3 - Roy Warshall (existena matricei drumurilor), Roy Floyd (costurile minime)
Gr4 - Dijkstra (distana cea mai mic de la un nod la celelalte)
Exemple de grafuri pentru Dijkstra
6
1 3 40
1 2 20
1 5 30
2 3 15
2 4 70
3 4 30
4 6 25
5 6 20
7
1 2 30
1 3 75
2 3 40
2 4 20
2 5 75
4 6 15
4 7 50
6 7 35
3 6 30
2 6 15
3 5 20
1 6 10


Arbori
(def: graf conex i fr cicluri)
- Noiuni: cte muchii are, tai, descendeni direci (fii), descendeni, rdcin, frunze, nlime,
pdure (un graf n care fiecare component conex a sa este arbore)
- Metode de reprezentare: vectorul tat
- Ordinul sau gradul arborelui este valoarea maxim luat de gradul unui nod al arborelui.

Arbori binari
(def: arbore n care fiecare nod are maximdoi fii)
- Metode de reprezentare: vectorii stnga i dreapta
- Parcurgera arborilor binari: svd (inordine), sdv (postordine), vsd (preordine - n adncime)
- A.b. strict: n care fiecare nod are fix 2 descendeni. Nr lui de noduri: 2n-1
Arbore binar de cutare
Arbore ternar, arbore n-nar
S se construiasc un arbore binar de cutare pentru numerele: 25, 6, 74, 13, 46, 3, 80, 92, 10
Se d arborele binar de cutare 5, 7, 10, 21, 27, 39, cu 10 fiind rdcina i 5, 21, 39 noduri terminale. S se creeze arborele.

Clase i obiecte
- metode (=variabile), proprieti (=funcii)
- constructor, destructor
- ncapsularea (public, privat, protected - funcii set i get), polimorfismul (exem: arie, perimetru, volum), motenirea
(exem: persoana - student, main - tir, numr real - numr complex)
- static (exem: numr obiecte din clasa persoane), abstract, virtual, override (suprancrcare)


www.compendium.ro

- 14 -
Cutare (cei 3 pai de baz)

1. Iniializarea variabilei steag (semafor)
gasit :=false;

2. Parcurgerea (vectorului / listei / fiierului / mulimii)
for i:=1 to n do
if x=v[i] then
gasit :=true;

3. Analiza rezultatului (gasit)
if gasit=true then
writeln (Exista!)
else
writeln (Nu exista!);





gasit =false
i =1
i <=n
x =v[i]
gasit =true
i =i+1
gasit =
true
Exista Nu exista
STOP
START
DA
DA DA
NU
NU NU