Documente Academic
Documente Profesional
Documente Cultură
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
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:
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
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) 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:
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
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
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.
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.
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).
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.
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.
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 Robotul
2
Intrare Ieire
3
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:
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.
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
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:
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.
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.
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.
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.
= ( )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.
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).
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.
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 .
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*
CATEDRA INFORMATIC
Practica de specialitate I
(Times New Roman, 18pt, bold, interval 1.0, 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
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.