Sunteți pe pagina 1din 79

Caietul de sarcini

la practica de specialitate I
Scopul:
consolidarea cunotinelor acumulate n procesul de instruire teoretic, precum i
utilizarea lor n practic, pregtirea specialitilor calificai, gata s in piept concurenei pe piaa
forei de munc.
Competene specifice
CS1. Aplicarea metodelor de algoritmizare, de formalizare, de analiz, de sintez i de
programare pentru soluionarea problemelor legate de prelucrarea automatizat a informaiei.
CS2. Translarea algoritmilor frecvent utilizai ntr-un limbaj de programare (Pascal, C++).
CS3. Formarea deprinderilor de interaciune interpersonal i de lucru n grup;
n conformitate cu planul de nvmnt, durata practicii este de 90 ore (12 zile, ultima zi
destinat susinerii practicii) i se finalizeaz cu prezentarea i susinerea portofoliului de
practic. Portofoliu (anexa) este evaluat i notat dup sistemul general de evaluare (1 - 10) de
conductorul practicii.
Cerine:
se va studia, n detaliu, problema propus de coordonatorul practicii i se va realiza un
program (n limbajul C++ i/sau Pascal) pentru aceasta problem, punndu-se accent pe
interfaa cu utilizatorul (ferestre, meniuri, help etc.);
se va realiza un program care, n funcie de specificul unitii, s realizeze controlul unui
proces sau gestiunea unei baze de date(de dimensiuni reduse);
fiierul surs al programului mpreun cu un set de date de test se vor salva pentru a fi
prezentate la susinerea practicii.
n portofoliu de practic se vor descrie: problema studiat, varianta de rezolvare (eventual
descrierea programelor existente), cerinele generale ale programului (necesarul de
memorie i timp) i documentaiile de utilizare;
Practica se va finaliza cu prezentarea unui raport asupra practicii i cu o demonstraie pe
calculator a produsului soft elaborat.
Fiecare student va ntocmi agenda de practic tehnologic care va consemna:
numele i prenumele, anul de studii;
locul de desfurare al practicii i perioada;
activitatea desfurat n fiecare zi de practic, reieind din sarcinile prevzute n programa
analitic;
Coninuturi
Nr. Uniti de coninut Nr. de ore
Introducere. Familiarizarea cu sarcina individual de lucru n procesul
1 4
practicii de iniiere.
2 Elemente de programare modular n limbajele: Pascal i C/C++. 12
Aplicaii ale tehnicilor de programare utilizate n procesul de studiu n
3 24
baza limbajelor: Pascal i C++.
4 Elemente de programare orientat pe obiecte n baza limbajului C++ 24
5 Formarea deprinderilor de lucru n echipe. 16
6 Prezentarea raportului pentru practic 10
Total 90

Modulul 1: Elemente de programare modular n limbajele: Pascal i C/C++.

Fiiere
1) Fiierul date.in conine 3 valori separate printr-un singur spaiu, care reprezint vrsta,
nlimea i genul unei persoane. S se scrie un program care determin greutatea ideal a
unei persoane cunoscnd nlimea, vrsta i genul persoanei (f sau m). Formulele de calcul
sunt:

Gmasculin = 50 + 0.75 * (nlime - 150) + (vrsta - 20) / 4,


Gfeminin = Gmasculin 10,
unde nlimea este exprimat n cm i vrsta n ani.. La ecran se va afia greutatea ideal.
Toate datele despre persoan (vrsta, nlimea, genul, greutatea ideal) se vor scrie n
fiierul date.out.
2) Fiierul date.in conine 3 numere ntregi separate printr-un singur spaiu. S se elaboreze
un program care va afia aceste numere unul sub altul, afind n dreptul fiecruia unul
dintre cuvintele PAR sau IMPAR. Rezultatul va fi afiat la ecran ct i n fiierul
date.out.
3) Fiierul date.in conine 3 numere ntregi distincte separate printr-un singur spaiu. S se
elaboreze un program care va specifica care dintre numere are valoare maximal, minimal
i care nu este nici minim nici maxim. Rezultatul va fi afiat la ecran ct i n fiierul
date.out.
4) Fiierul date.in conine 12 numere ntregi separate printr-un singur spaiu care reprezint
temperaturile medii ale lunilor unui an, ca numere ntregi. S se afieze cu dou zecimale
media anual a temperaturilor pozitive i a celor negative. Rezultatul va fi afiat la ecran
ct i n fiierul date.out.
5) Fiierul date.in conine n numere ntregi separate printr-un singur spaiu. Primul numr
reprezint numrul de numere din fiier. Datele din fiier reprezint mediile a n elevi, ca
numere reale. S se afieze cea mai mare i cea mai mic medie. S se verifice dac sunt
corigeni. Rezultatul va fi afiat la ecran ct i n fiierul date.out.
Exemplu: Date de intrare: 4 9.50 4.25 9.66 6.33; Date de ieire: max=9.66 min=4.25 1
corigent.
6) Fiierul date.in conine n numere ntregi separate printr-un singur spaiu. Primul numr
reprezint numrul de numere din fiier. S se afieze numrul minimal, maximal, numrul
de elemente pare, impare i media numerelor cu dou zecimale. Rezultatul va fi afiat la
ecran ct i n fiierul date.out.
7) Fiierul date.in conine elementele unei matrice. n prima linie sunt scrise numrul de linii
i de coloane separate printr-un spaiu. Pe urmtoarele linii sunt scrise elementele matricei.
Elaborai un program care va afia la ecran i va scrie n fiierul date.out elementele
matricei i poziiile pe care se afl valoarea maximal.
8) Fiierul date.in conine elementele unei matrice. n prima linie sunt scrise numrul de linii
i de coloane separate printr-un spaiu. Pe urmtoarele linii sunt scrise elementele matricei.
Elaborai un program care va afia la ecran si va scrie n fiierul date.out elementele
matricei i suma de pe fiecare linie.
9) Fiierul date.in conine elementele unei matrice. n prima linie sunt scrise numrul de linii
i de coloane separate printr-un spaiu. Pe urmtoarele linii sunt scrise elementele matricei.
Elaborai un program care va afia la ecran si va scrie n fiierul date.out elementele
matricei i minimul de pe fiecare coloan.
10) Fiierul date.in conine un ir de caractere. Elaborai un program care va determina numrul
de majuscule din ir. Rezultatul va fi afiat la ecran ct i n fiierul date.out.
11) Fiierul date.in conine un ir de caractere. Elaborai un program care va nlocui cifrele din
ir cu semnul +. Rezultatul va fi afiat la ecran ct i n fiierul date.out.
12) Fiierul date.in conine un ir de caractere. Elaborai un program care va afia doar cifrele
din ir. Rezultatul va fi afiat la ecran ct i n fiierul date.out.
13) Fiierul date.in conine un ir de caractere. Elaborai un program care va determina numrul
de cifre din ir. Rezultatul va fi afiat la ecran ct i n fiierul date.out.
14) Fiierul date.in conine un ir de caractere. Elaborai un program care va nlocui vocalele
din ir cu spaiu. Rezultatul va fi afiat la ecran ct i n fiierul date.out.
15) Fiierul date.in conine un ir de caractere. Elaborai un program care va determina numrul
de caractere speciale (paranteze, operatori aritmetici) din ir. Rezultatul va fi afiat la ecran
ct i n fiierul date.out.
16) n fiierul date.in sunt scrise mai multe numere ntregi. Elaborai un program prin
intermediul cruia se vor aduga numerele pare din fiierul date.in n fiierul date.out.
17) Elaborai un program prin intermediul cruia va fi creat un fiier. Numele fiierului se va
citi de la tastatur. n fiier vor fi scrise toate numerele pare mai mici dect n (n<10000), n
se citete de la tastatur.
18) Elaborai un program prin intermediul cruia va fi creat un fiier. Numele fiierului se va
citi de la tastatur. n fiier vor fi scrise toate numerele impare mai mici dect n (n<10000),
n se citete de la tastatur.
19) Fiierul date.in conine mai multe numere reale (cel puin 2). Elaborai un program prin
intermediul cruia n acest fiier se va aduga media aritmetic a ultimelor 2 numere.
20) Fiierul date.in conine mai multe numere reale (cel puin 2). Elaborai un program prin
intermediul cruia n acest fiier se va aduga media aritmetic a numerelor din fiier.
21) n fiierul date.in este scris un numr ntreg pozitiv mai mic dect 1000. Elaborai un
program care va aduga n fiier un triunghi:
a) b) c)
4 4 4
1 1234 1
12 123 21
123 12 321
1234 1 4321

22) n fiierul date.in sunt scrise mai multe cuvinte, fiecare cuvnt este separat printr-un singur
spaiu. Elaborai un program prin intermediul cruia se va afia la ecran coninutul
fiierului, cel mai lung cuvnt i cel mai scurt cuvnt.
23) S se creeze un fiier care va conine informaii (denumirea i preul) la o list de produse
alimentare.
a) S se afieze denumirea produselor cu cel mai mic pre;
b) Fiind dat un pre, s se afieze denumirile produselor cu acest pre;
c) S se afieze lista produselor n ordinea lexicografic a denumirii lor;
d) S se afieze lista produselor n ordinea descresctoare a preurilor;
e) S se pstreze lista ordonat n c) ntr-un alt fiier;
f) S se insereze n fiierul creat n e) un nou produs dat respectnd ordinea.
24) S se creeze un fiier care va conine informaii (numele, prenumele, anul naterii, salariul,
sexul) despre angajaii unei ntreprinderi.
a) S se afieze lista angajailor de sex feminin;
b) S se calculeze salariul mediu al unui angajat;
c) S se afieze lista persoanelor cu salariul mai mic dect cel mediu;
d) Fiind date numele i prenumele unui angajat, s se afieze toat informaia despre acest
angajat;
e) S se pstreze n alt fiier coninutul fiierului original, n ordinea lexicografic a
numelui, prenumelui;
f) S se creeze n fiierul creat n e) un nou angajat respectnd ordinea.
25) Se d un fiier text n care fiecare rnd reprezint 2 numere naturale separate printr-un
spaiu. S se creeze un alt fiier, ce insereaz ntre cele 2 numere ale fiecrui rnd media
aritmetic a acestor numere.
Exemplu: Fiierul de intrare:

28 24
10 15
4 71
Fiierul de ieire:
28 26 24
10 12,5 15
4 37,5 71
26) Se d un fiier text n care fiecare rnd conine cel mult 255 de caractere. S se construiasc
un alt fiier, care nu va conine rndurile de lungime maximal ale primului fiier.
27) Se d un fiier text n care fiecare rnd conine cel mult 255 de caractere. S se afieze
cuvntul (eventual cuvintele) care se repet de cele mai multe ori.
28) a) Se d un fiier text n care fiecare rnd conine cel mult 255 de caractere i care reprezint
un ir de numere naturale separate printr-un spaiu. S se afieze pentru fiecare rnd textul
DA sau NU, n funcie de faptul dac irul este sau nu ordonat cresctor.
b) Se d un fiier text n care fiecare rnd conine cel mult 255 de caractere i care reprezint
un ir de numere naturale separate printr-un spaiu. S se afieze pentru fiecare rnd textul
DA sau NU, n funcie de faptul dac irul este sau nu ordonat descresctor.
Subprograme

1) S se defineasc o funcie pentru calcularea factorialului i s se calculeze cu ajutorul ei


combinri din n elemente luate cte m. Numerele naturale m i n sunt date. Formula de
calcul:
!

= .
! ( )!
2) Definind funcia-putere, s se calculeze valoarea expresiei:
= 1 + 0,52 + 0,54 + 0,56 + 0,58 .
3) S se defineasc funciile max(a, b) i min(a, b), care returneaz respectiv cel mai mare i
cel mai mic dintre numerele reale a i b, apoi s se calculeze valoarea expresiei:
a) S=max(min(1 , 2 ),max(3 , 4 ))+min(max(5 , 6 ),min(7 , 8 )), unde 1 , 2 , , 8
sunt numere reale date;
b) T=min(1 , 2 )+min(3 , 4 )+...+min(9 , 10 )+max(1 , 2 )+max(3 , 4 )+...+max(
9 , 10 ) unde 1 , 2 , , 10 sunt numere reale date.
4) Se d o mulime de puncte n plan. S se calculeze cea mai mic distan dintre oricare 2
puncte posibile.
5) a) S se descrie o funcie care va returna numrul de divizori proprii ai numrului natural
dat (divizorii proprii sunt diferii de 1 i de numrul dat).
b) Utiliznd funcia din a), s se afieze numerele naturale mai mici dect 10 000, care au
exact n divizori proprii, unde n este un numr natural dat mai mic dect 20.
6) De la tastatur se citete un numr ntreg n, n<100 000. Elaborai un program cu funcii
prin intermediul cruia se va determina:

a) Numrul de cifre;
b) Numrul de cifre pare;
c) Numrul de cifre impare;
d) Suma cifrelor;
e) Cifra maxim;
f) Cifra minim;
g) Media aritmetic a cifrelor;
h) Cifrele care se repet de cel puin dou ori;
i) Cifrele numrului separate printr-un sigur spaiu;
j) Divizorii numrului;
k) Inversul numrului;
l) Mesajul PRIM, dac numrul este numr prim;
m) Cel mai mare numr posibil creat din aceste cifre.
7) De la tastatur se citesc dou numere ntregi. Elaborai un program cu funcii prin
intermediul cruia se va determina:

a) Suma numerelor;
b) Produsul numerelor;
c) Media aritmetic a numerelor;
d) Cel mai mare divizor comun;
e) Cel mai mic multiplu comun;
f) Numrul minim;
g) Numrul maxim;
h) Suma numerelor n formatul a+b=c, dac a i b reprezint numerele citite;
i) Produsul numerelor n formatul a*b=c, dac a i b reprezint numerele citite;
j) Toi divizorii comuni;
k) Cinci multipli comuni;
l) Cifrele care se conin n ambele numere;
m) Cifrele care sunt n primul numr i nu sunt n al doilea numr;
n) Va afia mesajul PRIETENE, dac numerele sunt prietene. Dou numere se numesc
prietene, dac numrul de divizori este acelai.
8) De la tastatur se citesc trei numere ntregi. Elaborai un program cu funcii prin
intermediul cruia:

a) Se va determina cel mai mare divizor comun al numerelor;


b) Se va determina cel mai mic multiplu comun al numerelor;
c) Se va determina valoarea maxim;
d) Se va determina valoarea minim;
e) Se vor afia toi divizorii comuni;
f) Se vor afia cei mai mici trei multipli comuni.
g) Se va verifica dac numerele citite pot fi lungimile laturilor unui triunghi;
g.1. Se va determina aria triunghiului, dac valorile citite pot forma un triunghi;
g.2.Se va determina perimetrul triunghiului, dac valorile citite pot forma un triunghi;
h) Se vor afia soluiile reale ale ecuaiei 2 + + = 0 dac a, b, c reprezint
coeficienii ecuaiei.
9) De la tastatur se citesc dou numere ntregi. Pentru fiecare dintre urmtoarele cazuri s se
creeze cte o procedur, prin intermediul creia se va determina:

a) Suma numerelor;
b) Produsul numerelor;
c) Media aritmetic a numerelor;
d) Cel mai mare divizor comun;
e) Cel mai mic multiplu comun;
f) Numrul minim;
g) Numrul maxim.
10) Se consider tipul de date timp (ora:min:sec). Elaborai un program prin intermediul cruia
se va crea cte o procedur pentru:

a) Citirea timpului de la tastatur;


b) Afiarea timpului la ecran, n formatul ora:min:sec, dac 0sec59 i 0min59.
c) Determinarea sumei dintre cele dou variabile de tipul timp;
d) Determinarea diferenei dintre cele dou variabile de tipul timp;
e) Determinarea valorii maximale;
f) Determinarea valorii minimale;
11) Se consider tipul de date data (an:luna:zi). Elaborai un program prin intermediul cruia
se va crea cte o procedur pentru:

a) Citirea datei de la tastatur;


b) Afiarea datei la ecran, n formatul an:luna:zi, dac 1zi30 i 1luna12.
c) Determinarea sumei dintre cele dou variabile de tipul data;
d) Determinarea diferenei dintre cele dou variabile de tipul data;
e) Determinarea valorii maximale;
f) Determinarea valorii minimale;
12) Se consider tipul de date polinom ( 2 + + ). Elaborai un program prin intermediul
cruia se va crea cte o procedur pentru:

a) Citirea coeficienilor polinomului de la tastatur;


b) Afiarea polinomului la ecran, n formatul 2 + + , dac a, b, c reprezint
coeficienii polinomului.
c) Determinarea sumei dintre cele dou polinoame;
d) Determinarea diferenei dintre cele dou polinoame;
e) Determinarea polinomului maxim;
f) Determinarea polinomului minim;
g) Determinarea soluiilor reale ale polinomului.
13) Se dau numerele reale pozitive, a, b, c care sunt lungimile laturilor unui triunghi. S se
calculeze lungimile medianelor triunghiului.
Indicaie: Lungimea medianei corespunztoare laturii de lungimea a se calculeaz cu
ajutorul formulei = 0,52 2 + 2 2 2 .
14) Se consider un triunghi cu lungimile laturilor egale cu a, b, c, - numere reale. Pentru
fiecare dintre urmtoarele cazuri s se creeze cte o procedur, prin intermediul creia:
a) Se va citi de la tastatur lungimile laturilor;
b) Se va determina dac valorile a, b i c au fost introduse corect (pot forma un triunghi),
n caz contrar se va repeta operaia de citire, pn cnd valorile nu vor fi introduse
corect;
c) Se va determina aria i perimetrul triunghiului;
d) Se va afia tipul triunghiului (ascuit, drept, obtuz).
15) Se dau numerele reale pozitive, a, b, c care sunt lungimile laturilor unui triunghi. S se
calculeze nlimile triunghiului.

Indicaie: S se utilizeze formula = , unde A este aria triunghiului, iar nlimea
2

corespunztoare laturii a.
16) S se descrie o funcie care va returna valoarea true, dac numrul natural dat este prim,
altfel valoarea false. Utiliznd funcia de mai sus, s se afieze toi divizorii primi ai
numrului natural dat n.
17) Se d un vector cu n (1<n<100) componente numere ntregi. S se afle:
a) cel mai mare divizor comun (CMMDC) al componentelor vectorului.
Indicaie: CMMDC(1 , 2 , , )=CMMDC( , (1 , 2 , , 1 ))
b) cel mai mic multiplu comun (CMMMC) al componentelor vectorului.
Indicaie: CMMMC(1 , 2 , , )=CMMMC , (1 , 2 , , 1 )
18) S se defineasc o funcie care determin dac un numr natural dat este ptrat perfect.
Utiliznd aceast funcie, s se determine care dintre componentele unui vector dat de
numere naturale sunt ptrate perfecte.
19) S se defineasc un subprogram care va efectua:
a) adunarea a dou fracii;
b) nmulirea a dou fracii;
c) simplificarea unei fracii pn la o fracie ireductibil;
d) compararea a dou fracii.
20) S se defineasc un subprogram care va:
a) aduna dou numere complexe;
b) nmuli dou numere complexe;
c) mpri dou numere complexe;
d) calcula modulul unui numr complex;
e) ridica la putere un numr complex.
21) S se defineasc un subprogram care va:
a) aduna dou matrice ptrate;
b) nmuli dou matrice ptrate;
c) calcula transpusa unei matrice ptrate;
d) calcula inversa unei matrice ptrate.
22) S se defineasc un subprogram care va:
a) aduna msurile a dou unghiuri (exprimate n grade, minute, secunde);
b) scdea msurile a dou unghiuri;
c) nmuli msura unui unghi cu un numr natural;
d) mpri cu rest msurile a dou unghiuri;
e) compara msurile a dou unghiuri.
23) S se defineasc un subprogram care va:
a) aduna dou intervale de timp (exprimate n secunde, minute, ore, zile, sptmni);
b) scdea dou intervale de timp;
c) nmuli un interval de timp cu un numr natural;
d) mpri cu rest dou intervale de timp;
e) compara dou intervale de timp.
24) S se defineasc un subprogram care va.
a) aduna o dat calendaristic (o dat calendaristic este exprimat de un triplet de forma
(zi, luna, an)) cu un numr de zile, rezultatul fiind o dat calendaristic;
b) aduna o dat calendaristic cu un numr de luni, rezultatul fiind o dat calendaristic;
c) scdea dintr-o dat calendaristic un numr de zile, rezultatul fiind o dat
calendaristic;
d) scdea dintr-o dat calendaristic un numr de luni, rezultatul fiind o dat
calendaristic;
e) scdea dou date calendaristice, rezultatul fiind numrul de zile dintre aceste date.
25)
a) S se scrie o funcie care va efectua adunarea a dou numere naturale, al crei rezultat
poate avea pn la 255 de cifre.
b) Utiliznd funcia din a), s se realizeze un program pentru nmulirea unui numr
natural cu un numr mai mic dect 100, al crei rezultat poate avea pn la 255 de cifre.
26) S se descrie o funcie care va efectua nmulirea a dou numere naturale, fiecare coninnd
pn la 100 de cifre.
27) S se descrie o funcie care va efectua mprirea (exact sau cu rest) a unui numr ce
conine pn la 255 de cifre la un numr mai mic dect 1000.
28) S se efectueze adunarea, scderea i nmulirea a dou numere date ntr-o baz dat,
diferit de 10. Rezultatul se va afia n aceeai baz.
Indicaie. Se pot utiliza dou funcii: una pentru conversia n sistemul zecimal, alta din
sistemul zecimal.
29) Se d numrul natural n. S se determine al n-lea termen din irul Fibonacci:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
De exemplu, pentru n = 8 se va afia 21.
30) S se defineasc un program care va calcula derivata unui polinom de o nedeterminat.
Pentru reprezentarea polinomului s se utilizeze tipul string.
Exemplu: 3*x^4-12*x^3+125*x-39 reprezint polinomul 3 4 12 3 + 125 39.
31) Ipotezele lui Goldbach.
a) S se reprezinte fiecare numr par mai mare sau egal cu 6 i mai mic dect 1000 ca
sum a dou numere prime impare.
Exemplu: 100 = 97 + 3 = 89 + 11 = 71 + 29 = ...
b) S se reprezinte fiecare numr natural mai mare dect 1 i mai mic dect 1000 ca sum
a cel mult trei numere prime.
32) S se descrie o funcie care va efectua mprirea cu rest a dou numere naturale, fiecare
fiind compus din cel mult 255 de cifre.
33) Formulele lui Ramanujan.
S se calculeze:

a) 1 + 21 + 31 + 41 +

S se compare rezultatul cu 3.


b) 8 8 + 8 8 8 + 8 , unde semnele rdcinilor se repet n grup

cte trei: -,+,-.


S se compare rezultatul cu 1 + 23 sin 20

c) 11 211 + 211 211 211 + , unde semnele rdcinilor se repet n

grup cte trei: -,+,-.


S se compare rezultatul cu 1 + 4 sin 10.

d) 23 223 + 223 + 223 223 + , unde semnele rdcinilor se repet n

grup cte trei: -,+,+.


S se compare rezultatul cu 1 + 43 sin 20.

34) Se dau numerele naturale b i n, unde 1<b<10. S se defineasc un subprogram care va:
a) verifica dac un numr dat este scris corect n sistemul de numeraie cu baza b;
b) aduna dou numere scrise n sistemul de numeraie cu baza b;
c) scdea dou numere scrise n sistemul de numeraie cu baza b;
d) nmuli dou numere scrise n sistemul de numeraie cu baza b;
e) mpri dou numere scrise n sistemul de numeraie cu baza b;
f) transforma un numr din sistemul de numeraie cu baza b n sistemul zecimal de
numeraie;
g) transforma un numr din sistemul zecimal de numeraie n sistemul de numeraie cu
baza b.
35) Problema lui Fermat. S se gseasc un numr, astfel nct suma cubului numrului i
divizorilor proprii ai numrului s fie ptrat perfect.
36) Se dau coordonatele a n (3<n<50) puncte din plan. Definind o funcie care determin dac
3 puncte sunt sau nu coliniare, s se determine dac fiecare 3 din cele n puncte sunt
necoliniare.
37) Se consider un tablou unidimensional. Elaborai un program cu funcii/proceduri prin
intermediul crora:
a) De la tastatur se vor citi elementele tabloului;
b) Se vor afia elementele tabloului la ecran;
c) Se vor sorta elementele cresctor;
d) Se vor inversa elementele tabloului;
e) Va fi determinat elementul maximal;
f) Va fi determinat elementul minimal;
g) Se va determina numrul de elemente maximale;
h) Se va determina numrul de elemente minimale.
38) Se consider dou tablouri cu numere ntregi, a i b. Elaborai un program utilizarea
funciilor/procedurilor prin intermediul crora:
a) De la tastatur se citesc elementele tablourilor;
b) Se afieaz la ecran elementele tablourilor;
c) Va determina suma elementelor fiecrui tablou;
d) Va determina diferena elementelor fiecrui tablou;
e) Va crea un nou tablou care va conine toate elementele tabloului a i b;
f) Va crea un nou tablou format doar din elementele comune ambelor tablouri.
39) Se consider un tablou bidimensional cu numere ntregi. Elaborai un program cu
funcii/proceduri prin intermediul crora:
a) De la tastatur se vor citi elementele tabloului;
b) Se vor afia elementele tabloului la ecran;
c) Va fi determinat elementul maximal;
d) Va fi determinat elementul minimal;
e) Se va determina numrul de elemente maximale;
f) Se va determina numrul de elemente minimale;
g) Se vor afia sumele pe linii;
h) Se vor afia sumele pe coloane;
i) Se vor sorta elementele cresctor pe linii;
j) Se va determina suma elementelor de pe perimetrul tabloului.
40) Se consider un ir de caractere. Elaborai un program cu funcii/proceduri, prin
intermediul cruia:
a) Se va determina dac irul este palindrom;
b) Se vor afia doar vocalele din ir;
c) Se vor afia doar cifrele din ir;
d) Se va determina numrul de cuvinte din ir;
e) Se vor sorta cresctor elementele irului;
f) Se va inversa irul;
g) Se va determina cuvntul de lungime minim;
h) Se va determina cuvntul de lungime maxim;
i) Se va inversa fiecare cuvnt din ir.
41) Elaborai un program prin intermediul cruia vor fi create proceduri pentru conversia
numerelor n ir de caractere i invers:
a) Procedur pentru transformarea irului n numr ntreg, dac irul conine doar cifre;
b) Procedur pentru transformarea unui numr ntreg n ir;
c) Procedur pentru transformarea irului n numr real, dac irul conine doar cifre i
caracterul punct;
d) Procedur pentru transformarea unui numr real n ir.
Recursia

1) De la tastatur se citete un numr ntreg. Elaborai un subprogram recursiv, prin


intermediul cruia se va determina valoarea expresiilor:
a) 1 + 3 + 5 + + 2 1;
b) 2 + 4 + 6 + + 2;
c) 2 + 5 + 8 + + 3 1;
d) 1 + 5 + 9 + + 4 3;
1 1 1 1
e) + 7 + 12 + + 53 ;
2
1 1 1 1
f) + 8 + 13 + + 52 ;
3
1 1 1 1 1
g) + + + (1) .
2 4 8 16 2

2) S se calculeze coeficienii binomiali 1 , 2 , obinui n urma dezvoltrii unui binom


la puterea n (n > 2), tiind c are loc urmtoarea relaie de recuren:
+1
= 1 i 0 = 1, pentru orice 1 .

3) Se d numrul natural n. S se calculeze suma:


a) 2*2+3*4+4*6+5*8+6*10+...+n*2(n-1);
1 2 3
b) = + (35) + (57) + + (21)(2+1).
(13)

4) Se citete de la tastatur numrul natural dat n. Folosind un subprogram recursiv, s se


calculeze suma 1 + 2 + ... + n.
1, > 10
5) S se calculeze valoarea funciei : , = { , pentru
(( + 2)), 10
argumentul dat n.
6) Se consider un tablou unidimensional cu numere ntregi. Elaborai un subprogram
recursiv prin intermediul cruia:
a) De la tastatur se citesc elementele acestui tablou unidimensional;
b) Se vor afia elementele tabloului n ordinea citirii lor;
c) Se vor afia elementele tabloului n ordine invers a citirii lor;
d) Va determina suma elementelor;
e) Va determina suma elementelor pare;
f) Va determina suma elementelor impare;
g) Va afia elementele pare;
h) Va afia elementele impare;
i) Va verifica existenta numrului k n tablou (k se introduce de la tastatur);
j) Va verifica existenta numerelor pare n tablou.
7) Elaborai un subprogram recursiv prin intermediul cruia:
a) Se va determina produsul dintre dou numere ntregi prin adunri repetate;
b) Se va determina ctul dintre dou numere ntregi prin scderi repetate;
c) Se va determina restul mpririi dintre dou numere ntregi prin scderi repetate.
8) Elaborai un subprogram recursiv, prin intermediul cruia se va determina dac un numr
ntreg, este sau nu numr prim.
9) S se determine cel mai mare divizor comun a dou numere naturale. S se scrie varianta
recursiv.

a, a b

CMMDC(a, b) cmmdc(a b, b), a b
cmmdc(a, b a), b a

10) Se cere de scris un program, varianta recursiv, pentru calculul irului de numere
Fibonacci:1,1,2,3,5,8,...21.
11) S se determine cel mai mare divizor comun a trei numere naturale. S se scrie varianta
recursiv.

a, a b

CMMDC(a, b) cmmdc(a b, b), a b
cmmdc(a, b a), b a

12) Se cere de scris un program, varianta recursiv, care afieaz la ecran suma primelor n
termeni ai irului de numere: 1,5,9,13,17,...,4n-3,...
0, n 0
S ( n)
S (n 1) 4 * n 3
13) Este dat irul de numere 1,6,11,16,21,. S se determine suma primelor n numere a
irului dat. S se scrie varianta recursiv.
1, n 0
S ( n)
5 * n 4 S (n 1)
14) Calcularea valorilor a dou funcii f(x) i g(x). S se alctuiasc un program utiliznd
recursia indirect pentru a calcula valorile funciilor
g ( x 1), x 1 f ( x) 1, x 0
f ( x) i g ( x)
x 2, x 1 x, x 0
15) Aplicnd recursivitatea indirect s se determine valorile funciilor

2, x 3


x

x 1
2
,x 0 2, x 0
x


a( x) b( x 2),3 x 6 , b( x) a( x) 5,0 x 5 , c( x) a( x 1),0 x 5 .
c( x 1), x 6 c(1) 1, x 5 b( x 1), x 5



16) S se alctuiasc un program pentru calcularea funciei Ackerman:

n 1, m 0

Ack (m, n) Ack (m 1,1), n 0
Ack (m 1, Ack (m, n 1)), m, n 0

17) Sunt date 2 funcii:

2 2 1, x 5
x
4 5 x 3x 2, x 1
2

f ( x) x 2,5 x 8 i g ( x)
3, x 8 x x 5, x 1
2

De calculat:
a) Compoziia f(g(f(x)));
b) Compoziia g(f(g(x)));
c) Compoziia f(g(f(g(f(x))))).
18) Aplicnd recursivitatea indirect s se determine valorile funciilor:

, = 0 , = 0
= {1 + 1 + 1 , > 0 = { 3 , > 0
1 1 1
3
, = 0
= {
1 + 1 + 1 , > 0
19) Se d numrul natural n, n<65000, i numrul natural b de o cifr. S se scrie
reprezentarea numrului n n baza b. S se scrie varianta recursiv.
20) S se alctuiasc un program pentru calcularea funciei Hermite.

1, n 0

H (n, x) 2 x, n 1
2 x * H (n 1, x) 2(n 1) * H (n 2, x)), n 2

21) S se alctuiasc un program pentru calcularea funciei Cebev.

1.n 0

T (n, x) 2 x, n 1
2 x * T (n 1, x) T (n 2, x), n 2

22) S se alctuiasc un program pentru calcularea funciei Manna Pnueli.

x 1, x 12
F ( x)
F ( F ( x 2)), x 12
23) S se alctuiasc un program recursiv pentru calcularea polinoamelor Legendre definite
prin relaiile:
1
0 () = 1, 1 () = [(2 1)1 () ( 1)2 ()], unde i=2, , n.
24) Se d un numr natural n. Se cere s se elaboreze un program recursiv care ne va genera
toate partiiile numrului n.

25) Se d numrul natural n. S se calculeze valorile funciilor , : , n n, dac


a) f(0) = 1, f(1) = 2;
b) g(0) = 3, g(1) = 4;
c) f(x) = f(x - 1) + g(x - 1) ;
d) g(x)=2g(x-1)+3f(x-1), pentru orice numr natural x >1.
26) Se d un fiier text cu numere naturale, dup care urmeaz un numr ntreg negativ.
Folosind un subprogram recursiv, s se calculeze suma numerelor naturale din fiier.
27) Se d numrul natural n. S se genereze toate submulimile mulimii {1, 2, , n}.
28) Se d o matrice ptrat A(n, n) de numere ntregi. S se calculeze determinantul matricei,
utiliznd formula descompunerii dup prima linie:
a) det = =1(1)+1 1 det ,
b) Unde Bi este matricea obinut din A eliminnd prima linie i coloana i.
29) Se d numrul natural n. O persoan trebuie s urce o scar cu n trepte. tiind c la
fiecare pas persoana poate s urce una sau dou trepte (evident, consecutive), s se
determine numrul de moduri n care persoana poate urca scara.
30) Fie n localiti notate cu numerele 1, 2, ..., n. ntre fiecare dou dintre aceste localiti
exist sau nu drum. n cazul n care exist, se tie i lungimea drumului. Fiind date dou
localiti, s se determine dac se poate ajunge dintr-o localitate n alta i s se determine
drumul de lungime minim dintre aceste localiti.
31) Fie dat numrul natural n. S se genereze toate permutrile din n elemente a mulimii
A={1,2,3,, n}.
Se numesc permutri ale unei mulimi A cu n elemente toate mulimile ordonate care se
pot forma cu cele n elemente ale lui A. Pentru n N*, avem Pn = 1*2*3*...*n=n!
32) S se genereze aranjamentele din n luate cte k a mulimii A={1,2, n}.
=
!
( 1) ( + 1) = ()! ,

33) S se genereze combinri din n elemente luate cte m. Numrul combinrilor a n


elemente luate cte m este calculat cu formula:
n!
Cnm =
m! (n m)!
34) Fiind dat o hart cu n ri, se cer toate soluiile de colorare a hrii aplicnd cel mult 4
culori, astfel nct dou ri cu frontiera comun s fie colorate diferit.

Exemplu:
ara 1 este vecin cu rile 2 i 4.
ara 2 este vecin cu rile 1,3,4 i 5.
ara 3 este vecin cu rile 2,4 i 5.
ara 4 este vecin cu rile 2 i 5.
ara 5 este vecin cu rile 2,3 i 4.
O soluie ar fi:
1 2 1 3 4
35) Se d un labirint sub form de matrice cu m linii i n coloane. Fiecare element al matricei
reprezint o camer a labirintului. ntr-una din camere, de coordonate x i y se gsete un
om. Se cere s se gseasc toate ieirile din labirint.

36) Se consider n orae numerotate de la 1 la n. Un comis-voiajor trebuie s-i prezinte


produsele n cele n orae fr a trece de dou ori prin acelai ora cu condiia s se
ntoarc n oraul de start. ntre orae poate exista drum direct sau nu. S se determine
toate rutele posibile pe care poate s se deplaseze comis-voiajorul.
37) Considerndu-se o tabl de ah de dimensiune n x n, s se determine toate modalitile de
amplasare a n regine pe tabla de ah astfel nct s nu se atace reciproc (dou regine se
atac dac se afl pe aceeai linie, coloan, sau diagonal).

Structuri dinamice de date

1) Prin intermediul structurilor dinamice de date, creai tipul de date telefon cu cmpurile:
marca, culoare, anul fabricrii, preul. n baza acestui tip elaborai un program prin
intermediul cruia se va gestiona datele despre telefoanele mobile (minim 10 telefoane).
Citirea datelor se va efectua din fiier. Programul va conine un meniu cu urmtoarele
opiuni:
a) Afiarea tuturor telefoanelor;
b) Afiarea celor mai noi telefoane;
c) Afiarea celor mai scumpe telefoane;
d) Cutarea telefoanelor dup marc;
e) Cutarea telefoanelor dup pre, cu indicarea preului minim i maxim;
f) Sortarea telefoanelor descresctor dup anul fabricrii;
g) Sortarea telefoanelor cresctor dup marc;
h) Inserare datelor despre un telefon nou;
i) Excluderea unui telefon.
2) De la tastatur se citesc cuvinte. S se creeze o list simplu nlnuit ordonat alfabetic,
care conine n celule cuvintele distincte i frecvena lor de apariie. Se va afia coninutul
listei n ordine alfabetic
3) De la tastatur se citesc mai multe numere ntregi. S se creeze o list ordonat cresctor.
4) De la tastatur se citete numrul n i numele a n copii. S se simuleze urmtorul joc: cei
n copii stau ntr-un cerc. ncepnd cu un anumit copil, se numr copiii n sensul acelor de
ceasornic. Fiecare al n-lea copil iese din cerc. Ctig ultimul copil rmas n joc.
5) Se consider un depou de locomotive cu o singur intrare i cu o singur linie de cale ferat,
care poate cuprinde oricte locomotive. S se scrie programul care realizeaz
dispecerizarea locomotivelor din depou. Programul prelucreaz comenzi de intrare n
depou a unei locomotive, de ieire din depou a unei locomotive i de afiare a
locomotivelor din depou.
6) De la tastatur se citesc cuvinte (iruri de caractere). S se scrie un program care creeaz
un arbore de cutare, care conine n noduri cuvintele i frecvena lor de apariie. S se
afieze apoi cuvintele n ordine lexicografic cresctoare i frecvena lor de apariie.
7) Informaiile pentru medicamentele unei farmacii sunt: nume medicament, pre, cantitate,
data primirii, data expirrii. Evidenta medicamentelor se tine cu un program care are drept
structur de date un arbore de cutare dup nume medicament. S se scrie programul care
execut urmtoarele operaii:
a) creeaz arborele de cutare;
b) caut un nod dup cmpul nume medicament i actualizeaz cmpurile de informaie;
c) tiprete medicamentele n ordine lexicografic;
d) elimin un nod identificat prin nume medicament;
e) creeaz un arbore de cutare cu medicamentele care au data de expirare mai veche
dect o dat specificat de la terminal.
8) Se consider o list unidirecional cmpul informaional al fiecrei celule conine un
numr real. Scriei un program care ar aduga ntre oricare dou celule vecine a listei
iniiale celule noi, cmpul informaional al crora va fi media aritmetic a numerelor din
celulele vecine.
Ieire: La ecran se afieaz valorile cmpurilor informaionale ale celulelor listei
modificate.
9) S se creeze o list din 100 de numere aliatoare ntregi.
a) S se determine prin parcurgerea listei suma numerelor pozitive;
b) S se afieze numerele n ordinea invers generrii;
c) S se afieze numerele n ordinea generrii.
10) Utiliznd o stiv, s se afieze descompunerea zecimal a unui numr ntreg dat n.
Exemplu: pentru n=-345 se va afia n=-3*10^2+4*10+5
11) S se creeze o list ce va conine numele, vrsta i telefonul a 10 persoane.
a) S se afieze la ecran primele 5 persoane din list;
b) S se afieze la ecran persoanele de pe poziiile pare din list;
c) S se afieze la ecran persoanele cu vrsta mai mare de 20 de ani;
d) S se determine poziia n list a persoanei cu numele dat.
12) Pentru fiecare student dintr-o grup se tie numele i 3 note la o sesiune
a) S se creeze lista studenilor n ordinea lexicografic a numelui;
b) S se creeze lista studenilor n ordinea descresctoare a notei medii;
c) S se creeze lista studenilor cu nota medie mai mare dect 5 n ordinea lexicografic
a numelui;
d) S se elimine restanierii din lista creat n b).
13) Se citesc de la tastatur dou iruri de numere ntregi mai mici dect 1000 pn cnd se
citete un alt fel de numr i se formeaz dou liste-mulimi.
a) S se afieze mulimile;
b) S se afieze reuniunea i intersecia mulimilor din a).
14) Se citesc de la tastatur dou iruri de numere ntregi. Sfritul fiecrui ir este marcat prin
prezena pe poziia i a numrului i.
a) S se formeze al treilea ir format din elementele primelor dou iruri;
b) S se ordoneze cresctor elementele irului al treilea.
15) Se d un fiier text.
a) S se formeze lista cuvintelor din text n ordinea alfabetic;
b) S se calculeze numrul cuvintelor de lungime maximal.
16) Se consider o list de cuvinte. S se scrie un subprogram:
a) pentru inserarea unui cuvnt la nceputul listei;
b) pentru inserarea unui cuvnt la sfritul listei;
c) pentru verificarea existenei unui cuvnt n list;
d) pentru tergerea unui cuvnt din list.
17) S se genereze 2 liste de numere ntregi
a) S se creeze a treia list format din numerele care se ntlnesc doar n una dintre
primele dou liste;
b) S se creeze a treia list concatennd primele dou liste i ordonnd cresctor
componentele ei.
18) Se dau dou liste de numere ntregi
a) S se scrie un subprogram care verific dac listele sunt egale;
b) S se scrie un subprogram care verific dac o list se conine n alta;
c) S se scrie o funcie care returneaz numrul de componente comune ale listelor.
19) Funcia OFS(v) returneaz numrul de octei ce reprezint adresa variabilei v, relativ de
segmentul n care se afl ea. Se d o matrice de numere ntregi. S se arate c elementele
matricei A(m, n) se scriu n memorie n ordinea:
a11, a12, ..., a1n, a22, ..., a2n, ..., amn
20) Se d un fiier text. S se afieze rsturnatul coninutului fiierului.
21) Se d o list de numere ntregi. S se scrie un subprogram care din lista dat formeaz dou
liste: una format din numerele negative, alta din celelalte numere.
22) Un polinom de o singur nedeterminat se poate reprezenta printr-o list, unde fiecare
celul a listei este un monom al polinomului. S se realizeze un algoritm ce efectueaz:
a) adunarea a dou polinoame;
b) scderea a dou polinoame;
c) nmulirea a dou polinoame.
23) Un numr natural mare poate fi reprezentat printr-o list, unde fiecare celul a listei conine
o cifr a numrului. S se realizeze un algoritm care va efectua:
a) adunarea a dou numere naturale mari date;
b) scderea a dou numere naturale mari date;
c) nmulirea a dou numere naturale mari date.
24) S se realizeze un algoritm care va efectua nmulirea a dou polinoame de mai multe
nedeterminate. Polinoamele se vor citi din fiiere text.
25) Din fiierul date.in se citete un numr natural k i apoi de pe a doua linie numere ntregi.
Construii o list liniar simplu nlnuit care s conin numerele ntregi citite n ordinea
din fiier.
Permutai lista cu k poziii spre stnga i afiai valorile din list.
Indicaie: se vor scrie i folosi funcii pentru adugarea unei valori la sfritul listei i
pentru tergerea primului nod al listei i vor fi folosite pentru permutarea cerut.
Exemplu:
date.in
3
1 2 3 4
date.out
4123
26)
a) S se creeze o LLDI care s memoreze numere ntregi citite dintr-un fiier text;
b) S se scrie o funcie care primete ca parametru adresa primului nod al listei i o
afieaz n ambele sensuri;
c) S se scrie o funcie care primete ca parametru adresa p a unui nod i un numr natural
x i adaug dup nodul indicat de p un nod care s conin valoarea x;
d) S se scrie o funcie care primete ca parametru adresa p a unui nod i terge nodul
indicat de p;
e) Folosind funciile de punctele b), c) i d) s se adauge dup nodul al doilea un nod cu
informaia 7, s se tearg al treilea nod i apoi primul nod i s se afieze lista n
ambele sensuri dup fiecare dintre aceste operaii.
27) S se creeze o list liniar dublu nlnuit cu noduri care s conin:
- cmpul info numr ntreg de maxim 4 cifre;
- cmpurile prec i urm care s conin informaii de legtur spre nodul anterior,
respectiv urmtor din list.
a) S se afieze lista n ambele sensuri;
b) S se tearg toate nodurile din lista cu excepia primului i a ultimului nod.
28)
a) S se creeze o list liniar simplu nlnuit care s memoreze urmtoarele informaii
despre elevii unei clase format din n elevi:
- numele (ir de maxim 20 de caractere)
- prenumele (ir de maxim 20 de caractere)
- 3 note ntr-un vector cu 3 componente reale
b) S se afieze numele, prenumele i media fiecrui elev;
c) S se scrie o funcie care calculeaz i returneaz media clasei.
29) Se consider o list liniar dublu nlnuit n ale crei noduri sunt memorate cifre. S se
scrie o funcie care primete ca parametru adresa primului nod al listei i verific dac
numrul care se compune din cifrele memorate n list n ordine este sau nu palindrom.

Arbori Binari
1) Se citete un arbore cu n vrfuri dat prin vectorul TATA.
a) S se afieze muchiile arborelui; 2
b) S se construiasc i s se afieze matricea de adiacen a
arborelui. 1 3
Exemplu: Pentru vectorul TATA 2 0 2 1 3 se vor afia
muchiile [1,2] [2,3] [1,4] [3,5] i matricea de adiacen:
4 5
01010
10100
01001
10000
00100
2) Se citete un arbore cu n vrfuri dat prin vectorul muchiilor i apoi se citete vrful
rdcin. S se construiasc i s se afieze vectorul TATA.
Exemplu: Pentru un arbore cu 5 noduri, cu muchiile [1,2] [2,3] [1,4] [3,5] i rdcina 2 se
obine vectorul TATA 2 0 2 1 3
2

1 3

4 5

3) Se citete un arbore cu n vrfuri dat prin vectorul muchiilor i apoi se citete vrful
rdcin. S se calculeze i s se afieze numrul de niveluri ale arborelui.
Exemplu: Pentru un arbore cu 5 noduri i muchiile [1,2] [2,3] [1,4] [3,5] numrul de

2
niveluri este 3.

1 3

4 5
4) Se citete un arbore cu n vrfuri dat prin vectorul TATA.
a) S se afieze gradele vrfurilor;
b) S se afieze pentru fiecare vrf nivelul pe care se afl (numerotarea nivelelor ncepe
de la 0-rdcina).

Exemplu: Pentru vectorul TATA 2 0 2 1 3 se vor afia urmtorii vectori:


Gradele: 2 2 2 1 1
2
Nivelele: 1 0 1 2 2

1 3

4 5
5) Se citete un graf neorientat cu n vrfuri i m muchii etichetate prin costuri (ponderi)
pozitive. Graful este dat prin vectorul muchiilor. Se cere s se determine un arbore parial
de cost minim (are suma costurilor muchiilor sale minim).
6) Din fiierul date.in se citete un numr natural n reprezentnd numrul de vrfuri ale unui
arbore binar i apoi vectorii S i D pentru descendenii fiecrui nod din arbore.
a) S se parcurg arborele n preordine, inordine i postordine;
b) S se parcurg arborele pe nivele;
c) S se calculeze i s se afieze nlimea arborelui.

Exemplu:
date.in
7
2400700
3560000
Se va afia:
Preordine: 1 2 4 5 7 3 6
Inordine: 4 2 7 5 1 3 6
Postordine: 4 7 5 2 6 3 1
Pe nivele: 1 2 3 4 5 6 7
Adncimea: 3
7) Arbore parial de cost minim (cu algoritmul lui Kruskal).
Exemplu:
date.in 351
58 451
123 date.out
132 341
154 351
143 132
236 123
341 *soluia nu este unic
8) Arbore parial de cost minim (cu algoritmul lui Prim).
Exemplu:
date.in 351
58 451
123 date.out
132 132
154 341
143 351
236 123
341 *soluia nu este unic
9) Se d un arbore prin vectorul de tip TATA. Calculai i afiai distana dintre oricare dou
vrfuri ale arborelui sub forma unei matrici.
Distana dintre dou vrfuri este egal cu lungimea lanului care le unete.
Exemplu:
date.in
6
202131
date.out
012131
101222
210313
123042
321404
123240
10) Se citete un numr natural n. Construii un arbore cu proprietatea c fiecare vrf are
numrul de descendeni direci cu 1 mai mare dect nivelul pe care se afl. Excepie fac
frunzele i nodul pentru care se termin cele n vrfuri.
Astfel, rdcina (aflat pe nivelul 0) are un singur descendent direct, vrful de pe nivelul
1 are 2, cele de pe nivelul 2 au cte trei, etc.
Arborele va fi reprezentat prin vectorul legturilor de tip TATA.
Exemplu:
n=15
Vectorul TATA:
012233344455556
11) Se d un arbore binar cu n noduri prin vectorii de descendeni S i D. Afiai vectorii T i
P (reprezentarea cu legturi ascendente de tip TATA i respectiv poziia descendentului:
-1 pentru stnga, 1 pentru dreapta).
Exemplu:
date.in 00
12 00
23 00
45 0 12
06 00
78 date.out
09 0 1 1 2 2 3 4 4 5 6 6 11 (T)
10 11 0 -1 1 -1 1 1 -1 1 1 -1 1 1 (P)
00
12) Se d un arbore binar cu n noduri prin vectorii de descendeni S i D. Afiai pe rnduri
separate:
- frunzele arborelui;
- vrfurile cu un singur descendent direct;
- vrfurile cu doi descendeni direci.

Exemplu:
date.in 00
12 00
23 0 12
45 00
06 date.out
78 frunzele: 7 8 9 10 12
09 vrfurile cu un singur descendent: 3
10 11 5 11
00 vrfurile cu doi descendeni: 1 2 4 6
00
13) Se d un arbore cu n vrfuri avnd muchiile etichetate cu costuri numere naturale.
Calculai costul ntre oricare dou vrfuri ale arborelui.
Exemplu:
date.in date.out
5 (n) 0 4 5 10 11
1 2 4 (i j cost) 40967
135 5 9 0 15 16
246 10 6 15 0 1
451 11 7 16 1 0
14) Se citete un vector A cu n elemente numere ntregi. Plasai indicii 1,2...n ntr-un arbore
binar astfel nct n urma parcurgerii n inordine a acestuia s se afieze vectorul A sortat
cresctor. Arborele binar va fi reprezentat prin vectorii S i D.
Exemplu:
n=7
A=3 4 1 2 9 0 6
Vectorii S i D rezultai sunt:
S=3 0 6 0 7 0 0
D=2 5 4 0 0 0 0
iar vectorul A sortat:
A=0 1 2 3 4 6 9
15) Se d o expresie aritmetic n forma polonez prefixat. Expresia este format din
operatorii + - / * %, iar operanzii sunt dintr-un singur caracter.
Construii arborele binar asociat expresiei citite i afiai expresia n forma normal
(infixat).
Exemplu:
/-+*5314+27
n forma normal este (((5*3)+1)-4)/(2+7)
16) Se d un arbore binar cu n vrfuri prin vectorii S i D. Stabilii dac este plin, sau
complet, sau nici unul dintre cazuri.
Exemple:
7 6
23 23
45 45
56 60
00 00
00 00
00 00
00 complet
plin
17) Se d un numr natural n. Construii un arbore binar complet cu vrfurile 1,2...n astfel
nct n urma parcurgerii pe nivele s fie afiate valorile 1,2...n.
Se vor afi vectorii S i D.
Exemplu:
n=8
S=2 4 6 8 0 0 0 0 0
D=3 5 7 9 0 0 0 0 0
18) Se d un arbore cu n noduri prin vectorul de referine de tip TATA. S se determine dac
arborele poate fi reprezentat ca un lan.
Exemple:
n=6
T=0 1 1 2 3 2 rspunsul este nu
n=6
t=0 1 1 2 3 5 rspunsul este da
19) Se dau doi arbori cu rdcin prin doi vectori de tip TATA. Determinai dac cei doi
arbori cu rdcin reprezint acelai arbore (difer doar n urma alegerii rdcinilor
diferite)
Exemplu:
date.in
5
01122
31022
date.out
da
20) n fiierul date.in se d un arbore binar cu n vrfuri (cel mult 1000) prin vectorii S i D
(pentru fiecare vrf se precizeaz fiul stng i apoi cel drept). S se calculeze i s se
afieze pentru fiecare vrf v numrul de vrfuri din subarborele care l are pe v ca
rdcin.
Exemplu:
date.in 3
6 2
35 1
06 6
00 1
12 1
00
00
date.out
21) n fiierul date.in se d un arbore binar cu n vrfuri (cel mult 1000) prin vectorii S i D
(pentru fiecare vrf se precizeaz fiul stng i apoi cel drept). S se calculeze i s se
afieze numrul de nivele ale arborelui i apoi cte vrfuri se afl pe fiecare nivel.
Exemplu:
date.in
6
35
06
00
12
00
00
date.out
3
123
22) Se d un arbore cu n vrfuri (cel mult 99) prin vectorul TATA. Folosind algoritmul
asemntor cu algoritmul Roy-Floyd, determinai i afiai cel mai lung lan elementar
din arborele citit.
Exemplu:
date.in
8
20252537
date.out
452378
23) ntr-o firma sunt n angajai, numerotai de la 1 la n, fiecare angajat avnd un singur ef
direct, cu excepia directorului, care nu are ef. Ierarhia firmei este dat printr-un vector
de tip TATA. Fiecare angajat al firmei are un salariu dat printr-un numr natural.
Angajaii i eful sunt recompensai astfel: ctigul fiecrui salariat este egal cu salariul
su la care se adaug media aritmetic a ctigurilor subordonailor si direci. Media
aritmetic se rotunjete prin adaos la un numr ntreg (de exemplu 5.33 se rotunjete la
6). Angajaii care nu au subordonai direci ctig doar salariul.
Calculai care este ctigul directorului firmei.
Exemplu:
date.in
8 (numrul de angajai)
4 3 0 3 2 1 2 1 (vectorul TATA)
2 6 4 3 7 3 1 5 (salariul fiecrui angajat)
date.out
14
24) Se dau n fiierul date.in numerele n, p i q unde n este numrul de noduri ale unui arbore
iar p i q sunt noduri din arbore. Apoi se citete vectorul TATA prin care este reprezentat
arborele. Afiai lanul elementar de la vrful p la vrful q.
Exemplu:
date.in
725
4170771
date.out
2175
25) S se citeasc de la tastatur n numere naturale, care se adaug, pe msur ce se citesc,
ntr-o stiv implementat dinamic, apoi s se adauge aceste numere ntr-un arbore binar
de cutare de unde se vor lista: toate numerele din arbore n preordine, n ordine i n
postordine, toate numerele divizibile cu un numr furnizat de la tastatur, toate ptratele
perfecte i s se calculeze media lor aritmetic.
26) S se implementeze un arbore unde fiecare nod are maxim 3 copii, aranjai dup
urmtoarea regul:
- numrul nodului copilului din stnga este mai mic dect jumtate din numrul
nodului rdcin;
- numrul nodului copilului din mijloc este cuprins ntre numrul nodului rdcin
mprit la 2 i numrul nodului rdcin;
- numrul nodului copilului din dreapta este mai mare dect numrul nodului rdcin.
Dup crearea arborelui de mai sus s se listeze n postordine, n ordine i n preordine
vectorii de parcurgere ai arborelui.
27) Evidenta articolelor dintr-un magazin se tine ntr-un arbore binar de cutare cu stocurile
articolelor i printr-un arbore binar de cutare cu tranzaciile efectuate (intrri i ieiri din
magazin). Pentru fiecare nod din arborele stoc se reine: cod articol (un numr ntreg
cuprins ntre 100 i 999), denumire articol (un text alfabetic i numeric), unitatea de
msur, un ir de 2 caractere (bc, kg, ml, mp, mc, t, l), pre, cantitate iar pentru fiecare
nod din arborele cu tranzacii se reine: cod tranzacie (1 - intrare articole n gestiune, 2 -
ieire articole din gestiune (vnzri)), cod articol (un numr ntreg cuprins ntre 100 i
999), denumire articol (un text alfabetic i numeric), unitatea de msur, un ir de 2
caractere (bc, kg, ml, mp, mc, t, l), pre, cantitate. Gestiunea articolelor din magazin se
ine printr-un meniu de comenzi de forma:
i intrare articole n magazin;
e ieire articole din magazin (vnzri) ;
s operarea tranzaciilor n arborele cu stocuri (stoc articol = stoc iniial + intrri
ieiri) ;
1 lista intrrilor n magazin (fizic i valoric);
2 lista ieirilor din magazin (vnzrile fizice i valorice);
0 lista stocurilor finale din magazin (fizice i valorice);
d tergerea din arborele de stocuri a articolelor care au stocurile epuizate
(zero).
Observaie: Pentru toate informaiile tastate se vor face validrile necesare.
28) S se creeze un arbore de cutare pentru n numere complexe, n care fiecare nod va
conine ca informaie util partea real i partea imaginar a unui numr complex de
forma x + iy.
- s se parcurg n postordine, n ordine i n preordine arborele binar creat listndu-se
numerele complexe, conjugatele acestora, i modulele lor
- s se listeze numerele complexe care au partea real nul
- s se listeze numerele complexe care au partea imaginar nul
- utiliznd o funcie, s se tearg din arbore numerele complexe care au partea real i
partea imaginar egal i apoi s se listeze din nou numerele complexe ramase.
29) Elaborai un program care construiete arborele genealogic propriu pe parcursul a trei sau
patru generaii. Nodul-rdcin conine numele, prenumele i anul naterii, iar nodurile
descendente conin datele respective despre prini.
30) Scriei o funcie recursiv care returneaz numrul nodurilor unui arbore binar.
Transcriei aceast funcie ntr-o form nerecursiv.

Modulul 2Aplicaii ale tehnicilor de programare utilizate n procesul de studiu n baza


limbajelor: Pascal i C/C++

Tehnica Trierii

1) Se consider numerele naturale din mulimea {1, 2, 3, ..., n}. S se determine toate
elementele acestei mulimi, pentru care suma cifrelor este egal cu un numr dat m.
2) Se consider numerele naturale din mulimea {1, 2, 3, ..., n}, n<100000, n se citete din
fiier. S se determine toate elementele acestei mulimi, pentru care suma cifrelor este un
numr impar, divizibil cu trei;
3) Fiierul date.in conine mai multe caractere, s se afieze cea mai lung secven de
caractere identice. Dac sunt mai multe secvene, se va afia prima.
Exemplu: Date de intrare: aabsssdadaaab; Date de ieire: sss.
4) Se consider numerele naturale din mulimea {1, 2, 3, ..., n}, n<100000, n se citete din
fiier. S se determine toate elementele acestei mulimi, pentru care suma cifrelor este
divizibil cu a i cu b, a i b se citesc din fiier.
5) Se consider mulimea P={P1,P2,...,Pn} format din n puncte (2n30) pe un plan
euclidian. Fiierul date.in conine pe prima linie numrul n, care reprezint numrul de
puncte din plan pe liniile urmtoare se regsesc coordonatele punctelor. Fiecare punct Pj
este definit prin coordonatele sale xj, yj . Elaborai un program care afieaz la ecran
coordonatele punctelor Pa, Pb distana dintre care este maxim. Distana dintre punctele
Pj, Pm se calculeaz cu ajutorul formulei:

= ( )2 + ( )2

6) Pe o suprafa plan sunt mai multe puncte, date prin coordonatele lor. Fiierul date.in,
care pe prima linie conine numrul de puncte din plan, iar pe urmtoarele linii sunt scrise
coordonatele punctelor. Elaborai un program prin intermediul cruia se va determina
numrul maximal de triunghiuri care pot fi formate din aceste puncte cu condiia c:
a) Triunghiurile formate nu se intersecteaz;
b) Triunghiurile formate sunt nscrise;
c) Triunghiurile formate au un vrf comun.

La ecran se va afia numrul de triunghiuri.


7) n notaia (a)x litera x reprezint baza sistemului de numeraie, iar litera a - un numr scris
n sistemul respectiv. Elaborai un program care calculeaz, dac exist, cel puin o
rdcin a ecuaiei (a)x = b, unde a i b sunt numere naturale, iar x este necunoscuta.
Fiecare cifr a numrului natural a aparine mulimii {0, 1,2, ..., 9}, iar numrul b este
scris n sistemul zecimal.
Exemplu: rdcina ecuaiei (160)x = 122 este x=8, iar ecuaia (5)x=10 nu are soluii.
Estimai complexitatea temporal a programului elaborat.
8) ntr-o puculi se afl N monede de diferite valori cu greutatea total G grame. Greutatea
fiecrei monede de o anumit valoare este dat n tabelul ce urmeaz.

Valoarea monedei, lei Greutatea monedei, grame


1 1

5 2
10 3

25 4

50 5

Elaborai un program care determin suma minim S care ar putea s fie n puculi.
9) Elaborai un program care determin cte puncte cu coordonate ntregi se conin ntr-o
sfer de raza R cu centrul n originea sistemului de coordonate. Se consider c R este un
numr natural, 1R30. Distana d dintre un punct cu coordonatele (x, y, z) i originea
sistemului de coordonate se determin dup formula: = 2 + 2 + 2 .

Tehnica Greedy

1) Problema spectacolelor. ntr-o sal ntr-o zi trebuie planificate n spectacole. Pentru


fiecare spectacol se cunoate intervalul n care se desfoar: (nceput, sfrit). Se cere s
se planifice un numr maxim de spectacole astfel nct s nu se suprapun.
2) Problema rucsacului. O persoan are un rucsac cu care poate transporta o greutate
maxim G. Persoana are la dispoziie n obiecte i cunoate pentru fiecare obiect greutatea
i ctigul care se obine n urma transportului su la destinaie. Se cere s se precizeze ce
obiecte trebuie s transporte persoana n aa fel nct ctigul s fie maxim. Persoana are
posibilitatea s taie obiectele
3) Problema bancomatelor. Scriei un program, care afieaz modalitatea de plat, a unui
bancomat, folosind un numr minim de bancnote, a unei sume ntregi S de lei
(S<100000). Plata se efectueaz folosind bancnote cu valoarea 1, 5, 10, 50, 100, 200 i
500 de lei. Numrul de bancnote de fiecare valoare se citete din fiierul text date.in, care
conine 7 rnduri, n fiecare din care sunt indicate numrul de bancnote respectiv de 1, 5,
10, 50, 100, 200 i 500 de lei.
4) Suma componentelor prime. Fie A o variabil indexat, ale crei componente A(1),
A(2),..., A(n) sunt numere naturale nenule. S se determine suma componentelor care sunt
numere prime. Atunci cnd un numr prim se repet, el va fi luat n consideraie o
singur dat.
5) La un concurs de automobilism de la linia de start pn la final sunt plasate n staii de
benzin (la diferite distane). Avnd rezervorul plin, maina unui concurent poate
parcurge cel mult o distan d (n kilometri). Concurentul dorete s se opreasc de ct
mai puine ori i desigur s parcurg ntreg drumul de la punctul de start la cel final.
Descriei o metod eficient pe care trebuie s o aplice concurentul i artai c strategia
respectiv conduce la o soluie optim.
6) Memorarea fiierelor pe benzi magnetice. Se consider n fiiere f1, f2, ..., fn care trebuie
memorate pe o band magnetic. Elaborai un program care determin ordinea de
amplasare a fiierelor pe band astfel nct timpul mediu de acces s fie minim. Se
presupune c frecvena de citire a fiierelor este aceeai, iar pentru citirea fiierului fi
(i=1, 2, ..., n) sunt necesare ti secunde.
7) Hrubele de la Cricova. Dup o vizit la renumitele hrube de la Cricova un informatician
a construit un robot care funcioneaz ntr-un cmp divizat n ptrele (fig. 1). Robotul
poate executa doar instruciunile SUS, JOS, DREAPTA, STNGA, conform crora se
deplaseaz n unul din ptrelele vecine. Dac n acest ptrat este un obstacol, de
exemplu, un perete sau un butoi, are loc un accident i robotul iese din funciune.
1 2 3 4 5 6 7 8 9

1 Robotul

2
Intrare Ieire
3

Fig. 1. Cmpul de aciune al robotului

Elaborai un program care, cunoscnd planul hrubelor, deplaseaz robotul prin ncperile
subterane, de la intrarea n hrube la ieire. Colecia de vinuri fiind foarte bogat, nu se
cere vizitarea obligatorie a tuturor ncperilor subterane.
Datele de intrare: Planul hrubelor este desenat pe o foaie de hrtie liniat n ptrele.
Ptrelele haurate reprezint obstacolele, iar cele nehaurate - spaiile libere. Ptrelele
de pe perimetrul planului, cu excepia celor de intrare sau ieire, sunt haurate prin
definiie. n form numeric planul hrubelor este redat prin tabloul A cu m linii i n
coloane. Elementele A[i,j] ale acestui tablou au urmtoarea semnificaie: 0 - spaiu liber;
1 - obstacol; 2 - intrarea n hrube; 3 - ieirea din hrube. Iniial, robotul se afl n ptrelul
pentru care A[i,j]=2. Fiierul date.in conine pe prima linie numerele m, n separate prin
spaiu. Pe urmtoarele m linii se conin cte n numere A[i,j] separate prin spaiu.
Datele de ieire: Fiierul date.out va conine pe fiecare linie cte una din instruciunile
SUS, JOS, DREAPTA, STNGA scrise n ordinea executrii lor de ctre robot.
Restricii: 5 m, n 100. Timpul de execuie nu va depi 3 secunde.
Exemplu:
date.in date.out
7 9 SUS
1 1 1 1 1 1 1 1 DREAPTA
1 1 0 0 1 0 0 0 DREAPTA
0 1 1 0 1 0 0 1 DREAPTA
0 1 1 1 0 0 0 1 DREAPTA
0 0 0 1 1 0 1 0 SUS
1 0 1 0 1 1 0 0 SUS
0 0 0 1 0 1 1 2 DREAPTA
1 1 1 1 1 3 1 DREAPTA
JOS
JOS
JOS
Indicaii: La fiecare pas selectai din mulimea {SUS, JOS, DREAPTA, STNGA} cte
o instruciune n aa fel, nct robotul s se deplaseze numai de-a lungul unui perete.
8) Fiind dat o tabl de ah de dimensiunea n x n i un cal n colul stnga sus al acesteia, se
cere s se deplaseze calul pe tabl astfel nct s treac o singur dat prin fiecare ptrat
al tablei. Soluia va fi afiat ca o matrice n x n n care sunt numerotate sriturile calului.

Exemplu: pentru n=11


1 26 85 30 23 28 99 120 21 104 101
84 31 24 27 86 119 22 103 100 121 20
25 2 83 80 29 98 107 118 115 102 105
32 81 34 87 108 79 116 97 106 19 114
3 36 69 82 75 88 109 112 117 96 93
64 33 76 35 70 111 78 95 92 113 18
37 4 63 68 77 74 89 110 57 94 91
40 65 38 71 62 67 56 73 90 17 54
5 44 41 66 49 72 61 58 55 14 11
42 39 46 7 60 51 48 9 12 53 16
45 6 43 50 47 8 59 52 15 10 13
9) Meniuri. La inaugurarea unui restaurant sunt prezente mai multe persoane. Clienii i
aleg din meniul pus la dispoziie cte o specialitate. Dar deocamdat restaurantul a
angajat un singur buctar care pregtete mncrurile una dup alta, deci clienii nu pot fi
servii dect pe rnd. Presupunnd c buctarul se apuc de lucru dup ce s-au strns
toate comenzile, stabilii n ce ordine trebuie s pregteasc specialitile, astfel nct
timpul mediu de ateptare a clienilor s fie minim.
Date de intrare: Prima linie a fiierului de intrare date.in conine un numr natural n,
reprezentnd numrul clienilor. Urmtoarea linie conine n numere ntregi, reprezentnd
timpul necesar pregtirii mncrurilor comandate, n ordine, pentru cele n persoane.
Aceste numere vor fi separate prin cte un spaiu.
Date de ieire: Fiierul de ieire date.out va conine dou linii. Pe prima linie se va scrie
un numr real cu dou zecimale, reprezentnd timpul mediu de ateptare, iar pe a doua
linie se vor afla n numere, reprezentnd numerele de ordine ale persoanelor din
restaurant, n ordinea n care trebuie servite.
Restricii i precizri:
- 1 n 1000;
- 1 t 100, unde t reprezint timpul necesar preparrii unei specialiti de mncare;
- dac exist mai multe soluii, n fiier se va scrie una singur.

Exemplu:
date.in
5
30 40 20 25 60
date.out
86.00
34125
10) Submulimi. Se consider o mulime avnd n elemente numere ntregi. S se determine o
submulime de sum maxim a acesteia.

Date de intrare: Prima linie a fiierului de intrare date.in conine numrul n, iar pe
urmtoarea linie se afl cele n numere ntregi, separate prin cte un spaiu.
Date de ieire: Fiierul de ieire date.out va conine o singur linie pe care se vor afla
numerele din submulimea de sum maxim, separate prin cte un spaiu.
Restricii i precizri:
- 1 n 1000
- Dac problema are mai multe soluii, n fiier se va scrie una singur.

Exemplu:
date.in
3 6 0 2 7 3
date.out
3627
11) Staii. Patronul unei companii private de transport n comun a primit de la primria
oraului aprobarea de a putea folosi o parte din staiile Regiei Locale de Transport n
Comun. Staiile disponibile sunt situate de-a lungul arterei principale a oraului. El se
hotrte s introduc o curs rapid care s strbat oraul, de la un capt la cellalt, pe
artera principal. Pentru nceput se ocup de staiile situate de aceeai parte a drumului.
Patronul are o dilem: dac opririle vor fi prea dese, atunci strbaterea oraului va dura
prea mult i va plictisi cltorii, iar dac staiile sunt prea rare, cltorii vor fi prea putini.
De aceea, criteriile dup care patronul stabilete staiile n care va opri cursa rapid sunt:
- ntre dou staii alturate s fie cel puin x metri.
- Numrul total de staii s fie maxim.

Ajutai patronul s aleag staiile!


Date de intrare: Vom considera staiile situate pe aceeai parte a arterei principale
numerotate n ordine, dintr-un capt pn n cellalt cu 1, 2, ..., n. Prima linie a fiierului
de intrare date.in conine un numr natural n, reprezentnd numrul de staii situate pe
artera principal. Urmtoarea linie conine n 1 numere ntregi ai, i = 1, 2, ..., n 1 cu
semnificaia: ai este distana dintre staia i i staia i + 1. Aceste numere vor fi separate
prin cte un spaiu.
Date de ieire: Fiierul de ieire date.out va conine dou linii. Pe prima linie se va scrie
un numr ntreg k care reprezint numrul maxim de staii alese de patron, iar pe a doua
linie se vor afla k numere, reprezentnd numerele de ordine ale acestor staii. Numerele
vor fi scrise n ordine cresctoare.
Restricii i precizri:
- 1 n 1000;
- 1 ai 2000, i = 1, 2, ..., n 1;
- 1 k 1000;
- Dac exist mai multe soluii, n fiier se va scrie una singur.

Exemplu:
date.in
10 60
100 50 25 25 50 10 10 80 20
date.out
5
12589
12) Cutii. Al Bundy este n dificultate! Are n + 1 cutii de pantofi i n perechi de pantofi
identificate prin valorile 1, 2, ..., n (n perechi sunt aezate n n cutii, iar o cutie este
liber). Dar, din pcate, pantofii nu se afl la locurile lor. Pn s vin Gary (efa lui),
Bundy trebuie s potriveasc pantofii n cutii. Dar pentru c Gary poate s apar n orice
clip i Bundy nu vrea s fie prins c nu i face treaba cum trebuie, aranjarea pantofilor
trebuie fcut rapid i n aa fel nct s nu trezeasc bnuieli; prin urmare, dac scoate o
pereche de pantofi dintr-o cutie, trebuie s o pun imediat n cutia liber. Ajutai-l pe Al
Bundy s aranjeze pantofii la locurile lor printr-un numr minim de mutri.

Date de intrare: Prima linie a fiierului de intrare date.in conine numrul n de cutii.
Linia a doua conine n + 1 numere distincte, separate prin cte un spaiu, reprezentnd
dispunerea iniial a perechilor de pantofi n cutiile numerotate de la 1 la n + 1. Printre
cele n + 1 numere unul singur are valoarea 0 i corespunde cutiei goale. Linia a treia
conine n + 1 numere separate prin cte un spaiu, reprezentnd configuraia final cerut,
n care valoarea 0 se afl pe poziia cruia i corespunde cutia goal.
Date de ieire: Fiierul de ieire date.out va conine pe prima linie un numr ntreg k,
reprezentnd numrul minim de mutri.
Restricii i precizri:
- 1 < n < 100.

Exemplu:
date.in
4
34102
40213
date.out
4
Explicaii:
Mutarea 1: perechea 1 se mut din cutia 3 n cutia 4
Mutarea 2: perechea 2 se mut din cutia 5 n cutia 3
Mutarea 3: perechea 3 se mut din cutia 1 n cutia 5
Mutarea 4: perechea 4 se mut din cutia 2 n cutia 1
13) Subiruri. Se d un ir de n numere ntregi. S se descompun acest ir n numr minim
de subiruri strict cresctoare, astfel nct numerele lor de ordine (din irul dat) s fie
ordonate cresctor n subirurile formate.
Date de intrare: Prima linie a fiierului de intrare date.in conine numrul n, reprezentnd
numrul de elemente din ir. Urmtoarea linie conine cele n numere ntregi, separate prin
cte un spaiu.
Date de ieire: Fiierul de ieire date.out va conine pe prima linie un numr ntreg k,
reprezentnd numrul minim de subiruri care se pot forma. Pe urmtoarele k linii vor fi
descrise subirurile cresctoare. Un subir va fi precizat prin numerele de ordine ale
elementelor din irul iniial, desprite prin cte un spaiu.
Restricii i precizri:
- 1 n 10000;
- elementele irului sunt numere cuprinse n intervalul [0, 40000].

Exemplu:
date.in
10
2316837957
date.out
3
12458
367
9 10
Explicaie:
Se pot forma 3 subiruri cresctoare:
2, 3, 6, 8, 9
1, 3, 7
5, 7
14) Medici. O asociaie caritabil asigur consultaii medicale gratuite pentru cei fr
posibiliti materiale. Exist un singur cabinet dotat cu aparatur medical. Din acest
motiv la un moment dat un singur medic poate face consultaii. Asociaia apeleaz la n
medici de diverse specialiti, care i ofer benevol serviciile. Fiecare prezint un singur
interval [si, fi] de-a lungul aceleiai zile, n care este disponibil. Ajutai asociaia s
realizeze o planificare a consultaiilor n cabinet, astfel nct numrul de medici s fie
maxim.

Date de intrare: Prima linie a fiierului de intrare date.in conine numrul n al medicilor.
A doua i a treia linie conin orele de nceput i respectiv orele de sfrit, corespunztoare
celor n medici (numere ntregi). Numerele sunt separate prin cte un spaiu.
Date de ieire: Fiierul de ieire date.out va conine pe prima linie un numr k,
reprezentnd numrul maxim de medici care se pot selecta, astfel nct s fie ndeplinit
condiia din enun. A doua linie va conine k numere care vor reprezenta indicii medicilor
selectai.
Restricii i precizri:
- 1 n 1000;
- 1 fi < si 1000, pentru i = 1, 2, ..., n.

Exemplu:
date.in
2 6 20 4
3 8 23 7
date.out
3
143
15) O ntreprindere care fabric produse alimentare (unt, marmelad, ulei, etc.) dispune de
suma S pentru fabricarea anumitor produse. Se tie c exist n produse care pot fi
fabricate i pentru fiecare produs se cunoate costul obinerii unui kg (litru) din produsul
respectiv, precum i preul de vnzare a unui kg (litru) din produsul respectiv. Scriei un
program care determin ce produse pot s fie fabricate de ntreprindere i n ce cantitate,
astfel nct s se obin o sum maxim la vnzarea lor.
16) Codul Gray. Pentru primele 8 numere naturale, n tabelul de mai jos, observai numrul
scris n baza 10, n binar i n codul Gray. Dup cum putei observa, codul Gray se
caracterizeaz prin faptul c reprezentarea a dou numere consecutive difer exact cu o
poziie binar.
Numr n cod binar n cod Gray

0 000 000

1 001 001

2 010 011

3 011 010

4 100 110

5 101 111

6 110 101
7 111 100

Fiind dat un numr natural n binar, b1b2...bn, scriei un subprogram care convertete
numrul n cod Gray, g1g2...gn, dup urmtorul algoritm:
g1=b1;
gk=(bk+bk-1) modulo 2; pentru k=2,3,...,n.
Exemplu:
n=5, n binar avem 101, iar n Gray avem: 1(1+0) (0+1)=111.
n=7, n binar avem 111, iar n Gray avem: 1(1+1) (1+1)=100.
Observai faptul c soluia se construiete bit cu bit, ceea ce justific includerea
acestei probleme n tehnica Greedy.
17) Fiind dat un numr natural n cod Gray, g1g2...gn, scriei o funcie care convertete
numrul n binar b1b2...bn dup urmtorul algoritm:

b1=g1;
bk=(gk+bk-1) modulo 2; pentru k=2,3,...n
Exemplu:
n=5, n Gray avem 111, iar n binar avem: 1(1+1) (1+0)=101.
n=7, n Gray avem 100, iar n binar avem: 1(0+1) (0+1)=111.
18) Scriei un program care afieaz codurile Gray ale primelor numere naturale citite.
19) Se consider o mulime X cu n elemente. S se elaboreze un algoritm eficient i s se
scrie un program pentru generarea irului tuturor submulimilor lui X, A1,A2,...,Ai+1 astfel
nct Ai+1 s se obin din Ai, prin adugarea sau scoaterea unui element.
20) Problema colorrii hrilor. Sunt date N ri, precizndu-se relaiile de vecintate. Se
cere s se determine o posibilitate de colorare a hrii (cu cele N ri), astfel nct s nu
existe ri vecine colorate la fel.
21) Turiti. O agenie de turism montan are n ghizi capabili s nsoeasc grupurile de turiti
strini n drumeii montane. Toate drumeiile care se organizeaz dureaz exact m zile.
Un ghid poate s nsoeasc ntr-o drumeie un singur grup, el fiind nedisponibil pentru
alte grupuri n acea perioad. La agenie se adun p solicitri nainte de nceperea
sezonului. Fiecare din cele p grupuri solicitante specific data la care dorete s nceap
drumeia. Ajutai directorul ageniei s aleag numrul maxim de grupuri care vor putea
fi nsoite de ghizi pe parcursul unui an ntreg. n plus, el a hotrt c dac exist solicitri
care au data de nceput d n timpul sezonului i s-ar putea desfura n totalitate doar dac
se depete ultima zi a sezonului, se prelungete sezonul cu zilele necesare.
Date de intrare: Prima linie a fiierului de intrare date.in conine numerele k, n, m i p,
desprite prin cte un spaiu (k reprezint numrul zilelor din sezon, n este numrul
ghizilor, m reprezint durata drumeiilor, iar p reprezint numrul solicitrilor). Pe
urmtoarea linie sunt scrise datele di (i = 1, 2, ..., p) pe care grupurile le-au scris pe
solicitri.
Date de ieire: Fiierul de ieire date.out conine un numr ntreg care reprezint numrul
maxim de solicitri rezolvate.
Restricii i precizri:
- 1 n 100;
- 1 m 14;
- 1 p 1000;
- 1 k 365;
- 1 di k (i = 1, 2, ..., p).

Exemplu:
date.in
20 2 5 8
8 2 10 10 4 9 6 19
date.out
5
Explicaii:
Exemplul poate corespunde urmtoarei situaii:
- primul ghid rezolv solicitrile care ncep n zilele 2, 8 i 19
- al doilea ghid rezolv solicitrile care ncep n zilele 4 i 9

Tehnica Relurii
1) Labirintul. Se consider planul unui labirint desenat pe o foaie de hrtie liniate n
ptrele. Ptrelele haurate reprezint obstacolele, iar cele nehaurate - camerele i
coridoarele labirintului. n memoria calculatorului planul labirintului, este redat prin
matricea A=||aij||n*m 1n, m30, unde aij= 1, dac ptrelul este haurat, aij=0, n caz
contrar. Cltorul se poate deplasa dintr-un ptrel nehaurat numai atunci cnd ele au o
latur comun. Elaborai un program care gsete, dac exist, un drum din ptrelul B
n ptrelul C
1 2 3 ... j ... m

2 B
3

...

... C

2) Elaborai un program care afieaz la ecran toate modurile de a descompune un numr


natural n sum de k numere naturale distincte.
Exemplu: pentru n=9 i k=3 soluiile sunt: 1+2+6,2+3+4,1+3+5 3.
3) Avem la dispoziie 6 culori: alb, galben, rou, verde, albastru i negru. S se precizeze
toate drapelele tricolore care se pot proiecta, tiind c trebuie respectate regulile:
a) Orice drapel are culoarea din mijloc galben sau verde;
b) Cele trei culori de pe drapel sunt distincte.
4) Dintr-un grup de n persoane, dintre care p femei, trebuie format o delegaie de k
persoane, din care 1 femei. S se precizeze toate delegaiile care se pot forma.
5) La o mas rotund se aaz n persoane. Fiecare persoan reprezint o firm. Se dau k
perechi de persoane care aparin unor firme concurente. Se cere s se determine toate
modalitile de aezare la mas a persoanelor astfel nct s nu stea alturi dou persoane
de la firme concurente.
6) Se consider n (n<50) sculee, numerotate respectiv: 1, 2, 3,..., n. Sculeul i conine mi
monede de aceiai valoare Vi. Elaborai un program care afieaz la ecran modul de plat
a unei sume p cu monedele din sculee.
7) Dintr-un fiier se citesc numele i notele medii a x clase de elevii. Fiecare clas este
format din minim a i maxim b studeni (2<a<b<30). Studenii necesit a fi grupai n
grupuri de cte x studeni, din fiecare grup este selectat cte un student, astfel nct
media notelor grupului s fie egal cu 8. Afiai lista tuturor grupelor, care pot fi formate,
enumernd numele elevilor din fiecare grup.
8) Se dau n (n50.000) dominouri. S se determine o modalitate de construire al unui ir,
care s conin toate dominourile, respectnd regula jocului domino. Aceast regul
prevede c numerele nscrise pe fetele corespunztoare a dou dominouri consecutive
trebuie s fie egale. Dominourile pot fi alese n ordine oarecare i rotite.
Date de intrare: Prima linie a fiierului de intrare date.in se va afla numrul n al
dominourilor. Pe urmtoarele n linii se vor afla cte dou numere separate printr-un
singur spaiu, reprezentnd cele dou numere nscrise pe dominoul corespunztor.
Date de ieire: Pe prima linie a fiierul date.out va trebuie s afiai 1, dac exist soluie
i 0 dac nu. Dac exist soluie vor urma exact n linii, care descriu irul construit.
Fiecare numr de ordine va fi urmat de un spaiu i de un numr, care poate fi 0 sau 1 i
va fi egal cu 1 n cazul n care dominoul corespunztor a fost rotit.
9) Se citete un numr natural n>=4. S se afieze toate permutrile mulimii {1, 2, ... n}
care au proprietatea c diferena absolut a oricror 2 elemente alturate este cel puin
egal cu 2.

Exemplu: Pentru n=4 se obin permutrile 2 4 1 3 i 3 1 4 2.


10) Pe o tabl de ah n x n sunt plasate m piese marcate prin valoarea -1, iar prin valoarea 0
sunt marcate poziiile libere. ntr-o poziie (i0,j0) se afl un cal. S se determine traseul
format din numr minim de pai pe care calul poate sa mnnce toate piesele de pe tabl
fr a trece de 2 ori prin aceeai poziie. Se citesc mai nti n i m, iar apoi m perechi
reprezentnd coordonatele pieselor. Ultimele se citesc coordonatele calului. Traseul va fi
marcat ntr-o matrice care se va afia.
11) Fie n>0, natural. S se scrie un program care s afieze toate partiiile unui numr natural
n.

Numim partiie a unui numr natural nenul n o mulime de numere naturale nenule {p1,
p2, , pk} care ndeplinesc condiia p1+p2+ +pk = n.
Exemplu: pentru n = 4 programul va afia:
4 = 1+1+1+1
4 = 1+1+2
4 = 1+3
4 = 2+2
4=4
12) Se d o permutare a primelor n numere naturale. Se cer toate permutrile care se pot
obine din aceasta nct nici o succesiune de dou numere, existent n permutarea
iniial, s nu mai existe n noile permutri.
13) Se cer toate soluiile de aezare n linie a m cini i n pisici astfel nct s nu existe o
pisic aezat ntre doi cini.
14) Anagrame. Se citete un cuvnt cu n litere . Se cere s se tipreasc toate anagramele
cuvntului citit. Se poate folosi algoritmul pentru generarea permutrilor.
15) Se dau primele n numere naturale. Dispunem de un algoritm de generare a combinrilor
de n elemente luate cte p pentru ele. Se consider un vector cu n componente iruri de
caractere, unde, fiecare ir reprezint numele unei persoane. Cum adaptai algoritmul de
care dispunei pentru a obine combinrile de n persoane luate cte p?
16) Se citesc n numere naturale distincte. Se cere o submulime cu p elemente astfel nct
suma elementelor sale s fie maxim n raport cu toate submulimile cu acelai numr de
elemente.
17) S se determine 5 numere de cte n cifre, fiecare cifr putnd fi 1 sau 2, astfel nct
oricare dintre aceste 5 numere s coincid exact n m poziii i s nu existe o poziie n
care s apar aceeai cifr n toate cele 5 numere.
18) Fiind dat un numr natural pozitiv n, se cere s se produc la ieire toate descompunerile
sale ca sum de numere prime.
19) Attila i regele. Un cal i un rege se afl pe o tabl de ah. Unele cmpuri sunt arse,
poziiile lor fiind cunoscute. Calul nu poate clca pe cmpuri arse, iar orice micare a
calului face ca respectivul cmp s devin ars. S se afle dac exist o succesiune de
mutri permise (cu restriciile de mai sus), prin care salul s poat ajunge la rege i s
revin la poziia iniial. Poziia iniial a calului, precum i poziia regelui sunt
considerate nearse.
20) Se dau n puncte n plan prin coordonatele lor. Se cer toate soluiile de unire a acestor
puncte prin exact p drepte, astfel nct mulimea punctelor de intersecie ale acestor
drepte s fie inclus n mulimea celor n puncte.
21) Gsii toate soluiile naturale ale ecuaiei 3x+y+4xz=100.
22) S se ordoneze n toate modurile posibile elementele mulimii {1,2,,n} astfel nct
numerele i, i+1, , i+k s fie unul dup cellalt i n aceast ordine (i=1,i+k n).
23) Se consider o mulime de n elemente i un numr natural k nenul. S se calculeze cte
submulimi cu k elemente satisfac, pe rnd, condiiile de mai jos i s se afieze aceste
mulimi.
a) Conin p obiecte date;
b) Nu conin nici unul din q obiecte date;
c) Conin exact un obiect dat, dar nu conin un altul;
d) Conin exact un obiect din p obiecte date;
e) Conin cel puin un obiect din p obiecte date;
f) Conin r obiecte din p obiecte date, dar nu conin alte q obiecte date;
24) Se d un numr natural par n. S se determine toate irurile de n paranteze care se nchid
corect.
Exemplu: pentru n=6: ((( ))), (() ()), () () (), () (()), (()) ()
25) Se dau n puncte albe i n puncte negre n plan, de coordinate ntregi. Fiecare punct alb se
unete cu cte un punct negru, astfel nct din fiecare punct, fie el alb sau negru, pleac
exact un segment. S se determine o astfel de configuraie de segmente astfel nct
oricare dou segmente s nu se intersecteze. Se citesc n perechi de coordonate
corespunznd punctelor negre.
26) S se genereze toate permutrile de n cu proprietatea c oricare ar fi 2in, exist 1ji
astfel nct |v(i)-v(j)|=1.

Exemplu: pentru n=4, permutrile cu proprietatea de mai sus sunt:


2134,2314,3214,2341,3241,3421,4321.
27) O trup cu n actori i propune s joace o pies cu a acte astfel nct:
a) Oricare dou acte s aib distribuie diferit;
b) n orice act exist, evident, cel puin un actor;
c) De la un act la altul, vine un actor pe scena sau pleac un actor de pe scen
(distribuia a dou acte consecutive difer prin exact un actor).

S se furnizeze o soluie, dac exist vreuna.


28) Fiind dat un numr natural n i un vector v cu componente numere ntregi, se cere:
a) S se determine toate subirurile cresctoare de lungime [n/5]
b) S se calculeze p1+p2+...+pk, unde pk reprezint numrul subirurilor cresctoare
de lungime k.
29) Pe malul unei ape se gsesc c canibali i m misionari. Ei urmeaz s treac apa i au la
dispoziie o barc cu 2 locuri. Se tie c, dac att pe un mal, ct i pe cellalt avem mai
muli canibali dect misionari, misionarii sunt mncai de canibali. Se cere s se scrie un
program care s furnizeze toate soluiile de trecere a apei, astfel nct s nu fie mncat
nici un misionar.
30) Se d un careu sub form de matrice cu m linii i n coloane. Elementele careului sunt
litere. Se d, de asemenea, un cuvnt. Se cere s se gseasc n careu prefixul de lungime
maxim al cuvntului respectiv. Regula de cutare este urmtoarea:
a) Se caut litera de la nceputul cuvntului;
b) Litera urmtoare se caut printre cele 4 elemente nvecinate cu elementul care
conine litera de nceput, apoi printre cele 4 elemente nvecinate cu elementul care
conine noua liter, .a.m.d.
31) Se dau coordonatele a n puncte din plan. Se cere s se precizeze 3 puncte care determin
un triunghi de arie maxim. Ce algoritm vom folosi? Scriei un program ce va utiliza
algoritmul dat.
32) Fiind date numele a n soldai, ce algoritm vom utiliza pentru a lista toate grupele de cte
k soldai? Se tie c ntr-o grup, ordinea prezint importan. Scriei un program ce va
utiliza algoritmul dat.
33) Fiind date n numere naturale, ce algoritm vom utiliza pentru a determina eficient o
submulime maximal de numere naturale distincte? Scriei un program ce va utiliza
algoritmul dat.
34) Dispunem de un algoritm care genereaz permutrile prin backtracking. Primele dou
permutri afiate sunt: 321,312. Care este urmtoarea permutare care va fi afiat? Scriei
un program ce va utiliza algoritmul dat.
35) Se citete un numr natural n. S se afieze toate modurile n care poate fi descompus ca
produs de numere naturale diferite de 1 i n.

Exemplu:
36 poate fi descompus ca:

2*2*3*3
2*2*9
2*18
3*3*4
.....
36) Se consider mulimea B={b1, b2,..., bn} format n primele n litere ale alfabetului latin.
Elaborai un program bazat pe metoda relurii care genereaz toate submulimile Bi= Bi
B, formate exact din q litere.

Indicaie: Fiecare submulime Bi poate fi reprezentat prin vectorul caracteristic X= ||xk||n,


1,
unde = {
0,
Este clar c submulimea Bi satisface condiiile problemei dac x1+x2+...+xn=q.
37) Colorarea hrilor. Pe o hart sunt reprezentate n ri, n 30. n memoria calculatorului
1, ,
harta este redat prin matricea A=||aij||nxm unde = {
0,

Determinai numrul minim de culori m necesare pentru a colora harta. Evident, se cere
ca oricare dou ri vecine s fie colorate diferit
38) Generarea combinrilor. S se genereze combinri din n elemente luate cte m.
n!
Numrul combinrilor a n elemente luate cte m este calculat cu formula: Cnm = m!(nm)!

39) Generarea produsului cartezian. Se consider n mulimi A1, A2, ... , An de forma
{1,2..,An}. S se genereze produsul cartezian al acestor mulimi.
Am considerat mulimile de forma {1,2..,An} pentru a simplifica problema, n special la
partea de citire si afiare, algoritmul de generare rmnnd nemodificat.
Identificm urmtoarele particulariti i condiii:
a) Fiecare element Xk din vectorul soluie aparine unei mulimi {1,2..,Ak}. Aici este o
diferen fat de algoritmii anteriori n care fiecare element din soluie era luat din
aceeai mulime i trebuie s avem grij la acest fapt cnd scriem programul.
b) Nu exist condiii ntre elementele vectorului soluie.
c) Obinem soluia cnd s-au generat n valori.
40) Generarea submulimilor unei mulimi. Generarea submulimilor unei mulimi A cu n
elemente se poate face cu ajutorul algoritmului de generare a combinrilor, apelndu-le
repetat cu valorile 1, 2, ..., n pentru a genera submulimile cu un element, apoi cele cu
dou elemente, apoi cu 3 elemente etc.
Aceast modalitate de rezolvare este i mai complicat i mai puin eficient dect
urmtoarea, care se bazeaz pe generarea produsului cartezian {0,1}n. Aceast a doua
metod este eficient deoarece genereaz 2n soluii, adic exact attea cte submulimi
are o mulime cu n elemente.
Aadar, generm toate combinaiile de lungime n cu valorile 0 i 1. Pentru fiecare
combinaie parcurgem soluia X i afim elementele din mulimea A crora le corespund
valori 1 n X. Astfel, pentru combinaia 001011 vom afia elementele de pe poziiile 3, 5
i 6 din mulimea iniial.

Aranjamente i combinri
1) S se genereze i s se numere toate numerele formate din p cifre distincte avnd cifrele
ordonate cresctor.
2) S se genereze i s se numere toate permutrile mulimii {1,2,3,...,n} care ncep cu
valoarea 1.
3) S se genereze i s se numere toate permutrile mulimii {1,2,3,...,n} care au
proprietatea c oricare dou elemente alturate au paritate diferit.

Exemplu: pentru n=4:


1234
1432
2143
...
4321
4) S se genereze i s se numere toate submulimile mulimii {1,2,3,...,n}.

5) Generarea permutrilor. Fie dat numrul natural n. S se genereze toate permutrile din
n elemente a mulimii A={1,2,3, .. . ,n}.
Indicaie: Se numesc permutri ale unei mulimi A cu n elemente toate mulimile
ordonate care se pot forma cu cele n elemente ale lui A. Pentru n N*, avem Pn =
1*2*3*...*n=n!
6) Generarea aranjamentelor. S se genereze aranjamentele din n luate cte k a mulimii
A={1,2, n}.
!

= ( 1) ( + 1) = ,
( )!
7) S se genereze i s se numere toate submulimile de cte p elemente ale mulimii
{1,2,3,...,n}.
8) Se citete un numr natural n i un numr natural p mai mic dect n. S se descompun n
n toate modurile ca sum de p numere naturale.
9) S se genereze toate numerele formate din 5 cifre impare distincte.
10) Se citete un cuvnt format doar din litere mici distincte. S se genereze anagramele lui.
11) Se citete un numr natural n i apoi o mulime cu n elemente numere naturale. Folosind
interschimbri de elemente generai i afiai permutrile mulimii citite.

Tehnica Desparte i stpnete

1) Se citete a1, numr real. Se cere s se scrie o funcie care calculeaz ln(a) cu 3
zecimale exacte. Nu este permis utilizarea funciei logaritmice ale limbajului.
2) Se citete un numr real x(-10000, 10000). S se afieze partea fracionar.

Exemple: pentru x=1.23, se va afia. 0.23;


pentru x=-12.7, se va afia 0.7.
Nu se vor folosi funcii specializate ale limbajului.
3) Problema seleciei. Se consider un vector cu n componente numere naturale i 1tn. Se
cere s se determine al t-lea cel mai mic element.
4) Se consider un vector care reine n numere naturale. Se cere s se determine dac exist
un element majoritar (adic un numr care se gsete n mai mult de [n/2]+1 elemente).
5) Se pleac de la un ptrat a crui suprafa se divide n 9 pri egale prin mprirea
fiecrei laturi n 3 pri egale. Ptratul din mijloc se elimin. Cu ptratele rmase se
procedeaz la fel. Vizualizai figura dup 1s de transformri (Covorul lui Sierpinski).
6) Utiliznd metoda desparte i stpnete:
a) S se determine produsul a n numere ntregi;
b) S se determine maximul (minimul) a n numere ntregi;
c) S se caute o valoare ntr-un vector. Dac se gsete se va afia poziia pe care s-a
gsit, altfel se va afia mesajul Nu exista aa valoare;
d) S se caute o valoare ntr-un vector ordonat cresctor;
e) S se numere cte valori sunt egale cu x dintr-un ir de numere ntregi citite.
7) Considerm un ir de n numere ntregi, ordonat cresctor i un numr ntreg x. Scriei un
program care mparte irul dat n dou subiruri n aa fel nct toate elementele primului
subir s fie mai mici sau cel mult egale cu x, iar toate elementele celui de-al doilea
subir sa fie strict mai mari dect x.
8) Turnurile din Hanoi. Se dau trei tije, a, b i c. Pe tija a se afl n discuri de dimensiuni
diferite, ordonate n ordinea diametrelor (discul cel mai mare la baz). Se dorete mutarea
tuturor discurilor de pe tija a pe tija b, utiliznd tija intermediar c, cu condiia c un disc
cu diametrul mai mare s nu fie pus pe vreo tij peste un disc cu dimensiune mai mic.
9) ntr-o plac dreptunghiular cu dimensiunile N pe L (coordonatele dreptunghiului) sunt
fcute K guri. Coordonatele gurilor sunt numere ntregi. Fiierul date.in conine n
prima linie numrul n, care reprezint numrul de guri, pe liniile urmtoare se regsesc
coordonatele gurilor. Scriei un program, care determin cel mai mic dreptunghi (cu o
suprafa mai mare ca 0) fr guri din plac.
10) Cunoscndu-se numrul n al elevilor unei clase, precum i mediile generale ale celor n
elevi la finele unui an colar, realizai un program care, folosind un algoritm Divide et
Impera, testeaz dac n clasa respectiv exista doi elevi cu aceeai medie general.
Programul va tipri pe ecran mesajul da sau nu, n funcie de situaie.
11) ntr-o plac dreptunghiular cu dimensiunile N pe L sunt n puncte (2n30). Fiierul
date.in conine n prima linie numrul n, care reprezint numrul de puncte din plan pe
liniile urmtoare se regsesc coordonatele punctelor. Elaborai un program care afieaz
la ecran coordonatele punctelor Pa, Pb distana dintre care este minim. Distana dintre
punctele Pj , Pm se calculeaz cu ajutorul formulei:

= ( )2 + ( )2

12) Se citete un numr real x. S se calculeze radical de ordinul 3 din x folosind un algoritm
de tip Divide et impera.
13) Se citete un vector cu n elemente numere naturale. S se determine elementul minim din
vector folosind divide et impera.
14) Folosind metoda divide et impera, scriei o funcie care s determine dac un tablou cu
elemente ntregi este ordonat cresctor.
15) Se citete un vector cu n elemente numere naturale. S se calculeze suma elementelor
vectorului folosind divide et impera.
16) Se citesc dou numere, n i x, n natural i x real pozitiv. Fr a folosi funcia pow,
extragei cu 3 zecimale exacte radicalul de ordinul n din x.
17) Scriei o funcie care s determine elementul minim i elementul maxim dintr-un tablou
cu elemente ntregi folosind metoda divide et impera.
18) S se rezolve ecuaia 3 + 1 = 0 pe intervalul [0,1] folosind metoda divide et
impera.
19) Se citete un vector cu n elemente numere naturale. S se calculeze CMMDC al
elementelor vectorului folosind divide et impera.
20) Se d un vector sortat cresctor (v[1..n]) ce conine valori reale distincte i o valoare x. S
se gseasc la ce poziie apare x n vectorul dat.
21) Se d un ir neordonat S cu n - 1 numere distincte, selectate dintre cele n numere de
la 0 la n - 1. Toate sunt numere ntregi, reprezentate pe 32 de bii. Folosind
metoda getBit(int i, int j) care ntoarce al j-lea bit din reprezentarea binar a lui S[i],
determinai numrul lips.

Exemplu:
a) pentru irul {0 1 9 4 5 7 6 8 2} lipsete numrul 3
b) getBit(7,3) ntoarce al treilea bit din S[7]. S[7] este 8, n binar: 1000, deci bit-ul 3
este 1.
c) La un prim pas, se observ c bitul 3 este 0 pentru doar 7 numere din ir, dei ntre
0 i 9 sunt 8 numere care ar trebui s aib bitul 3 egal cu 0, respectiv numerele de
la 0 la 7. Prin urmare, la primul pas ne dm seama c numrul cutat este ntre 0 i
7.
22) Statistici de ordine. Se d un vector de numere ntregi neordonate. Scriind o funcie de
partiionare, folosii Divide et Impera pentru:
a) a determina a k-lea element ca mrime din vector;
b) a sorta vectorii prin QuickSort.
Exemplu: pentru vectorul {0 1 2 4 5 7 6 8 9}, al 3-lea element ca ordine este 2, iar vectorul
sortat este {0 1 2 4 5 6 7 8 9}
23) Se d un ir S de n numere ntregi. S se determine cte inversiuni sunt n irul dat. Numim
inversiune o pereche de indici 1<=i<j<=n astfel nct S[i] > S[j].
Exemplu: n irul {0 1 9 4 5 7 6 8 2} sunt 12 inversiuni.
24) Calculai subsecvena de sum maxim pentru un vector A de n numere reale folosind o
abordare de tip desparte i stpnete.

Subsecven a unui vector A[1..n] se definete ca o secven continu de elemente din A.


De exemplu, A[i..j](pentru orice 1<=i<=j<=n) reprezint o subsecven a lui A.
Exemplu: Pentru A = {2, 1, 3, 4, 1, 2, 1, 5, 4}, subsecvena de sum maxim
este {4, 1, 2, 1} de sum 6.
25) Se d un numr natural n. Scriei un algoritm de complexitate O(log n) care s calculeze
cu o precizie de 0.001.

Exemplu: pentru 0.25 algoritmul poate da orice valoare ntre 0.499 i 0.501 inclusiv.
Tehnica Programrii Dinamice

1) Dintr-un element ai,j al unei matrici An,n se poate ajunge n elementele ai+1,j, ai+1,j+1, ai+1,j-
1. tiind c fiecare element al matricei reine un numr natural, se cere un drum care
ndeplinete condiiile problemei i unete un element de pe linia 1 cu unul de pe linia n
astfel nct suma numerelor reinute de elementele pe unde trece drumul s fie maxim.
3 1 3
Exemplu: pentru n=3 i matricea = (4 1 2), drumul este a1,1, a2,1, a3,2, iar suma
3 7 1
este 3+4+7=14.
2) Problema diligenei. Un comis-voiajor are de fcut o cltorie cu diligena ntre dou
orae din vestul slbatic. Cltoria cu diligena se desfoar n n etape. n fiecare etap
diligena merge, fr ntrerupere, ntre dou orae. Dup o etap diligena este schimbat,
iar comis-voiajorul decide n care ora va merge n etapa urmtoare. Se tie c n fiecare
etap, cu excepia ultimei etape, se poate ajunge n unul din cele k orae. Se cunoate
oraul de start, S i cel final, F (n ultima etap se ajunge n oraul F). Pentru orice etap
se cunosc toate distanele ntre oraele care sunt puncte de pornire i cele care sunt puncte
de destinaie.

S F

k orae
Etapa 1 Etapa 2 Etapa n

Se cere s se decid care sunt oraele destinaie pentru o anumit etap, astfel nct
lungimea total a drumului, care trebuie afiat, s fie minim.
3) Lucrare de control. Mai multor elevi li se cere s pun ntr-o anumit ordine un numr de
n<200 cuvinte formate numai din litere mici ordinea exprim faptul c aceste cuvinte se
succed dup o anumit logic.
Exemplu: platon kant marx stalin havel.
Logica succesiunii const n faptul c fiecare cuvnt poate fi definit folosind numai
cuvintele anterioare.
Fiecare elev i transmite profesorului succesiunea de cuvinte care i se pare logic. Sarcina
profesorului const n a acorda fiecrui elev una dintre notele 1, 2, 3, ..., n,
corespunztoare numrului de cuvinte aezate ntr-o succesiune corect. Pentru exemplul
1 avem urmtoarele note:
marx stalin kant platon havel 3
havel marx stalin kant platon 2
havel stalin marx kant platon 1
4) Un patron de gogorie a cumprat un calculator i dorete s nvee s lucreze pe el.
Pentru aceasta va umple un raft de cri dintr-o anumit serie. Raftul are lungimea L cm
(L este numr natural). Seria dispune de n titluri 1, 2, ..., n cu grosimile de n1, n2, ..., nn
cm (numere naturale).
S se selecteze titlurile pe care le va cumpra patronul astfel nct raftul s fie umplut
complet (suma grosimilor crilor cumprate s fie egal cu lungimea raftului) i numrul
crilor achiziionate s fie maxim.
5) Mere-Pere. Se consider n camere distincte, situate una dup alta, astfel nct din camera
i (i{1, 2, , n-1}) se poate trece doar n camera i+1. n fiecare camer se gsesc mere
i pere n cantiti cunoscute (buci).
O persoan cu un rucsac suficient de ncptor, iniial gol, pornete din camera 1, trece
prin camerele 2, 3, ..., n i iese. La intrarea n fiecare camer descarc rucsacul, i
ncarc, fie toate merele, fie toate perele din camera respectiv, dup care trece n camera
urmtoare. Se presupune c pentru fiecare fruct transportat ntre dou camere, persoana
consum o calorie. Ce fel de fructe trebuie s ncarce persoana n rucsac astfel nct dup
parcurgerea celor n camere s consume un numr minim de calorii i care este acest
numr.
6) Se citesc n, numr natural, i n numere naturale. Se cere s se afieze cea mai mare sum
care se poate forma cu numere dintre cele n (fiecare numr poate participa o singur dat
la calculul sumei) i care se divide cu n. Afiai, de asemenea, i numerele care alctuiesc
suma.
7) Problema care urmeaz prezint o modalitate de compactare a unui fiier oarecare (de
date, executabil, etc.). Dup cum se tie, fiierul este reinut pe suport ca o succesiune de
0 i 1. Noi dispunem de un set de m secvene de 0 i 1 din care nu lipsesc secvena care l
conine numai pe 0 i secvena care l conine numai pe 1. Se cere s gsim o
descompunere a irului de 0 i 1 care alctuiete fiierul ntr-un numr de minim de
secvene din cele m. Dac rezolvm aceast problem, putem nlocui secvena cu o adres
i n acest fel fiierul va deveni o succesiune de adrese (n cazul existenei unor secvene
lungi se realizeaz economia de suport).
Exemplu: Pentru m=6, secvenele sunt:
1. 0
2. 1
3. 0 0 1
4. 1 0 0
5. 1 1 1
6. 1 0 1
Fiierul este: 100111001
Se folosesc secvenele 4 5 i 3.
8) Pentru un triunghi ABC, cu vrfurile de coordonate ntregi, definim costul su ca fiind
minimul ariilor dreptunghiurilor cu laturile paralele cu axele de coordonate care au pe
laturi vrfurile unui triunghi. De exemplu, cu vrfurile de coordonate (1,0), (5,0), (0,3)
costul ataat este egal cu 15. Fie un poligon convex, cu coordonatele vrfurilor numere
ntregi. Numim triangularizare a poligonului o partiionare a sa ale crui vrfuri sunt
vrfuri ale poligonului dat. Numim costul unei triangularizri ca fiind suma costurilor
triunghiurilor componente. Problema const n realizarea unei triangularizri de cost
minim.
9) O tabl de ah se citete ca o matrice n x n n care poziiile libere au valoarea 0, iar
piesele sunt marcate prin valoarea 1.
Pe prima linie pe coloana j se afl un pion. S se determine drumul pe care poate ajunge
pionul pe ultima linie lund un numr maxim de piese. Poziia iniial a pionului se
consider liber.
Pionul aflat n poziia i, j se poate deplasa astfel:
- n poziia i+1, j dac e liber
- n poziia i+1, j-1 dac e pies n aceast poziie
- n poziia i+1, j+1 dac e pies n aceast poziie
Exemplu:
53
0000
01010
01111
00011
01011
Drumul optim este:
13
22
33
44
55
Pe acest drum pionul ia 4 piese.
10) n fiierul date.in se afl pe prima linie un numr natural n cel mult 20 000, iar pe liniile
urmtoare o matrice ptratic de dimensiune n care conine doar elemente 0 i 1.
S se determine cel mai mare ptrat care conine doar valori 1. Se vor afia n fiierul text
date.out urmtoarele valori separate prin spaiu: latura ptratului, linia i coloana colului
stnga sus al ptratului. Dac exista mai multe astfel de ptrate se va afia doar cel mai de
sus.
Exemplu:
5
11000
11101
11111
11100
10111
Se afieaz 3 2 1
11) Se dau n(n+1)/2 numere naturale aranjate ntr-un triunghi format din elementele de sub i
de pe diagonala unei matrici ptratice de ordin n.
Se calculeaz sume pornind din elementul de pe prima linie prin deplasri n vecinii de
sub i din dreapta. Gsii suma maxim care se poate calcula astfel i care sunt valorile
din care se obine suma maxim.
Exemplu:
n=4
2
35
634
5614
suma maxim este 17
i se obine din valorile 2 3 6 6
12) Se citete o matrice ptratic de ordin n format din numere naturale.
Se calculeaz sume pornind de pe prima linie prin deplasri n vecinii de sub i din
dreapta. Gsii suma maxim care se poate calcula astfel i care sunt valorile din care se
obine suma maxim.
Exemplu:
n=4
7158
3561
6348
5614
suma maxim este 23
i se obine din valorile 5 6 8 4
13) Se citete o matrice ptratic de ordin n format din numere naturale.
Se calculeaz sume pornind de pe prima linie prin deplasri pe linia urmtoare n unul
dintre cei 3 vecini de pe aceeai coloan sau de pe cele 2 alturate. Gsii suma maxim
care se poate calcula astfel i care sunt valorile din care se obine suma maxim.
Exemplu:
n=4
8158
3561
6348
5614
suma maxima este 26
i se obine din valorile 8 6 8 4
14) Un pianjen a esut o pnz de form dreptunghiular format din n linii orizontale i m
linii verticale.
Calculai n cte moduri poate el merge din colul stnga-sus n colul dreapta-jos fcnd
un numr minim de pai. (n+m-2)
Exemple:
pentru n=3 i m=3 exist 6 moduri
pentru n=1 i m=5 exist un singur mod
1 1 1

1 2 3

1 3 6

n=3 i
m=3
15) Se citete un numr natural n i apoi un vector cu n elemente numere ntregi. Determinai
secvena din vector care are suma elementelor maxim.
Exemplu:
n=9
-2 1 -3 3 -1 4 -6 2 3
secvena de sum maxim este 3 -1 4 i are suma 6
16) Subir cresctor maximal. Se citete un numr n i apoi un ir de n numere ntregi. Gsii
cel mai lung subir al irului citit care are proprietatea c elementele sunt n ordine
cresctoare.
Dac exist mai multe subiruri de lungime maxim se va afia unul dintre ele.
Exemplu:
date.in
9
423052698
date.out
23569
17) Cldirea Finanelor publice este format din birouri dispuse ntr-un dreptunghi cu n x m
elemente. ntre dou birouri se poate trece dac sunt alturate pe linie sau pe coloan.
Pentru fiecare birou se cunoate valoarea taxei care trebuie pltit n acel birou (valoare
natural). Un contribuabil intr n cldire prin biroul 1,1 i trebuie s o prseasc prin
biroul n, m. Calculai suma minim a taxelor pe care le poate plti contribuabilul de la
intrare pn la ieirea din cldire.
Exemplu:
n=4, m=3, dispunerea birourilor i taxa din fiecare:
372
643
631
622
Valoarea minim pe care o poate plti contribuabilul este 18 (corespunde parcurgerii
birourilor cu taxele: 3 7 2 3 1 2)
18) O livad este mprit n n x m zone. n fiecare zon crete cte un pom. Din fiecare pom
cade pe jos o cantitate de fructe. n zona stnga-sus se afl un arici care vrea s ajung n
zona dreapta-jos. Ariciul se poate deplasa doar pe dou direcii: n jos sau spre dreapta.
Determinai cantitatea maxim de fructe pe care le poate aduna ariciul prin deplasarea din
poziia iniial n cea dorit.
Citirea se face din fiierul date.in care conine pe prima linie dimensiunile livezii, adic n
i m, i apoi cantitatea de fructe din fiecare dintre cele n x m zone.
Afiarea cantitii maxime de fructe se va face n fiierul date.out.
Exemplu:
date.in
33
041
011
101
date.out
7
19) Din fiierul date.in se citete un numr natural n (n<=300) i apoi un ir cu n elemente
numere naturale cu cel mult 9 cifre fiecare.
Calculai i afiai n fiierul date.out numrul de subiruri strict cresctoare care se pot
forma n irul citit.
Exemplu:
date.in
5
12342
date.out
17
Explicaie: subirurile strict cresctoare sunt:
1 13 123
2 14 124
3 12 134
4 23 234
2 24 1234
12 34

20) Se d o matrice ptratic de ordin n care conine numere naturale i care are liniile i
coloanele numerotate de la 1 la n. Se citete apoi un numr natural m i n perechi de poziii
din matrice de forma (i1, j1) i (i2,j2) astfel nct i1 s fie mai mic dect i2 i j1 s fie mai mic
dect j2.
Calculai i afiai pentru fiecare pereche de poziii suma elementelor din matrice aflate n
submatricea care are colul stnga-sus n (i1,j1) i coltul dreapta-jos n (i2,j2).
Exemplu:
date.in
3
121
361
136
3
2233
2133
1113
date.out
16 20 4
21) Problema Rucsacului. Un camion poate transporta T tone de mobil. Exist n piese de
mobil, fiecare caracterizat de greutatea G[i] i de valoarea V[i] adus de transportarea sa.
S se decid ce piese de mobil vor fi transportate pentru a aduce o valoare maxim (soluie
optim).
Exemplu:
Fie cantitatea maxim admis T = 10, i un numr de piese de mobil din care putem alege
egal cu 6. Piesele de mobil sunt descrise de perechi de forma (greutate, valoare), dup cum
urmeaz: (3, 7), (3, 4), (1, 2), (1, 9), (2, 4), (1, 5).
Profitul maxim pe care l putem obine este 29 i acesta se realizeaz dac vom transporta
obiectele de mobilier cu indecii 1, 2, 4, 5 i 6.
22) Parantezarea unei expresii booleene. Se d o expresie boolean exprimat prin irurile true,
false, and, or, xor . Numrai modurile n care se pot aeza paranteze astfel nct
rezultatul s fie true.
Exemplu: pentru expresia: true and false xor true
exist dou modaliti de parantezare, astfel nct rezultatul s fie true:
((true and false) xor true)
sau
true and (false xor true))
23) Suma n triunghi. S considerm un triunghi format din n linii (1<n100), fiecare linie
coninnd numere ntregi din domeniul [1,99], ca n exemplul urmtor:

3 8

8 1 0

2 7 4 4

4 5 2 6 5

Problema const n scrierea unui program care s determine cea mai mare sum de numere
aflate pe un drum ntre numrul de pe prima linie i un numr de pe ultima linie. Fiecare
numr din acest drum este situat sub precedentul, la stnga sau la dreapta acestuia.
24) Submatrice ptratic maximal. Dndu-se o matrice binar cu m linii i n coloane,
determinai o submatrice ptratic de dimensiune maxim care are toate elementele egale cu
1. De exemplu, fie matricea binar urmtoare:

0 1 1 0 1
1 1 0 1 0
0 1 1 1 0
1 1 1 1 0
1 1 1 1 1
Submatricea ptratic de dimensiune maxim care are toate elementele egale cu 1 este:
1 1 1
1 1 1
1 1 1
25) Dreptunghiuri. n timpul orei de matematic, Bianca nu este atent i ncepe s deseneze N
dreptunghiuri pe caiet. La un moment dat, i pune urmtoarea ntrebare: Care este numrul
maxim K de dreptunghiuri, pe care poate s le aleag, astfel nct primul s ncap n al
doilea, al doilea n al treilea,...., al k-1-lea n al k-lea? Pentru c nu tie rspunsul la aceast
ntrebare, l roag pe prietenul ei tefan s o ajute. tefan se gndete puin i gsete un
algoritm prin care s rezolve problema Bianci i s afle numrul maxim. Gsii i voi
algoritmul lui tefan.
Se dau N dreptunghiuri pentru care se tie lungimea L i limea l. Se cere s rspundei la
ntrebarea Bianci. Se consider c un dreptunghi D1 cu lungimea L1 i limea l1 ncape n
alt dreptunghi D2 cu L2 i l2 dac L1<L2 i l1<l2.
Date de intrare: Fiierul de intrare date.in conine pe prima linie numrul N de
dreptunghiuri. Urmtoarele N linii conin 2 numere ntregi ce reprezint lungimea L i
limea l fiecrui dreptunghi.
Date de ieire: n fiierul de ieire date.out se va afia pe primul rnd numrul maxim K de
dreptunghiuri ce pot fi alese astfel nct primul s intre n al doilea, al doilea n al treilea,....,
al k-1-lea n al k-lea.
Exemplu:
date.in
7
26 12
14 17
83
18 14
52
20 17
16 2
date.out
4
26) Se consider un arbore cu n noduri numerotate de la 1 la n. Se tie c rdcina arborelui este
nodul 1. Fiecare nod i are asociat un numr natural nenul vi. S se determine suma maxim
care se poate obine alegnd n mod convenabil o submulime de noduri, astfel nct dac
este ales un nod i, n submulime nu poate fi nici nodul tat al lui i, nici eventualii fii ai lui i.
Date de intrare: Fiierul de intrare date.in conine pe prima linie numrul n. Pe a doua linie,
separate prin cte un spaiu, se afl numerele naturale t1,t2,...,tn, n care ti reprezint nodul
tat al nodului i. Pentru c 1 este rdcina arborelui, atunci ntotdeauna t1=0. Pe a treia linie,
separate prin cte un spaiu, se afl numerele naturale v1,v2,...,vn, unde vi este valoarea
asociat nodului i.
Date de ieire: Fiierul de ieire date.out va conine pe prima linie un singur numr natural
reprezentnd suma maxim posibil.
Restricii:
- 3 <= n <= 100 000
- 1 <= vi <= 1000
Exemplu:
date.in
5
01133
34453
date.out
12
Explicaii:
Arborele are 5 noduri. Nodurile 2 i 3 au ca nod tat pe 1, iar nodurile 4 i 5 au ca tat pe 3.
Nodul 1 are asociat valoarea 3, nodurile 2 i 3 au asociat valoarea 4, nodul 4 are asociat
valoarea 5, iar nodul 5 are valoarea 3 asociat.
Obinem suma maxim 12 dac se aleg nodurile 2, 4, 5: v2+v4+v5=4+5+3=12.
27) n timpul liber Algorel i Gigel nscocesc tot felul de jocuri. Ultima lor invenie n domeniu
este foarte ciudat: Gigel deseneaz un arbore cu N noduri numerotate de la 1 la N pe o foaie
de hrtie, apoi tot el alege o secven S de numere ntregi, nu neaprat distincte, din
intervalul [1, N] i l las pe prietenul su Algorel s aleag poziia de start n aceast secven.
Cei doi mut alternativ, fiecare mutare constnd n alegerea unei poziii din S. Numrul de
puncte obinute n urma fiecrei mutri este egal cu valoarea secvenei n poziia aleas.
Punctajul final al fiecrui juctor este suma punctelor obinute n urma mutrilor efectuate de
el.
Din poziia i se poate muta n poziia j dac i numai dac:
- i<j
- Si este strmo al nodului Sj sau Sj este strmo al nodului Si. Spunem c un
nod x este strmo pentru un nod y dac x este situat pe drumul ntre rdcina arborelui
i y n arborele desenat de Gigel.
De cnd au inventat jocul Algorel vrea s tie care este diferena maxim dintre punctajul su
i cel al lui Gigel pe care o poate obine pentru fiecare poziie de start.
Fiind date structura arborelui i secvena aleas de Gigel scriei un program care determin
informaiile dorite de Algorel tiind c Gigel joac perfect.
Date de intrare: Prima linie a fiierului date.in conine dou numere ntregi, N i M,
reprezentnd numrul de noduri din arbore i respectiv lungimea secvenei S. Urmtoarea linie
conine N1 numere ce descriu structura arborelui: numrul de pe poziia i (cu i ntre 1 i N
1) este tatl nodului i+1. Nodul 1 este ntotdeauna rdcina arborelui. Urmtoarea linie
conine M numere ntregi din intervalul [1, N] reprezentnd secvena S. Valorile scrise pe
aceeai linie sunt separate prin spaii.
Date de ieire: Fiierul date.out va conine M linii, pe linia i aflndu-se un ntreg reprezentnd
diferena maxim de punctaj pe care o poate obine Algorel dac ncepe jocul din poziia i a
secvenei S.
Restricii:
- 1 <= N <= 50 000
- 1 <= M <= 50 000
- Rdcina arborelui este ntotdeauna nodul 1
- Un nod este strmo i pentru el nsui
- Dac un juctor poate muta este obligat s o fac.
Exemplu:
date.in
45
411
41231
date.out
3
-1
1
2
1
28) Se consider o arborescent (arbore cu rdcin) format din N noduri, numerotate de
la 1 la N. Nodul 1 este considerat rdcin. Scriei un program care s determine numrul
minim de arce care trebuie eliminate pentru a obine un subarbore cu P noduri. Subarborele
obinut nu trebuie s conin neaprat nodul 1.
Date de intrare: Fiierul de intrare date.in conine pe prima linie numerele naturale N i P,
separate printr-un spaiu.
Urmtoarele N - 1 linii conin fiecare cte dou numere I i J, cuprinse ntre 1 i N, separate
printr-un spaiu, cu semnificaia c nodul J este descendent direct al nodului I (exist arc de
la I la J).
Date de ieire: n fiierul de ieire date.out va conine o singur linie pe care se va scrie
numrul natural X reprezentnd numrul de arce eliminate (minim posibil).
Restricii:
- 1<=P<=N<=150
- 0<=X<=N-1
Exemplu:
date.in
11 6
12
26
27
28
13
14
49
4 10
4 11
15
date.out
2
Explicaie:
De exemplu, se elimin arcele 1 5 i 1 4.
Aceasta nu este singura soluie (de exemplu, s-ar putea elimina i arcele 1 5 i 1 2).

Modulul 3Elemente de programare orientat pe obiecte n baza limbajului C++

1) Cerai obiectul paralelipiped_dreptunghic.


Date: lungimile bazelor i nlimea;
Metode: citire, afiare, iniializare, determinare a suprafeei laterale, suprafeei totale, i a
volumului.
Se vor introduce datele despre dou paralelipipede dreptunghice i se vor afia datele despre
paralelipipedul cu volumul maxim i paralelipipedul cu suprafaa total minim.
2) Creai obiectul triunghi.
Date: lungimile laturilor;
Metode: citire, afiare, iniializare, determinare a perimetrului, a suprafeei i afiare a
tipului triunghiului (ascuit, dreptunghic sau obtuzunghi).
Se vor introduce datele despre dou triunghiuri i se vor afia datele despre triunghiul cu
suprafaa maxim i triunghiul cu perimetrul minim. Se va implementa o metod pentru
verificarea corectitudinii introducerii datelor de intrare. n caz c lungimile introduse nu pot
forma un triunghi, atunci lungimile laturilor vor fi egale cu 0, iar metoda tip va afia
mesajul: Nu exist aa triunghi.
3) Cerai obiectul persoana.
Date: nume, anul naterii, genul, nlimea;
Metode: citire, afiare, vrsta, greutate (se va determina conform formulelor:
Gmasculin=50+0.75*(nlime-150) + (vrsta-20)/4 pentru genul masculin;
Gfeminin=Gmasculin10 pentru genul feminin.
De la tastatur se citesc datele despre n persoane. S se afieze:
a) Lista tuturor persoanelor;
b) Lista persoanelor cu o vrst mai mare dect 25 ani;
c) Lista persoanelor cu o greutate cuprins ntre 55 i 80 kg.
4) Creai obiectul student.
Date: nume, anul naterii, notele la trei discipline;
Metode: citire, afiare, vrsta, media, restan (va returna 1 doar dac studentul are cel puin
o not mai mic dect 5), bursa (va fi egal cu 500 lei dac studentul nu are restane i media
este mai mare dect 7.5).
De la tastatur se citesc datele despre n studeni. S se afieze:
a) Lista tuturor studenilor;
b) Lista studenilor restanieri;
c) Lista studenilor care au burs;
d) Lista studenilor cu o vrst mai mic dect 18 ani.
5) Se consider un program care descrie organizarea personalului unei instituii folosind clase
derivate. O clas numit Angajat deine date i funcii referitoare la un angajat al instituiei:
class Angajat{
char * nume;
float salariu;
public:
Angajat();
Angajat(char *n, int s, float sal);
Angajat(Angajat& r);
void display();
float getSalariu();
void setSalariu(float s);
};
Diferite categorii de angajai necesit date suplimentare fa de cele definite n clasa
Angajat, corespunztoare postului pe care l dein. De exemplu, un ef de secie
(administrator) este un angajat (deci sunt necesare toate datele care descriu aceast calitate)
dar mai sunt necesare i alte informaii, de exemplu precizarea seciei pe care o conduce. Un
administrator este un angajat, de aceea clasa Administrator se poate construi prin derivare
din clasa Angajat astfel:
class Administrator: public Angajat {
int sectie;
public:
Administrator(const char *n, float sal, int sec);
Administrator(Administrator& r);
~Administrator();
};
S se implementeze aceasta ierarhie de clase. Introducei i afiai la ecran datele a 5
angajai.
6) S se implementeze un vector (tablou) n care se pot pstra obiecte de tipuri diferite definite
de utilizator. Pentru aceasta se definete clasa Object ca o clas de baz pentru toate tipurile
derivate:
class Object{
public:
Object() {};
virtual ~Object() {};
virtual void display() = 0;
};
Clasa ObArray, definete un vector de pointeri de tip Object*. Nu este necesar s fie limitat
dimensiunea vectorului deoarece se asigur creterea dimensiunii acestuia atunci cnd este
necesar.
class ObArray : public Object {
Object **p; // Vector de pointeri
int size; // Numar de elemente la un moment dat
int grows; // Increment de cretere a dimensiunii
int dimens; // Dimensiune vector
public:
ObArray(int size=0,int grows, int dimens); // Constructor
~ObArray(); // Destructor
void RemoveAll(); // Elimina toate obiectele din vector
int getSize(); // Intoarce numarul de elemente din vector.
int add(Object* x); // Adauga un element la vector.
int insertAt(int i, Object *x); // Insereaza un element pe o pozitie data
int removeAt(int i); // Elimina elementul de pe pozitia i
Object* getAt(int i); // Intoarce elementul de la pozitia i
void display(); // Afisare elementelor din tablou.
};
Sa se utilizeze aceste clase pentru a memora un tablou de Puncte si un tablou de numere
Complexe.
7) S se implementeze o ierarhie de clase pentru a realiza operaii cu mulimi ale cror
elemente vor fi de tipuri diferite.
class Element:
public:
virtual ~Element();
virtual void display() = 0;
virtual void read() = 0;
int equals(Element&) = 0;
virtual char *getClassName()=0;
};
class Set{
private:
int size;
Element *elements;
public:
Set(int size);
Set(int size,Element *pe);
Set(Set&);
~Set();
void insert(Element*);
void remove(Element*);
int lookup(Element*); // Cautarea unui element
Set operator +(Set &); // Reuniunea
Set operator (Set &); // Diferenta
Set operator *(Set &); // Intersectia
int operator ==(Set &); // Testarea egalitatii
int operator <(Set &); // Testarea incluziunii
void read(); // Citirea elementelor multimii
void display(); // Afisarea elementelor multimii.
};
S se realizeze utiliznd aceste clase intersecia a 2 mulimi ale cror elemente sunt
caractere.
8) S se implementeze o clas care sa rein revistele si crile dintr-o bibliotec. Pentru
aceasta se va folosi o list simplu nlnuit ale crei elemente sunt revistele i/sau crile
din bibliotec.
// Clasa de baza pentru clasa Revista si Carte
class Articol{
protected:
int cota; // Cota cartii sau revistei
char *titlul;
public:
Articol(int cota, char *titlul);
Articol(Articol&);
virtual ~Articol();
int getCota();
void setCota(int);
char *getTitlul();
void setTitlul();
virtual void display();
virtual void read();
}
class Revista: public Articol{
int nr; // Numarul revistei
int tiraj;
int frecv; // Numarul de aparitii pe luna
public:
Revista(int cota,int titlul,int nr,int tiraj,int frecv);
Revista(Revista&);
~Revista();
void display();
void read();
};
class Carte: public Articol{
char *autor;
char *editura;
int an; // Anul aparitiei
public:
Carte(int cota,int titlul,char * autor,
char *editura, int an);
Carte(Carte&);
~Carte();
void display();
void read();
};
class Nod {
Articol *info;
Nod *next;
public:
Nod(Articol *,Nod *next=0);
Articol* getInfo();
void setInfo(Articol *);
Nod *getNext();
Void setNext(Nod*);
};
class Biblioteca{
Nod *prim;
public:
Bibioteca();
void addArticol(Articol *);
int removeArticol(Articol *);
Articol * find(int cota);
Articol * find (char *titlul);
void display();
}

9) S se implementeze clasa Telefon (nr_tel, nume_operator). S se deriveze din aceasta clasa


TelefonMobil (autonomie, tip_acumulator).
10) S se implementeze clasa abstract FiguraGeometrica, din care sa se derive Cerc i
Poligon. S se deriveze din Poligon clasa Patrulater i Triunghi. Din Patrulater s se
deriveze clasa Dreptunghi. Funcii virtuale: getAria, getPerimetru
11) Implementai urmtoarea ierarhie de clase:
class Localitate{
protected:
char *denumire;
int cod;
long nr_locuitori;
public:

virtual void display();
};
class Oras :public Localitate{
protected :
int nrBlocuri;
public:
..
};
class Capitala :public Oras{
protected:
char *numePrefect;
public:

};
class Judet {
Localitate *p;
int nrLoc;
public:
.
};

12) Realizai un program care citete dintr-un fiier text n numere complexe si calculeaz
produsul lor.
13) S se implementeze o clas Grupa ce reine studenii dintr-o grup. Clasa va avea metode
pentru salvarea respectiv ncrcarea grupei ntr-un/dintr-un fiier.
14) S se realizeze un program C++ ce realizeaz concatenarea mai multor fiiere text al cror
nume se preiau n linia de comand. Se vor utiliza stream-uri.
15) Sa se implementeze clasa Matrice utiliznd template-uri reprezentat sub form liniar ale
crei elemente pot fi numere ntregi, reale. S se suprancarce operatorii: +,-,*,citire
(>>),afiare (<<).
16) Sa se implementeze clasa Multime ale crei elemente pot fi de orice tip. Suprancrcai
operatorii: +(reuniune), -(diferena), *(intersecie).
17) Implementai clasa ArboreBinar ce implementeaz noiunea de arbore binar ale crui noduri
pot fi de orice tip: numere ntregi, reale, obiecte. Clasa va conine metodele:
- creare arbore
- parcurgere n inordine
- parcurgere n postordine
- parcurgere n preordine
18) Implementai clasa ArboreOarecare ce implementeaz noiunea de arbore oarecare ale crui
noduri pot fi de orice tip: numere ntregi, reale, obiecte. Clasa va conine metodele:
- creare arbore
- parcurgere n preordine
- parcurgere n postordine
- parcurgere n inordine
19) Sa se implementeze clasa Coada ale crei elemente pot fi de orice tip. Clasa va conine
metodele:
- Creare coada
- Afiare coada
- Inserare n coad
- Eliminare din coad
20) S se creeze clasa NumarRaional, care permite lucrul cu numere raionale de forma x=p/q,
ce cuprinde:
a) Dou date membru p i q de tip ntreg
b) Constructori ce permit declaraii ca: NumarRational a, a(2,5)
c) Destructor
d) Metode de adunare, nmulire, mprire a dou numere raionale
e) Metod de simplificare a unui numr raional cu cel mai mare divizor comun dintre p
i q
f) Metod de amplificare a unui numr raional cu un numr natural transmis prin
parametru
Scriei un program care citete dou numere raionale i tiprete suma, produsul, ctul
acestora, precum i verificarea unui numr raional dac este ireductibil, n caz contrar s se
simplifice numrul ca s devin ireductibil. S se implementeze algoritmul care aduce dou
fracii la acelai numitor comun.
21) S se creeze clasa NumarComplex, care permite lucrul cu numere complexe de forma
z=a+bi, ce cuprinde:
a) Dou date membru a, b de tip float
b) Constructori ce permit declaraii ca: NumarComplex z, z(2) (ce reine numrul
z=2+0i, z1.2, -7.5)
c) Destructor
d) Metode de adunare, scdere, nmulire, mprire a dou numere complexe
Scriei un program care citete dou numere complexe i tiprete suma, diferena, produsul,
ctul lor.
22) S se creeze clasa NumarNatural, ce cuprinde:
a) Dat membru x, ntreg
b) Urmtoarele metode:
a. Numrul de cifre zecimale ale lui x
b. Reprezentarea n baza 2 a lui x
c. Inversul (oglinditul) su
d. Proprietatea de primalitate a lui x
c) Constructori ce permit declaraii ca: NumarNatural n, n(213)
d) Destructor
Scriei un program care citete un numr natural i care afieaz numrul de cifre ale
numrului reprezentat n baza 2, verific dac este palindrom i afieaz mesajul E PRIM
dac numrul nu are divizori n afar de 1 i el nsui, sau mesajul NU E PRIM, n caz
contrar.
23) Cmpul n1 - un numr ntreg. Cmpul n2 numr real nenul. Creai metoda power() va
returna numrul n2 la puterea n1.
24) Cmpul n1 - un numr ntreg, Cmpul n2 numr real. Creai metoda ntreg() - care va
returna partea ntreag a fraciei n1/n2. Metoda trebuie s verifice inegalitatea numitorului cu
zero.
25) Cmpul n1 - un numr real pozitiv (preul bunurilor). Cmpul n2 numr ntreg pozitiv
(numrul de bunuri). Creai metoda cost() va returna numrul ce reprezint valoarea total
a bunurilor.
26) Cmpul n1 - un numr real (suma depozitul n lei). Cmpul n2 numr real (procentul
anual). Creai metoda valoare(int) va returna suma de bani mpreun cu calcularea
dobnzii timp de 1, 2, 3, 4 ani.
27) Cmpul n1 - un numr ntreg pozitiv (numrul de ore). Cmpul n2 un numr ntreg pozitiv
(numrul de minute). Creai metoda secunde() va returna numrul total al secundelor
scrise n cele dou cmpuri.
28) Cmpul n1 - un numr real (coordonata x). Cmpul n2 numr real (coordonata y). Creai
metoda distanta() va returna distana de la punctul (0,0) la punctul cu coordonatele (n1,
n2).
29) Cmpul n1 - un numr ntreg pozitiv (calorii la 100g). Cmpul n2 numr real (greutatea
produsului n kilograme). Creai metoda calorii() va returna numrul de calorii ale
produsului.
A. n calitate de clas de baz se va crea clasa triad.
Date: trei numere reale;
Metode: constructorul cu/fr parametri, citire i afiare.
30) Creai clasa triunghi, derivata clasei triad. Pentru clasa triunghi vor fi implementate metode
pentru determinare a suprafeei, a perimetrului i o metod prin intermediul creia se va
verifica dac datele introduse pot fi lungimile laturilor unui triunghi. De la tastatur se citesc
datele despre n triunghiuri. Elaborai un program prin intermediul cruia, la ecran se vor
afia datele despre toate triunghiurile, triunghiul cu suprafa maxim i triunghiul cu
perimetru maxim.
31) Creai clasa paralelogram, derivata clasei triad. Pentru clasa paralelogram vor fi
implementate metodele de determinare a suprafeei i a perimetrului. De la tastatur se citesc
datele despre n paralelograme. Elaborai un program prin intermediul cruia la ecran se vor
afia datele despre toate figurile, paralelogramul cu suprafa maxim, paralelogramul cu
perimetru maxim.
B. n calitate de clas de baz se va crea clasa persoana.
Date: nume, prenume, anul, cnp (codul personal de 13 cifre);
Metode: citire, afiare, vrsta.
32) Creai clasa Salariat, derivata clasei persoana. Pentru clasa salariat vor fi adugate:
Date: numrul de ore lucrate, plata pentru o or, anul angajrii;
Metode: vor fi redefinite metodele de citire i afiare, salariu. Salariul va fi determinat
conform formulei: nr_ore*plata.
De la tastatur se citesc datele despre n salariai. Elaborai un program prin intermediul
cruia la ecran se vor afia datele despre toi salariaii, salariatul cel mai tnr i salariatul cu
salariu maxim.
33) Creai clasa Student, derivata clasei persoana. Pentru clasa student vor fi adugate:
Date: media notelor curente, grupa;
Metode: vor fi redefinite metodele de citire i afiare, bursa. Bursa va fi determinat
conform formulei: media*75 lei, dac media este mai mare dect 7.5, n caz contrar va fi 0.
De la tastatur se citesc datele despre n studeni. Elaborai un program prin intermediul
cruia la ecran se vor afia datele despre toi studenii, studentul cel mai tnr, studentul cu
bursa maxim.
34) S se defineasc o clas punct cu 2 cmpuri x i y pentru coordonatele unui punct n plan.
- S se scrie constructori de iniializare si de copiere pentru clasa punct.
- S se scrie metode pentru citirea i afiarea variabilelor de tip punct.
- S se creeze o clas triunghi format din 3 puncte n plan.
- S se scrie constructori pentru clasa triunghi.
- S se scrie metode pentru citirea i afiarea obiectelor de tipul triunghi.
- S se scrie metode pentru calculul perimetrului i a ariei unui triunghi.
35) Creai obiectul cerc.
Date: lungimea razei;
Metode: citire, afiare, iniializare, determinarea lungimii discului, a suprafeei i a
diametrului.
Se vor introduce datele despre dou cercuri i se vor afia datele despre cercul cu suprafaa
maxim i cercul cu lungimea discului minimal.
36) Creai obiectul trapez_isoscel.
Date: baza mare, baza mic, nlimea;
Metode: citire, afiare, iniializare, determinare a perimetrului i ariei.
Se vor introduce datele despre dou trapeze i se va afia trapezul cu suprafaa maxim i
trapezul cu perimetrul minim.
37) Creai obiectul paralelogram.
Date: lungimile laturilor i nlimea;
Metode: citire, afiare, iniializare, determinare a perimetrului i ariei.
Se vor introduce datele despre dou paralelograme i se vor afia datele despre
paralelogramul cu suprafaa maxim i paralelogramul cu perimetrul minim.
A. n calitate de clas de baz se va crea clasa triad.
Date: trei numere reale;
Metode: constructorul cu/fr parametri, citire i afiare.
38) Creai clasa trapez_isoscel, derivata clasei triad. Pentru clasa trapez_isoscel vor fi
implementate metodele de determinare a suprafeei i a perimetrului. De la tastatur se citesc
datele despre n trapeze isoscele. Elaborai un program prin intermediul cruia la ecran se vor
afia datele despre toate figurile, trapezul cu suprafa maxim, trapezul cu perimetru
maxim.
39) Creai clasa prism (baza este dreptunghi), derivata clasei triad. Pentru clasa prism vor fi
implementate metodele de determinare a suprafeei totale, laterale i de determinare a
volumului. De la tastatur se citesc datele despre n prisme. Elaborai un program prin
intermediul cruia, la ecran se vor afia datele despre toate prismele, prisma cu suprafa
maxim, prisma cu volumul maxim.
40) Creai clasa piramid (baza este dreptunghi), derivata clasei triad. Pentru clasa piramid vor
fi implementate metodele de determinare a suprafeei totale, laterale i de determinare a
volumului. De la tastatur se citesc datele despre n piramide. Elaborai un program prin
intermediul cruia, la ecran se vor afia datele despre toate piramidele, piramida cu suprafa
maxim, piramida cu volumul maxim.
41) Se consider drept baz clasa dreptunghi. n baza acestei clase s se derive clasele piramid
i prism. S se implementeze polimorfismul pentru metodele: citire, afiare, suprafaa i
volum. De la tastatur se citete numrul de figuri. Elaborai un program care va permite :
a) citirea figurilor de la tastatur;
b) afiarea acestora;
c) afiarea figurilor sub form de piramid;
d) afiarea figurilor sub form de prism;
e) afiarea figurii cu suprafa maxim;
f) afiarea figurii cu volum maxim;
g) afiarea volumului total al figurilor;
h) afiarea suprafeei totale a figurilor;
i) sortarea figurilor n ordine descresctoare suprafeei.
42) Se consider drept baz clasa paralelogram. n baza acestei clase se derive clasele piramid
i prism. S se implementeze polimorfismul pentru metodele: citire, afiare, suprafaa i
volum. De la tastatur se citete numrul de figuri. Elaborai un program care va permite:
a) citirea figurilor de la tastatur;
b) afiarea acestora;
c) afiarea figurilor sub form de piramid;
d) afiarea figurilor sub form de prism;
e) afiarea figurii cu suprafa maxim;
f) afiarea figurii cu volum maxim;
g) afiarea volumului total al figurilor;
h) afiarea suprafeei totale a figurilor;
i) sortarea figurilor n ordine descresctoare suprafeei.
43) Se consider drept baz clasa cerc. n baza acestei clase se deriv clasele con i cilindru. S
se implementeze polimorfismul pentru metodele: citire, afiare, suprafaa i volum. De la
tastatur se citete numrul de figuri. Elaborai un program care va permite:
a) citirea figurilor de la tastatur;
b) afiarea acestora;
c) afiarea figurilor sub form de con;
d) afiarea figurilor sub form de cilindru;
e) afiarea figurii cu suprafa maxim;
f) afiarea figurii cu volum maxim;
g) afiarea volumului total al figurilor;
h) afiarea suprafeei totale a figurilor;
i) sortarea figurilor n ordine descresctoare suprafeei.
44) Implementai o clas numit vector util pentru operaiile cu tablourile de numere ntregi,
avnd ca date membru un tablou de numere ntregi (int elem[20]) i numrul efectiv de
elemente ale acestuia (int n). Includei n clas metode corespunztoare pentru citirea unui
vector de la tastatur, nmulirea tuturor elementelor cu un scalar, adugarea unui nou
element n vector, eliminarea unui element din vector i afiarea respectivului vector. n
exteriorul clasei definii o funcie pentru adunarea a 2 elemente de tip vector.
45) Implementai o clas numit vector util pentru operaiile cu tablourile de numere ntregi,
avnd ca date membru un tablou de numere ntregi (int elem[20]) i numrul efectiv de
elemente ale acestuia (int n). Includei n clas metode corespunztoare pentru citirea unui
vector de la tastatur, adugarea unui nou element n vector, eliminarea unui element din
vector i afiarea respectivului vector.
46) S se implementeze clasa mulime care permite manipularea mulimilor de numere. Clasa
conine un constructor cu parametri i metode pentru realizarea operaiilor de reuniune i
intersecie a 2 mulimi
47) S se defineasc clasa matrice i s se implementeze o funcie friend care realizeaz
adunarea a 2 matrici;
48) S se implementeze clasa carte cu atributele autor si ISBN derivat din clasa publicaie care
are atributele nume i numr de pagini.
49) S se implementeze o clas dreptunghi definit prin colurile stnga-sus i dreapta-jos,
derivat din clasa Point care conine coordonatele unui punct.
50) S se implementeze clasa numr_raional care sa conin ca atribute numitorul i
numrtorul. Clasa conine un constructor cu parametri i metode pentru adunare, scdere,
nmulire
51) Implementai o clas care calculeaz suma elementelor de pe fiecare coloan i le introduce
ntr-un vector.
52) S se implementeze clasa automobil cu atributele culoare, nr. ui, marca, derivat din clasa
maina cu atributele nr. roi i greutate.
53) S se implementeze ntr-o clas matrice o metod care calculeaz suma elementelor de sub
diagonala principal i o introduce ntr-un atribut membru.
54) S se implementeze clasa student avnd ca atribute nume, prenume, nota1, nota2, i ca
metode un constructor cu parametri, funcii de acces pentru toate atributele i o metod care
determin nota maxim.
55) Pornind de la clasa de baza persoana (nume, vrsta, constructor cu parametri), s se
implementeze clasa derivata medic (specializare, constructor, funcia de acces i funcia de
afiare atribute).
56) S se implementeze clasa dreptunghi (lungime, lime, constructor implicit, constructor cu
parametri). Definii funcia friend pentru calculul ariei i perimetrului.
57) Pornind de la clasa punct (x, y, constructor, funcia acces, metoda pentru distan) rezult
clasa dreptunghi. Construii o funcie friend pentru clasa dreptunghi care verific dac
dreptunghiul e ptratic.

Modulul 4 Formarea deprinderilor de lucru n echipe

*Pentru fiecare aplicaie se va elabora logo

1) Realizai o aplicaie Magazin*, prin intermediul cruia vor fi gestionate telefoanele mobile
ale unui magazin. Despre un telefon se cunosc urmtoarele date: marca, anul ediiei,
culoarea, preul, termenul de garanei, tipul camerei video etc.
2) Realizai o aplicaie Hoteluri*, prin intermediul cruia vor fi administrate hotelurile dintr-o
ar. Despre un hotel se cunosc urmtoarele date: nume hotel, adresa, numrul de stele,
numrul de odi (camere), costurile minim i maxim pentru o camer etc.
3) Realizai o aplicaie Salon Auto* prin intermediul cruia vor fi gestionate automobilele
dintr-un salon auto. Despre un automobil se cunosc urmtoarele date: marca, anul ediiei,
culoarea, preul, capacitatea motorului, consumul la 100 km etc.
4) Realizai o aplicaie de lucru cu Teste Gril*,

Un test gril este format dintr-un numr variabil de itemi. Un item const ntr-o ntrebare pentru
care se ofer exact patru variante de rspuns, dintre care doar un singur rspuns este corect.
Cnd se genereaz un test gril, se aleg n mod aleatoriu itemi distinci din lista itemilor
disponibili, numrul acestora fiind prestabilit (dar fr a depi 100). La rezolvarea unui test
gril, pentru evaluare vom considera c toi itemii din test au aceeai pondere pentru calculul
punctajului la test. La evaluare trebuie s se afieze punctajul total obinut la test, dar i
feedback punctual pentru fiecare item. Feedbackul poate fi doar Corect/ Incorect sau putei afia
un feedback mai elaborat, specific itemului respectiv (pentru itemii care au asociat un feedback
constructiv).
5) Realizai o aplicaie pentru jocul de Blackjack*

Blackjack, cunoscut i sub numele de 21, este unul dintre cele mai populare jocuri. de cri de
cazino din lume. Regulile jocului pot fi consultate pe Internet .

6) Realizai o aplicaie Catalogul electronic *

Construii clasele necesare i proiectai o aplicaie care s funcioneze ca un catalog colar


electronic. Catalogul electronic conine catalogul corespunztor fiecrei clase din coal.
Catalogul unei clase conine toi elevii clasei, cu notele (inclusiv nota la tez, dac este un obiect
cu tez) i absenele (motivate i nemotivate) la fiecare obiect. Catalogul trebuie s permit
toate operaiile permise n catalogul oficial".

7) Realizai o aplicaie Biblioteca *


Realizai o aplicaie care s permit gestiunea unei biblioteci colare. La bibliotec trebuie s
reinem :
o evidena crilor (pentru fiecare carte reinem cota crii, titlul, autorul, editura, anul
apariiei) ; aplicaia trebuie s permit adugarea unei cri, tergerea unei cri,
cutarea crilor dup titlu (cutare cu potrivire total sau parial), cutarea tuturor
crilor unui autor etc. , pentru crile de specialitate, reinei domeniul crii
(informatic, drept, medicin etc.) ; aplicaia trebuie s realizeze cutri dup domeniu
; evidena cititorilor (pentru fiecare cititor reinem codul de identificare a cititorului,
numele, adresa, telefonul, e-mail-ul); aplicaia trebuie s permit adugarea unui
cititor, tergerea unui cititor, cutarea cititorilor dup nume (cutare cu potrivire total
sau parial), cutarea unui cititor dup codul de identificare etc. ,

o evidenta mprumuturilor (un mprumut este identificat prin cota crii mprumutate,
codul cititorului care a mprumutat cartea, data la care a avut loc mprumutul i data
la care a fost restituit cartea mprumutat) ; aplicaia trebuie s permit realizarea
unui mprumut, restituirea unei cri, vizualizarea tuturor mprumuturilor restante
(crile pentru care termenul de predare a fost depit, mpreun cu datele cititorilor
care au mprumutat aceste cri), vizualizarea tuturor mprumuturilor unui cititor,
vizualizarea tuturor cititorilor care au mprumutat o anumit carte etc.
ntr-o dat membr static vei reine numrul de zile pentru care poate fi mprumutat o
carte (acelai pentru toate crile i pentru toi cititorii).
8) Realizai o aplicaie Programare la Dentist*

La un cabinet stomatologic, secretara realizeaz programarea pacienilor. Pentru fiecare


pacient programat, reine numele, timpul la care pacientul dorete s fie programat (ora i
minutul), respectiv durata maximal estimativ a tratamentului (determinat pe baza vastei
experiene a secretarei i exprimat de asemenea n ore i minute). Doctorul lucreaz dup
urmtorul algoritm :
o sosete la cabinet la ora la care este programat primul pacient ;
o nu lucreaz mai mult de 8 ore ;
o cnd termin de tratat un pacient, iar durata efectiv a tratamentului este mai mic dect
durata maximal estimat, doctorul se odihnete n timpul rmas pn la durata
maximal estimat ;
o secretara are suficient experien i estimeaz corect durata maximal a unui tratament,
astfel c doctorul nu depete niciodat durata maximal a tratamentului unui pacient ;
o dup terminarea tratamentului unui pacient (i a eventualei perioade de odihn), doctorul
invit n cabinet urmtorul pacient programat ;
o doctorul nu suport s existe pacieni n sala de ateptare ; fiecare pacient vine exact la ora
la care este programat i intr imediat n cabinetul doctorului.
n fiecare zi, secretara analizeaz lista programrilor pentru a doua zi i anuleaz o serie de
programri (telefonnd pacienilor pentru confirmare sau pentru reprogramare n alt zi), astfel nct:
o toate restriciile din algoritmul de lucru al doctorului s fie respectate ;
o doctorul s trateze un numr maxim de pacieni.
Scriei un program care afieaz lista programrilor confirmate pentru a doua zi.
Anexa Structura portofoliului

1 Foaia de titlu a practici de specialitate I

MINISTERUL EDUCAIEI AL REPUBLICII MOLDOVA


CENTRUL DE EXCELEN N ECONOMIE I FINANE

CATEDRA INFORMATIC

(Times New Roman, 14pt, bold, interval 1.0, centrat)

Practica de specialitate I
(Times New Roman, 18pt, bold, interval 1.0, centrat)

la specialitatea 1851 ,,Informatic


(Times New Roman, 14pt, bold, centrat)

Autor:
Elevul(a) gr. INF 11512 G,
nvmnt cu frecven la zi,
Ion POPESCU
____________________
(semntura)
(Times New Roman, 12pt)

Conductor de practic:
profesor, gr. didactic I,
Galina LUNCAU
____________________
(semntura)
(Times New Roman, 14pt)

Chiinu, 2017
(Times New Roman, 14pt, bold, centrat)
2. Cuprinsul
CUPRINSUL
I. AGENDA ..............................................................................................................................3
II. PROBLEMELE REZOLVATE
2.1. Modulul 1 (denumirea din coninuturi)..............................................................................4
Problema 1......................................................................................................................5
Problema 2......................................................................................................................7
......................
2.2. Modulul 2 (denumirea din coninuturi)..............................................................................24
Problema 1.....................................................................................................................25
Problema 2.....................................................................................................................27
......................
III. CONCLUZII ....................................................................................................................40
IV. BIBLIOGRAFIE...............................................................................................................42
V. ANEXE.................................................................................................................................43

3. Agenda practicii cu evidena activitilor desfurate;

Nr Data zz.ll.aaaa Compartimentul temelor Reuita

4. Descrierea problemelor rezolvate:

Modulul 1 Elemente de programarea modular n limbajele: Pascal i C/C++ va fi structurat dup


cum urmeaz:
A. Condiia problemei
B. Codul programului scris n limbajele Pascal i C++, divizat n mai multe module (unit-uri) cu
comentarea succint a fiecrui fiier.
C. Rezultatul execuiei programelor
Modulul 2Aplicaii ale tehnicilor de programare utilizate n procesul de studiu n baza limbajelor:
Pascal i C/C++ structurat dup modelul indicat pentru modulul doi.
Modulul 3Elemente de programare orientat pe obiecte n baza limbajului C++ structurat dup
modelul indicat pentru modulul doi.
Modulul 4 Formarea deprinderilor de lucru n echipe structurat dup cum urmeaz:
A. Prezentarea problemei i echipei de lucru.
B. Precizarea problemei rezolvate de ctre membru grupului
C. Prezentarea rezultatului final al ntregului accentul fiind pus pe problema soluionate de
ctre membru echipei.

5. Concluzii
- Analiza succint, rezumativ a rezultatelor obinute, att n cadrul studierii problemelor
teoretice, ct i a materialului experimental realizat i aprecierea acestor rezultate. Se vor
meniona modalitile i nivelul de realizare a obiectivelor formulate;
- Reflectarea opiniilor i a contribuiei personale n studierea i soluionarea problemei
(problemelor) abordate, a elementelor noi de investigare i tratare a problemei respective,
se va efectua generalizarea experienelor, se vor formula recomandri i propuneri de
utilizare practic etc.

S-ar putea să vă placă și