Sunteți pe pagina 1din 12

www.compendium.

ro
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) 2. Structuri Decizionale 2.1. Alternativa

I0 - Metoda paharelor. S se interschimbe coninutul a dou variabile a i b. I1 - Se citesc de la tastatur dou numere, s se afieze cel mai mare I2 - Se citete de la tastatur un numr, s se afieze dac este pozitiv sau negativ I3 - Se citete de la tastatur un numr, s se afieze dac este par sau impar I4 - Se citesc de la tastatur trei numere, s se afieze cel mai mare I5 - Se citesc de la tastatur cinci numere, s se afieze cel mai mare I6 - 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) I7 - S se scrie un program pentru rezolvarea ecuaiei de gradul I (ax+b=0) I8 - S se scrie un program pentru rezolvarea ecuaiei de gradul al II-lea (ax2+bx+c=0) I9 - Se citesc de la tastatur trei numere, s se ordoneze cresctor. I10 - S se scrie condiia ca un numr s aparin intervalului (4,13] I11 - S se scrie condiia ca un numr s NU aparin intervalului (4,13] 2.2. De selecie

I12 - Se citete de la un numr, n funcie de el s se afieze luna corespunztoare (1=ianuarie, 2=februarie etc) I13 - 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

I14 - S se afieze numerele de la 1 la 10 I15 - S se afieze numerele de la 13 la 4 S se citeasc de la tastatur numere pn se introduce valoarea 0 (exem: 7,3,8,9,3,2,4,0) Ia1 - S se calculeze suma i media lor Ia2 - Se citesc de la tastatur numere pn se introduce 0. Ia3 - S se afieze suma cifrelor pentru fiecare numr. Ia4 - S se afieze suma cifrelor tuturor numerelor. Ia5 - S se afieze cel mai mare numr citit.

-1-

www.compendium.ro
Ia6 - S se afieze cea mai mare diferen dintre dou numere citite succesiv. Ia7 - S se afieze perechile de numere pentru care primul citit este mai mare dect al doilea. (se afieaz 7,3 - 9,3 - 3,2.) Exerciii cu un numr

Se citete de la tastatur un numr ntreg x N0 - S se afieze cifra sutelor, cifra unitilor i cifra zecilor (Exem: pentru 1859 se afieaz 895) 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: 1441, 12521) 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) N28 - S se transforme x n binar N29 - S se transforme x ntr-un sistem de numerotaie citit de la tastatur (k) N30 - S se verifice dac numrul x este rotund (in binar are acelasi numr de 1 i 0) N31 - S se verifice dac x este n binar, s se citeasc pn cnd este n binar, apoi s se transforme numrul n zecimal N32 - S se transforme un numr real x n binar; de la tastatur se introduce i numrul de zecimale dorite. Alte exerciii Na1 - S se afieze 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 elimine cifrele impare din afieze numr Na4 - S se afieze dac numrul conine numai cifre pare Na5 - S se afieze dac numrul conine numai cifre identice Na6 - S se calculeze k*(k+1) Na7 - S se calculeze 1+x+x2+x3+...+xn Na8 - S se calculeze suma armonic (exem: pentru 1859, suma este 1*9 + 2*5 + 3*8 + 4*1)

-2-

www.compendium.ro
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 Vi3 - S se insereze un element n vector 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 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 - S se determine dac vectorul conine numere negative VS5 - Se citete un numr x, s se verifice dac numrul divide vreun element al vectorului 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 unui vector sunt ordonate strict cresctor VS9 - S se determine dac elementele alturate dintr-un vector sunt diferite VS10 - S se determine dac toate elementele unui vector sunt diferite Vectorul frecvenelor VF1 - Se d un numr, s se pstreze ntr-un vector de cte ori apare fiecare cifr (exem: 738753) VF2 - S se afieze cel mai mic numr format din cifrele numrului luate o singur dat (3578) VF3 - S se afieze cel mai mic numr format din cifrele numrului luate de cte ori apar (335778) VF4 - S se afieze cel mai mare numr format din cifrele numrului luate o singur dat (8753) VF5 - S se afieze cel mai mare numr format din cifrele numrului luate de cte ori apar (877533) Verificare pentru 15931601

-3-

www.compendium.ro
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 elem din 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 din vector dup ultima cifr a fiecarui element VO-8 - S se ordoneze elementele din vector dup prima cifr a fiecarui element VO-9 - S se ordoneze elementele pare din vector, cele impare ramanand neschimbate VO-10 - S se numere cte [comparatii / interschimbari] se execut la [ metoda prin interschimbare / metoda bulelor ] VO-11 - S se afieze numrul maxim de comparatii 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, far 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 urmatorul 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 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) VB7 - S se aranjeze elementele unui vector astfel nct elementele pare s fie la inceput, iar cele impare la final

VB8 - S se afieze dac un vector este creast sau nu VB9 - S se afieze cte creste are un vector Exerciii de 3 stele (***) V*1 - S se determine dac exist un indice pentru care suma primelor i elemente este egal cu suma celorlalte n-i. V*2 - 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) V*3 - Se d un vector, s se afieze cte grupuri de elemente egale exist n vector i cte elemente conine fiecare grup. V*4 - 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: V*5 - 1,2,2,3,4,4,5,6,6,7,8,8,... V*6 - 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,... V*7 - 1,1,2,1,2,3,1,2,3,4,1,2,3,4,5,...

-4-

www.compendium.ro
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=(5,3,5,5,1,8,2) b=(5,4,2,9,2) VD9 - S se afieze o singur dat toate numerele din vectori (reuniunea) VD10 - S se afieze o singur dat numere comune din vectori (intersectia) 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

Matrici Ma1 - S se citeasc de la tastatur o matrice cu m linii i n coloane, m i 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 liniile unde se afl minimul Mb1 - S se calculeze suma elementelor de pe diagonala principal (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 Mb5 - S se calculeze sumele pe coloane Mb6 - Maxim / minim pe linii (variante: afisare pe ecran, stocare ntr-un vector) Mb7 - Maxim / minim pe coloane (variante: afisare pe ecran, stocare ntr-un vector)

-5-

www.compendium.ro
Mb8 - Cutare numr n matrice (Se d un numr x, s se afle dac exist sau nu n matrice) Mb9 - S se interschimbe prima linie cu ultima linie Mb10 - S se interschimbe linia 2 cu coloana 3 Mb11 - S se transpun o matrice 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 MD0 - S se construiasc matricile ptratice (numrul de linii i coloane se d de la tastatur) 1111 3333 5555 7777 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 1234 2345 3456 4567 1234 2341 3412 4123 1234 8765 9 10 11 12 16 15 14 13

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 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 M*1 - *** - S se calculeze produsul a dou matrici de dimensiuni mxn, respectiv nxp M*2 - *** - S se calculeze matricea A la puterea n 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

-6-

www.compendium.ro
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 CRAIOVA S1- S se afieze dac primul caracter din ir este liter sau nu. S2 - S se afieze lungimea irului S3 - S se introduc n ir un alt ir citit de la tastatur n poziia a 4-a S4 - S se tearg din ir 3 caractere, incepand din poziia a 5-a S5 - S se afieze de cte ori apare n ir caracterul a / un caracter citit de la tastatur S6 - S se afieze cte majuscule / litere mici / cifre conine irul S7 - S se afieze cte cuvinte conine irul S8 - S se transforme n majuscul fiecare prim liter a unui cuvant S9 - S se afieze cte lungimile cuvintelor din ir S10 - S se afieze cuvintele din ir S11 - *** S se salveze cuvintele din ir ntr-un vector de iruri S12 - S se dubleze vocalele S13 - Se d un ir, de exemplu "abcd", s se afieze "abbcccdddd" S14 - *** - S se afieze astfel irul "EDITURA": E EDITURA ED EDITUR EDI EDITU EDIT EDIT EDITU EDI EDITUR ED EDITURA E S15 - S se afieze irul astfel: E E D I T U R A E D I E D I T U E D I T U E D I E D I T U R A E S16 - 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.

I D I E D I

T T U T U R T U R A

E D I D I I

T U R A T U R T U T

-7-

www.compendium.ro
Tipul de dat articol (nregistrare) A1 - S se realizeze o structur de tip masina, coninnd cmpurile: numar, marca, an_fabricatie, culoare. A2 - S se realizeze o structur de tip complex, coninnd cmpuri pentru partea imaginar i partea real. A3 - S se realizeze o structur de tip fractie. S se citeasc de la tastatur i s se adune dou fracii. A4 - S se realizeze o structur de tip carte, coninnd cmpurile: pret, titlu, autor.

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 element din vector. 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 ecuaia dreptei c.x=a.x+b.x; c.y=a.y+b.y; Fiiere Fiiere text F1 - Un fiier text conine mai multe numere. S se citeasc numerele i s se afieze suma numerelor. F2 - Un fiier text conine pe prima linie valoarea n, iar pe a doua linie n numere. S se citeasc numerele i s se scrie ordonate cresctor n alt fiier. Fiiere cu tip FT1 - Se d un vector de tip persoan, s se ordoneze dup nume FT2 - S se realizeze un program de 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 S1 - S se realizeze un subprogram care primete 3 numere i returneaz cea mai mare valoare dintre ele S2 - S se realizeze un subprogram care primete un numr i returneaz dac este prim sau nu S3 - S se realizeze un subprogram care verific dac un numr este palindrom. Aplicaie: S se verifice dac un numr este superpalindrom (exemplu: 11, care are ptratul, 121, tot palindrom) S4 - S se realizeze un subprogram care primete dou numere i returneaz cmmmc-ul lor S5 - Metoda paharelor: S se realizeze un subprogram care interschimb coninutul a dou variabile primite ca parametri S6 - S se realizeze un subprogram care primete dou numere i returneaz cel mai mare dintre ele printr-un alt parametru

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)! ) A(n,k) = n! / (n-k)! P(n) = n! C(3,2) = ab, ac, bc A(3,2) = ab, ba, ac, ca, bc, cb 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

-8-

www.compendium.ro
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 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 maxim pt.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 - Se dau valorile monedelor, se d o sum, s se afieze varianta de plat a sumei n numrul minim de monede B5 - Problema damelor: S se aeze n dame pe o tabl de ah de dimensiune n*n far ca acestea s se atace ntre ele B6 - Problema sariturii calului: S se afieze poziiile pe care poate sari un cal pe o tabl de sah de dimensiune n*n astfel nct s sar o singur dat pe toate ptratelele B7 - Problema colorrii hrilor B8 - 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 stie 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.

-9-

www.compendium.ro
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 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

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 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, graf complet (cte muchii are), graf complementar, graf bipartit, componente conexe, componente tare conexe, graf conex, graf hamiltonian, graf eulerian Un subgraf se obine prin eliminarea minim a unui vrf. Un graf parial se obine prin eliminarea minim a unei muchii.

- 10 -

www.compendium.ro
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. 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, Roy Floyd Gr4 - Dijkstra Exemple de grafuri pentru Dijkstra 6 2 4 70 7 2 5 30 1 3 40 3 4 30 1 2 30 3 5 20 1 2 20 4 6 25 1 3 50 4 6 15 1 5 30 5 6 20 1 6 10 4 7 50 2 3 15 2 3 40 6 7 35 2 4 20 Arbori - 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 Arbori binari - arbore n care fiecare nod are maxim doi fii Metode de reprezentare: vectorii stnga i dreapta Parcurgera arborilor binari: svd (inordine), sdv (postordine), vsd (preordine - n adncime) - Arbore binar de cutare

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)

- 11 -

www.compendium.ro
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!);

START

gasit = false

i=1

NU

DA

i <= n

NU

gasit = true

DA

NU

DA

x = v[i]

Nu exista

Exista

gasit = true

STOP

i = i+1

- 12 -