Sunteți pe pagina 1din 75

5

CUPRINS
PREFA .............................................................................................9
Capitolul 1.
PROBLEME SIMPLE
1.1. Ghid de lucru.................................................................................11
1.2. Numere pitagorice ........................................................................14
1.3. Probleme propuse .........................................................................15
Capitolul 2.
PROBLEME CU IRURI DE NUMERE
2.1. Numere distincte ...........................................................................21
2.2. ir derivat din numerele naturale ..................................................23
2.3. Probleme propuse .........................................................................25
Capitolul 3.
PROBLEME REZOLVATE FOLOSIND VECTORI
3.1. Numrul punctelor din cerc ..........................................................35
3.2. Interclasare ...................................................................................36
3.3. Probleme propuse .........................................................................38
Capitolul 4.
PROBLEME CU MATRICE
4.1. Construirea unei matrice ...............................................................41
4.2. Generarea unei matrice dintr-un ir ...............................................42
4.3. Probleme propuse .........................................................................43
Capitolul 5.
SUBALGORITMI
5.1. Reuniunea unor mulimi ................................................................51
5.2. Numere prime ...............................................................................54
5.3. Probleme propuse .........................................................................55
Capitolul 6.
PROBLEME REZOLVATE CU MATRICE
6.1. Relaii ntre persoane ....................................................................63
6.2. Ptrate magice ..............................................................................64
6.3. Probleme propuse .........................................................................66
6
PREFA
Culegerea de probleme de fa se dorete a fi un ghid i o colecie de probleme
pentru nvarea programrii. Diversitatea problemelor propuse i gradul diferit de
dificultate fac culegerea util nu numai studenilor, ci i elevilor de liceu. Iniial ea a fost
conceput ca ghid pentru lucrrile de laborator ale studenilor anilor nti i doi de la
secia de Informatic a Facultii de Matematic i Informatic.
Problemele sunt grupate n 16 capitole, n funcie de specificul i gradul lor de
complexitate. Succesiunea capitolelor din culegere vizeaz o abordare gradual a
problematicii, att din punctul de vedere al complexitii algoritmilor, specificai n
limbaj Pseudocod, ct i al nvrii unui limbaj de programare, n particular limbajul
Pascal. Fiecare capitol conine cel puin dou exemple de probleme rezolvate, pentru
care sunt precizai att algoritmii de rezolvare, ct i programele surs Pascal. Intenia
autorilor este de a sugera un anumit stil de rezolvare a problemelor cu calculatorul,
acordndu-se o importan deosebit etapelor de analiz a problemei i de proiectare a
algoritmilor, etape n care limbajul de programare nu este implicat. Din acest punct de
vedere, problemele propuse sunt generale, implementarea soluiilor putnd fi fcut i n
alte limbaje de programare.
Problemele de acelai tip sunt grupate n acelai capitol, iar un capitol acoper
toat gama de probleme pentru tema abordat. Astfel, capitolul I conine probleme
elementare, a cror rezolvare nu cere folosirea vectorilor sau a matricelor. Capitolul doi
conine probleme referitoare la vectori, n timp ce capitolul trei conine probleme a cror
rezolvare cere folosirea vectorilor. Capitolul patru conine probleme cu matrice.
Capitolul cinci cere folosirea subalgoritmilor. Capitolul ase conine probleme a cror
rezolvare cere folosirea matricelor. Urmeaz un capitol de exemple i probleme pentru
programarea n limbaj main. Capitolul opt conine probleme referitoare la tipurile
mulime i enumerare din Pascal. Capitolul nou conine probleme referitoare la iruri de
caractere. Capitolul zece se refer la recursivitate. Urmeaz un capitol de probleme
privind folosirea fiierelor. Capitolul 12 conine probleme care cer folosirea tipului
referin n Pascal. Urmtorul capitol conine probleme de grafic cu calculatorul.
Capitolul 14 conine mai multe probleme date la diferite concursuri de programare.
Tipurile abstracte de date sunt obiectul capitolului 15. n sfrit, ultimul capitol conine
probleme despre grafe.
Dei la selectarea problemelor au contribuit toi autorii, fiecare capitol a fost
elaborat de unul sau doi autori, dup cum urmeaz:
Cap.1 - Prof. S.Groze i Prof. M.Freniu;
Cap.2 - Prof. M.Freniu;
Cap.3 - Lect. Robu J. i Prof. M.Freniu;
Cap.4 - Asist. S. Motogna;
Cap.5 - Asist. E.Iacob;
Cap.6 - Conf. Kasa Z. i Asist. S.Motogna;
Cap.7 - Conf. F.Boian;
Cap.8 - Lect. V.Ciobanu;
Cap.9 - Asist. S.Iurian;
Cap.10 - Asist. S.Iurian;
Cap.11 - Asist. H.Pop;
Cap.12 - Lect. V.Prejmereanu;
Cap.13 - Lect. V.Prejmereanu;
7
Cap.14 - Asist. S.Motogna;
Cap.15 - Conf. B.Prv i Prof. M.Freniu;
Cap.16 - Conf. T.Toadere.
Eventualele erori nu se pot imputa numai celor de mai sus, toi autorii participnd la
corectarea final a acestei culegeri.
Sperm ca prezentul material s-i ating scopul propus, cel de dezvoltare la
cititori a gustului de programare ntr-un limbaj evoluat, n particular n limbajul Pascal.
Contieni c exist posibiliti de mbuntire a coninutului prezentei lucrri,
autorii mulumesc anticipat pe aceast cale tuturor celor care vor face observaii i
propuneri de mbuntire, de care se va ine seama la o nou editare a culegerii de
probleme.
8
CAPITOLUL 1
PROBLEME SIMPLE
1.1. GHID DE LUCRU
Rezolvarea unei probleme cu ajutorul calculatorului presupune parcurgerea
urmtoarelor faze:
- precizarea complet a problemei de rezolvat;
- proiectarea algoritmului de rezolvare a problemei;
- programarea propriu-zis (implementarea);
- testarea programului obinut;
- exploatarea i ntreinerea programului.
Aceste faze constituie ciclul de via al programului.
De foarte multe ori, atunci cnd beneficiarul discut cu executantul despre
problema care trebuie rezolvat, acesta d un enun vag, incomplet, dac nu chiar
inexact sau contradictoriu, pentru problema de rezolvat. Urmeaz mai multe
discuii, uneori ntinse n timp, n urma crora se ajunge la un enun relativ
complet i exact al problemei. ntruct problemele propuse sunt luate din
domeniul matematicii sarcina noastr va fi mult mai uoar.
Dup enunarea problemei urmeaz modelarea matematic i cutarea unei
metode de rezolvare a ei. Uneori sunt posibile mai multe moduri de rezolvare, caz
n care se va alege metoda considerat cea mai potrivit scopului urmrit.
Modelarea matematic i alegerea unei metode de rezolvare se mbin aproape
ntotdeauna cu conceperea algoritmului, fiind greu s se separe una de cealalt.
Activitile de mai sus constituie ceea ce numim proiectarea programului.
Pe toat durata proiectrii trebuie menionate n scris toate deciziile luate,
ntruct este posibil ca ulterior s fie necesar o reproiectare i deci, s se revin
asupra acestor decizii. Documentaia realizat este necesar n primul rnd pentru
urmtoarea faz a ciclului de via al programului, implementarea. De asemenea,
n faza de ntreinere a programului este posibil modificarea unor module,
modificare n care sunt necesare s fie cunoscute i aceste decizii. E bine ca
proiectarea s fie astfel fcut nct s permit o ntreinere ct mai uoar. Faza
urmtoare, implementarea sau codificarea, const n traducerea algoritmului
ntr-un limbaj de programare. Evident, prima decizie ce trebuie luat const n
alegerea limbajului de programare n care va fi scris programul. n cele ce
urmeaz vom folosi n acest scop limbajul Pascal. De multe ori se vor folosi mai
multe limbaje pentru aceast activitate. De exemplu, pot exista unele module a
cror scriere se poate face numai n limbajul de asamblare. Urmeaz testarea
programului elaborat, care uneori pune n eviden erori grave de programare,
erori care au dus n unele situaii la refacerea (parial sau integral) a activitilor
anterioare. Sigur c este de dorit s nu se ajung la astfel de situaii i, dac
proiectarea i implementarea au fost fcute corect, n faza de testare nu ar trebui
s ntlnim erori.
Urmtoarea faz din viaa programului const n exploatarea propriu-zis a
9
acestuia, faz n care execuia se face cu date reale. Aceast activitate se ntinde
n timp pe mai muli ani i cere adeseori schimbri n program, motiv pentru care
este cunoscut sub numele de ntreinerea programului. Este faza cea mai
costisitoare i cea mai important din viaa unui produsul real. Toat activitatea
de realizare a programului trebuie s in seama de acest fapt i programul s fie
astfel conceput nct s se permit modificri n ceea ce face programul cu un
numr minim de modificri n textul acestuia. Documentarea programului
presupune elaborarea unor materiale scrise n care se precizeaz toate informaiile
utile despre programul realizat. Pentru proiectarea algoritmilor vom folosi
limbajul Pseudocod. Avantajele folosirii acestui limbaj pentru proiectarea
algoritmilor constau n faptul c permit programatorului s-i ndrepte complet
atenia asupra logicii rezolvrii problemei i s uite de restriciile impuse de
limbajul de programare i calculatorul folosit. n aceast faz este necesar o
analiz atent a problemei n vederea gsirii unui algoritm corect proiectat.
De asemenea, proiectarea algoritmului permite evitarea duplicrii unui grup
de instruciuni n mai multe pri ale programului. Identificarea unui astfel de grup
permite definirea lui ca un singur subalgoritm i folosirea acestui subalgoritm ori
de cte ori este necesar.
n descrierea unui algoritm deosebim urmtoarele activiti importante:
- specificarea problemei;
- descrierea metodei alese pentru rezolvarea problemei;
- precizarea denumirilor i semnificaiilor variabilelor folosite;
- descrierea algoritmului propriu-zis.
Astfel, dac ni se cere s calculm radicalul de ordinul 2 din x, n partea de
specificare a problemei vom meniona:
Se d un numr real nenegativ, notat prin x.
Se cere s gsim un alt numr pozitiv r astfel nct r
2
=x.
Pentru un informatician este clar c un astfel de numr nu se poate gsi n
general prin nici un procedeu finit. Este ns posibil s gsim o aproximare orict
de bun a lui r. Deci specificarea fcut nu este corect, neputnd gsi un
algoritm care s rezolve problema n forma enunat. Vom modifica aceast
specificaie, cernd s se calculeze aproximativ r cu o eroare ce nu depete un
numr real eps orict de mic.
Specificaia problemei este:
DATE eps,x; {eps,x R, eps>0 i x 0}
REZULTATE r; { r-rad(x) <eps}
unde prin rad(x) am notat radicalul de ordinul 2 din x definit n matematic.
Urmeaz s precizm metoda de rezolvare a problemei. Se tie c exist
cel puin dou posibiliti de a calcula pe r:
- ca limit a unui ir (definit printr-o relaie de recuren) convergent la r;
- prin rezolvarea ecuaiei r
2
=x.
Precizm c-l vom calcula pe r rezolvnd ecuaia r
2
=x. Dar i rezolvarea acestei
ecuaii se poate face prin mai multe metode. Decidem c o vom rezolva prin
10
metoda njumtirii. Aceast metod const n njumtirea repetat a
intervalului [a,b] care conine rdcina r la intervalul [a',b'], care este jumtatea
stng, sau jumtatea dreapt a intervalului [a,b], cea care conine rdcina.
Variabilele folosite n descrierea algoritmului sunt:
- a i b = capetele intervalului n care se afl rdcina;
- m mijlocul intervalului (a,b). n momentul n care b-a<eps,
m va fi chiar valoarea cutat pentru r.
Algoritmul propriu-zis este descris n continuare:
*Iniializeaz pe a i b;
REPET
FIE m:=(a+b)/2;
* Dac rdcina se afl n [a,m] atunci b:=m altfel a:=m.
PNCND b-a<eps SF-REPET
FIE r:=(a+b)/2;
n textul de mai sus apar dou propoziii nestandard care sugereaz ns
foarte bine ce aciuni trebuiesc ntreprinse. Prima stabilete intervalul iniial n
care se afl rdcina, care depinde de mrimea lui x: (x,1) cnd x este mai mic
dect 1 sau (1,x) n caz contrar. Deci ea se va transcrie n propoziia standard
DAC x<1 ATUNCI ATRIBUIE a:=x; b:=1
ALTFEL ATRIBUIE a:=1; b:=x
SF-DAC
A doua propoziie njumtete intervalul. Condiia ca rdcina s se afle n
jumtatea stng a intervalului este (a
2
-x)*(m
2
-x)<0. Se ajunge la urmtoarea
variant final:
ALGORITMUL RADICAL ESTE: {Calculeaz radical din x}
DATE eps,x; {eps,x R, eps>0 i x 0}
DAC x<1 ATUNCI FIE a:=x; b:=1 {Iniializeaz pe a i b}
ALTFEL FIE a:=1; b:=x
SF-DAC
REPET
DAC (a
2
-x)*(m
2
-x)<0 ATUNCI b:=m {rdcina n stnga}
ALTFEL a:=m {rdcina n dreapta}
SF-DAC
PNCND b-a<eps SF-REPET
FIE r:=(a+b)/2;
REZULTATE r; { r-rad(x) <eps}
SF-ALGORITM
Programul Pascal corespunztor este dat n continuare.
PROGRAM RADICAL; {Programul 1.1. Calculeaz radical din x}
11
VAR eps, {eps= precizia cu care se calculeaz}
x, {radical din x, eps>0 si x>=0}
r, {valoarea radicalului x}
a,b, {capetele intervalului ce conine pe r}
m : REAL; {mijlocul intervalului [a,b]}
BEGIN
WRITELN('Se calculeaz radical din x cu precizia eps:');
WRITE('eps='); READLN(eps);
WRITE(' x ='); READLN(x);
IF x<1 THEN BEGIN a:=x; b:=1 END {Iniializeaz pe a si b}
ELSE BEGIN a:=1; b:=x END;
REPEAT
m:=(a+b)/2;
IF (a*a-x)*(m*m-x)<0
THEN b:=m {rdcina n stnga}
ELSE a:=m; {rdcina in dreapta}
UNTIL b-a<eps;
r:=(a+b)/2;
WRITELN; WRITELN;
WRITELN('Radical(',x:6:1,') = ',r:6:3); { r-rad(x) <eps}
READLN
END.
1.2. NUMERE PITAGORICE.
Numerele a,b,c, se numesc pitagorice dac
2 2 2
a +b = c 1. S se tipreasc
toate tripletele (a,b,c) de numere pitagorice, cu 0<a<b<c i a+b+cn ordonate
dup suma a+b+c.
Specificarea problemei este:

DATE n; {n N; pentru n<12 nu exist triplete}
REZULTATE toate tripletele de numere pitagorice (a,b,c) cu proprietatea
0<a<b<c i a+b+c n.
Vom nota prin S suma a+b+c. Se tie c (3,4,5) este primul triplet de
numere pitagorice. n acest caz S ia valori de la 12 la n. ntruct 3a<S variabila
a ia valori de la 3 la S/3. Apoi 2b<S-a deci b va lua valori de la a+1 la (S-a)/2.
Algoritmul pentru rezolvarea problemei este dat n continuare :
Algoritmul NRPITAGORICE este :
Date n; {n N; pentru n<12 nu exist triplete}
Dac n<12
atunci Tiprete "Nu exist numerele cerute"
altfel Pentru S=12,n execut
Pentru a=3,S/3 execut
Pentru b=a+1,(S-a)/2 execut
12
Fie c:=S-a-b;
Dac c=a+b atunci Tiprete(a,b,c) Sf-dac
Sf-pentru
Sf-pentru
Sf-pentru
Sf-dac
Sf-algoritm.
Programul Pascal corespunztor este dat n continuare.
PROGRAM NRPITAGORICE; {Programul 1.1.2. Numere pitagorice}
VAR n, { n N; a+b+c n }
S, { S = a+b+c }
a,b,c, {(a,b,c) triplet de numere pitagorice}
{ 0 < a < b < c }
k : integer; { contor }
BEGIN
WRITELN('Se tipresc tripletele(a,b,c) de numere pitagorice');
WRITELN('cu proprietatea: a+b+c<=n, pentru n dat');
WRITE('Dai valoarea lui n:'); READLN(n);
For k:=1 to 4 do writeln;
k:=0;
IF n<12
THEN WRITELN('Nu exista numerele cerute')
ELSE FOR S:=12 TO n DO
FOR a:=3 TO S DIV 3 DO
FOR b:=a+1 TO (S-a) DIV 2 DO
BEGIN
c:=S-a-b;
IF c*c=a*a+b*b THEN BEGIN
k:=k+1;
WRITELN('Tripletul (a,b,c)',k:3,'= ',a:3, b:3,c:3);
END {IF}
END;
READLN;
END.
1.3. PROBLEME PROPUSE
1.1. Fie i,j,k. S se determine restul mpririi numrului natural i
j
la k.
1.2. S se tipreasc toate tripletele (i,j,k) de numere naturale care verific
condiiile
i
2
+ j
2
= k
2
1 < i < j < k n
13

1.3. S se verifice dac numrul n este perfect. (Un numr n este perfect
dac este egal cu suma divizorilor lui diferii de n; exemplu: 6=1+2+3).
1.4. S se determine numerele perfecte din intervalul [a,b], pentru a,b date.
1.5. Dou numere ntregi x i y sunt "prietene" dac suma divizorilor
numrului x este egal cu suma divizorilor numrului y. S se gseasc numerele
"prietene" din intervalul [a,b].
1.6. S se calculeze i s se tipreasc primii n termeni din irul Fibonacci,
ir definit de relaia de recuren
i+1 i i-1
t = t + t 2, i=1,2,...
avnd 0 1
t = t =1
3.
1.7. Fie n,k Z
+
, n k . S se scrie un algoritm pentru calculul numrului
combinrilor de n elemente luate cte k.
1.8. Fie a N. S se scrie un algoritm pentru calculul mediei aritmetice,
geometrice i armonice a tuturor divizorilor lui a.
1.9. Fie funcia lui Euler : N N , unde (n) este numrul numerelor relativ
prime cu n i mai mici ca n. S se tipreasc valorile (k), k =1,2,...,m, pentru m N
dat.
1.10. Fie n,k Z, n k. S se scrie un algoritm pentru calculul sumei
S = A + C + P
n
k
n
k
n
4.
1.11. S se determine toate numerele ntregi de trei cifre abc 5 cu
proprietatea
abc = a + b + c
3 3 3
6.
1.12. Se dau numerele z,l,a . S se determine dac tripletul (z,l,a)
reprezint o dat calendaristic a secolului nostru.
1.13. Se d o zi (z,l,a) dintr-un an. Se cere s se determine a cta zi din
acel an este aceast zi.
1.14. Se consider
( z ,l ,a )
n n n 7 data naterii unei persoane i
( z ,l ,a )
c c c 8 o
dat curent. S se determine vrsta, n zile, a persoanei respective.
1.15. Se dau datele de natere
( z ,l ,a ) ( z ,l ,a )
1 1 1 2 2 2
si
9 a dou persoane. Se
cere s se precizeze care din cele dou persoane este mai tnr, prin indicatorul
r {0,1,2} (0 dac au aceeai vrst, 1 dac prima persoan este mai tnr).
1.16. Cunoscnd n ce zi din sptmn a fost 1 ianuarie, s se scrie un
14
algoritm ce determin ziua din sptmn n care este a n-a zi a anului.
1.17. Anumite numere prime i pstreaz proprietatea de a rmne prime
pentru toate permutrile cifrelor lor. Ex. 13 i 31; 131,113 i 311, etc.). S se
scrie un algoritm care determin numerele prime "permutabile", mai mici dect un
numr m dat.
1.18. O formul de generare a unui ir de numere (y
i
) este
n
2
y = n - 79n + 160110.
Se cere algoritmul care determin pentru un numr n {1,...,90} cte dintre
primele n numere din acest ir sunt prime.
1.19. S se scrie un algoritm care s exprime orice sum de lei S, n
minimum de monede de 1 leu, 3 lei, 5 lei, 10 lei , 20 lei, 50 lei i 100 lei.
1.20. Fiind date numerele a,b,c,d Z, se cere un algoritm care s stabileasc
cea mai mare dintre fraciile a/b i c/d.
1.21. S se gseasc soluiile ntregi i pozitive ale ecuaiei ax + by = c, cu
proprietatea x+y<n, pentru a,b,c aparine lui Z i n>0.
1.22. Se cere valoarea funciei f:[-9,9] n punctul x, dac
f x
x
-x - <x
x + , <x
x>
( )

'

1, pentru
, pentru
pentru
, pentru
1
3 1 0
2 0 0
10 1
2
1.23. S se determine soluiile ntregi ale sistemului

y x
y 2 x - 16
2
2

'

11
1.24. Se d n . S se calculeze
k=1
n
C
k
n
(1+
1
2
+...+
1
k
)

12
1.25. Fie a,b,c
+
. S se scrie un algoritm pentru rezolvarea ecuaiei
2
x +dx + p =0
13
unde d = (a,b) este cel mai mare divizor comun al numerelor a i b, iar p este
probabilitatea ca un numr n ce verific condiia n c, luat la ntmplare, s fie
prim.
15
1.26. Se cere un algoritm pentru determinarea numerelor impare succesive
a cror sum este egal cu n
3
, pentru n=1,...,20. (Ex.
3 3 3
1 =1, 2 = 3+5, 3 =7 +9+11
, etc).
1.27. S se scrie un algoritm care citete succesiv p perechi de numere
ntregi (m,n), cu 0 m n i care calculeaz, pentru fiecare pereche coeficientul
binomial b
n,m
definit de relaia recursiv
n,m
n-1,m-1 n-1,m
b =
1, m= 0 m= n,
b +b , .
daca sau
in caz contrar

'

15
1.28. S se afle toate punctele de coordonate ntregi situate n interiorul
ptratului cu diagonala determinat de punctele A(a,b) i C(c,d).
1.29. Fie a,b . S se scrie un algoritm pentru calculul numrului
punctelor de coordonate ntregi interioare elipsei de ecuaie
2
2
2
2
x
a
+
y
b
= 1 16
1.30. Fie dreapta d determinat de punctele A(a
1
,a
2
) i B(b
1
,b
2
). S se
determine poziia punctelor A i B fa de dreapta d, prin indicatorul R definit
astfel:
R=0, dac punctele A(a
1
,a
2
) i B(b
1
,b
2
) se afl n acelai semiplan determinat de
dreapta d ;
R=1, dac punctele A i B aparin dreptei d;
R=2, dac punctele A i B se afl n semiplane diferite fa de dreapta d.
1.31. Se d un triunghi prin coordonatele vrfurilor sale i un punct M n
planul su. S se determine poziia punctului M fa de laturile triunghiului,
marcndu-se cu R {1,2,3} trei situaii posibile: interior triunghiului, pe una din
laturi, exterior triunghiului.
1.32. Se d un ptrat P
1
de latur 1 cruia i se circumscrie un cerc C
1
.
Cercului obinut i se circumscrie un nou ptrat P
2
, acestuia un nou cerc C
2
, etc. S
se calculeze aria ptratului P
n
i aria cercului C
n
obinute dup un numr de n
pai, prin metoda de mai sus.
1.33. Se dau trei puncte M
i
(x
i
,y
i
), i=1,2,3, n plan. S se determine
parametrul k care s ia valoarea 0 dac punctele sunt coliniare, respectiv 1 n caz
contrar.
1.34. Se dau a,b,c,d,e,f . S se determine poziia dreptelor
16

ax + by + c = 0
dx + ey + f = 0

'

17
i unghiul dintre ele, exprimat n grade.
1.35. Se cunosc lungimile laturilor unui triunghi. Se cere s se calculeze
perimetrul, unghiurile i aria triunghiului.
1.36. Se consider segmentele de dreapt cu extremitile n punctele
A(a
1
,a
2
), B(b
1
,b
2
), respectiv C(c
1
,c
2
), D(d
1
,d
2
). S se determine un algoritm de
calcul pentru coordonatele punctului de intersecie a segmentelor date. n cazul n
care acest punct nu exist, se va tipri un mesaj.
1.37. O fabric de mobil primete comenzi pentru producerea unei
diversiti de biblioteci, avnd:
- lungimea cuprins ntre 2-9 m;
- nlimea cuprins ntre 1-3 m;
- un numr de 2,4,6,9 sau 12 corpuri.
Costul unei biblioteci este de a lei pentru fiecare metru cub de volum, la care se
adaug b lei pentru fiecare corp. Construcia unei biblioteci trebuie s respecte
anumite condiii impuse de normele de fabricaie:
- lungimea trebuie s fie de 2-3 ori mai mare dect nlimea;
- limea trebuie s fie 1/3 pn la 1/2 din nlime;
- numrul de corpuri trebuie s fie n raportul de 1/2 pn la 1 fa de produsul
dintre lungime i nlime. Se cere algoritmul de acceptare al unei comenzi i de
calcul al preului.
1.38. Fie funcia f:[a,b] , dat de
f(x) =
ax +bx , a x (a+b) / 2
ax +bx
x+2
, (a+b) / 2 < x b
2
2
daca
daca

'

18
S se calculeze valoarea lui f pentru x [a,b].
1.39. Se cere un algoritm pentru calculul aproximativ al rdcinii unei
ecuaii f(x)=0, unde f:(a,b) este continu i monoton, folosind metoda
combinat a coardei i a tangentei. Cu metoda dedus, s se calculeze M
n
19.
Indicaie. Se va lua f(x) = x
n
- M, iar intervalul (a,b), se nlocuiete cu
[0,M].
1.40. Dintr-o urn cu m bile (m>1), numerotate de la 1 la m, se extrage la
ntmplare o bil. S se scrie un algoritm pentru calculul probabilitii ca numrul
nscris pe bila extras s fie prim.
17
1.41. Un mobil efectueaz o micare oscilatorie armonic. tiind c pentru
elongaiile x
1
=2 cm i x
2
=3 cm, mobilul are vitezele v
1
=5m/s i respectiv v
2
=4m/s,
s se calculeze amplitudinea i perioada micrii oscilatorii a mobilului.
Indicaie. Se tie c PI=3.14 i se ine seama c amplitudinea, respectiv
perioada micrii oscilatorie a mobilului sunt date de
A=
x v - x v
v - v
; T = 2PI
x - x
v - v
1
2
2
2
2
2
1
2
2
2
1
2
1
2
2
2
2
2
1
2
20
1.42. Se dau punctele A, B, C, D prin coordonatele lor n plan. Citindu-se
coordonatele acestor puncte, s se stabileasc dac ele sunt vrfurile unui
dreptunghi sau nu sunt.
1.43. Se dau punctele A, B, C prin coordonatele lor rectangulare. S se
determine punctul D tiind c el este piciorul perpendicularei dus din A pe BC.
1.44. Se dau punctele A, B, C, D prin coordonatele lor n plan. S se
determine punctul E pe segmentul AB i punctul F pe segmentul CD astfel nct
distana dintre E i F s fie minim.
1.45. Se dau punctele A, B, C, D prin coordonatele lor n plan. Dreapta ce
trece prin A i B, cercul de centru (0,2) i raz 5 i parabola de ecuaie y=x
2
+1
determin o mprire a planului n opt regiuni interioare. S se determine dac
punctele C i D se afl n aceeai regiune sau nu.
1.46. Se dau n {1,2,...,366} i a numr de an al secolului nostru. S se
precizeze data corespunztoare celei de a n-a zi a anului a sub forma (lun, zi).
1.47. Se d numrul n . S se tipreasc acest numr n sistemul de
numeraie roman.

1.48. tiind c 1 ianuarie 1994 a fost ntr-o zi de smbt, s se determine
n ce zi a sptmnii va fi 1 ianuarie 2020.
1.49. Se consider trei rezervoare cilindrice care conin benzin de trei
caliti. Se cere situaia livrrilor sptmnale, livrrile zilnice nregistrndu-se
secvenial. S se precizeze beneficiarul cruia i s-a livrat cantitatea maxim de
benzin
19
CAPITOLUL 2
PROBLEME CU IRURI DE NUMERE
2.1. NUMERE DISTINCTE
Se dau n i numerele ntregi x
1
,x
2
, ...,x
n
. Se cere s se rein ntr-un vector Y
toate numerele, dar fr a repeta vreunul, deci Y are numai componente distincte.
Specificarea problemei:
DATE n, (x
i
, i=1,n); { x
i
Z, pentru i=1,2,...,n }
REZULTATE (y
j
, j=1,k); { X=Y, unde X este }
{ mulimea ce conine toate numerele x
i
, i=1,n, }
{ iar Y =mulimea ce conine pe y
j
, j=1,k i y
l
y
j
pentru l j}
Variabilele intermediare folosite i semnificaia lor, precum i metoda folosit vor
fi rezultatul rafinrilor succesive i vor fi nelese din textul versiunilor respective.
ALGORITMUL DISTINCTE ESTE: { Versiunea 1 }
DATE n, (x
i
, i=1,n);
FIE y
1
:=x
1
; k:=1;
*Examineaz celelalte numere i dac este cazul pune-le n Y.
REZULTATE (y
j
, j=1,k);
SF-ALGORITM
Pentru a parcurge celelalte numere avem nevoie de un contor, fie el i, i de
folosirea propoziiei PENTRU. Ajungem la:
ALGORITMUL DISTINCTE ESTE: { Versiunea 2 }
DATE n, (x
i
, i=1,n);
FIE y
1
:=x
1
; k:=1;
PENTRU i:=2,n EXECUT
*Verific dac x
i
aparine lui Y.
*Dac nu aparine atunci adaug pe x
i
la Y.
SF-PENTRU
REZULTATE (y
j
, j=1,k);
SF-ALGORITM
Decizia ce trebuie luat este cum s verificm apartenena unui element u la
mulimea Y. Pentru aceasta vom reine n indicatorul ind cele dou situaii posibile: 0
pentru apartenen i pozitiv n caz contrar. Acest calcul se poate face folosind
urmtoarele propoziii:
ind:=1;
CTTIMP (ind 1) i (ind<=k) EXECUT
20
DAC x
i
=y
ind
ATUNCI ind:=0
ALTFEL ind:=ind+1
SF-DAC
SF-CTTIMP
Cu acestea ajungem la versiunea final a algoritmului dorit.
ALGORITMUL DISTINCTE ESTE: { Versiunea final }
DATE n, (x
i
, i=1,n); { x
i
Z, pentru i=1,2,...,n }
FIE y
1
:=x
1
; k:=1;
PENTRU i:=2,n EXECUT
{Verific dac x
i
aparine lui Y}
ind:=1;
CTTIMP (ind 1) i (ind<=k) EXECUT
DAC x
i
=y
ind
ATUNCI ind:=0
ALTFEL ind:=ind+1
SF-DAC
SF-CTTIMP
{Dac nu aparine atunci adaug pe x
i
la Y}
DAC ind>0 ATUNCI k:=k+1;
y
k
:=x
i
SF-DAC
SF-PENTRU
REZULTATE (y
j
, j=1,k); {X=Y, unde X este mulimea ce conine }
{ toate numerele x
i
, i=1,n, iar Y este mulimea }
{ ce conine pe y
j
, j=1,k i y
l
y
j
pentru l j }
SF-ALGORITM
Programul Pascal corespunztor este:
PROGRAM DISTINCTE; { Programul 2.1. Retine valorile distincte }
VAR n, { numrul numerelor date }
i,j, { contor - variabile de lucru }
k, { numrul valorilor distincte gsite }
ind : integer; { indicator; retine daca x[i] este in Y }
X, { Vector cu numerele date }
Y : array[1..100] of integer; { Vector cu numerele distincte }
BEGIN
Writeln('Se da vectorul X cu n componente reale');
Writeln('Se pun in Y toate valorile ce apar in X');
Write(' n='); readln(n);
For i:=1 to n do
begin write('x(',i,')='); readln(x[i]) end;
y[1]:=x[1]; k:=1;
For i:=2 to n do
begin { Verifica daca }
ind:=1; { x[i] aparine lui Y }
While (ind>0) and (ind<=k) do
21
If x[i]=y[ind] then ind:=0
else ind:=ind+1;
{ Dac nu aparine lui Y }
IF ind>0 then { atunci adaug pe x[i] la Y }
begin k:=k+1; y[k]:=x[i] end;
end;
Writeln; { Tiprete rezultatele }
Writeln(' Numerele distincte sunt');
For j:=1 to k do write(y[j]:5);
readln
END.
2.2. IR DERIVAT DIN NUMERELE NATURALE
Se consider irul
1,2,1,3,2,1,4,2,2,5,4,3,2,1,6,2,2,3,3,3,7,6,...
obinut din irul numerelor naturale prin nlocuirea fiecrui numr natural n printr-un
grup de numere, dup urmtoarele reguli: numrul prim p este nlocuit prin numerele
p,p-1,...3,2,1, iar numrul compus c este nlocuit prin c urmat de toi divizorii si proprii,
un divizor d repetndu-se de d ori. Dndu-se numrul natural n, se cere s se tipreasc
primele n numere din irul dat.
Specificarea problemei.
Se d un numr natural n i irul de numere naturale descris mai sus.
Se cere tiprirea primelor n numere din irul dat.
Aparent problema este complet specificat, ceea ce nu e complet adevrat. Ne
dm seama de acest lucru dac ncercm s precizm ce rezultate se vor reine n
memoria calculatorului. Este posibil ca n memorie s reinem toate numerele cerute ntr-
un vector X sub forma
Y =( y , y ,..., y )
1 2 n
21, sau s nu le reinem n memorie ci doar s
le afim pe ecran. De fapt exist o variant simplificat a problemei de mai sus n care
se cere s se obin doar al n-lea numr din irul dat.
Specificarea problemei, pentru tiprirea celor n numere, fr reinerea lor n
memorie.
DATE n; { n N, n>0 }
REZULTATE afiarea primelor n numere din irul menionat.
Pentru a concepe un algoritm de rezolvare, n ambele variante se parcurge irul dat,
reinnd sub numele t termenul curent al irului, iar sub numele i poziia acestui termen
n vector. Prin k vom nota numrul natural din care se obine grupul de termeni din care
face parte t, iar prin j indicele lui t n acest grup. Indicatorul ind va primi valoarea 1 dac
22
numrul k este prim i 0 n caz contrar.
Algoritmul pentru rezolvarea problemei este dat n continuare.
Algoritmul GENERARE1 este: { varianta1 }
DATE n; { n N, n>0 }
Fie i:=1;
t:=1; tiprete t;
k:=2;
ind:=1; { Pentru cazul k este prim }
Cttimp i<n execut
* execut t:=termenul urmtor din ir;
i:=i+1;
Tiprete t
sf-cttimp;
sf-algoritm
Pentru a genera urmtorul termen din ir va trebui s inem seama de valoarea lui
ind, prin care tim dac numrul k este prim sau nu este prim. Pentru a decide dac un
numr k este prim sau nu, vom verifica dac k se divide cu un numr mai mic dect el i
diferit de 1. Secvena de propoziii prin care se calculeaz valoarea lui ind este
urmtoarea:
Fie ind:=0;
Pentru j:=2,k/2 execut
Dac k mod j = 0 atunci ind:=1 sf-dac
sf-pentru
innd seama de cele menionate mai sus ajungem la urmtoarea variant a
algoritmului:
Algoritmul GENERARE1 este : { varianta final }
DATE n; { n N, n>0 }
Fie i:=1; t:=1; Tiprete t;
k:=2; ind:=1;
Ct timp i<n execut
t:=k;
Dac ind=1
atunci Ct timp (i<n) i (t 1) execut
i:=i+1;
Tiprete t; t:=t-1
sf-ct timp
altfel d:=2; i:=i+1; Tiprete k;
Ct timp d<k i i<n execut
Dac k mod d = 0 atunci
j:=1; t:=d;
Repet i:=i+1;
Tiprete t;
23
j:=j+1;
pn cnd j>d sf-repet
sf-dac
d:=d+1
sf-ct timp;
sf-dac
k:=k+1;
Fie ind:=1;
Pentru j:=2,k-1 execut
Dac k mod j = 0 atunci ind:=0 sf-dac
sf-pentru
sf-ct timp
sf-algoritm.
Pentru a reine termenii dorii ntr-un ir Y este suficient s nlocuim propoziia
"Tiprete t" prin propoziia " i
Y 22:=t".
Transcriind n Pascal se obine urmtorul program:
Program SIR; { Programul 2.2. Tiprete n termeni dintr-un ir }
Var n, { Numrul termenilor ce trebuie tiprii }
i, { Contor = numrul termenilor tiprii }
j, { Contor = de cate ori s-a tiprit d ! }
k, { Numr natural din care se obin ultimii termeni }
d, { d va lua ca valori divizorii lui k }
t, { t = termenul curent din ir }
ind : integer; { indicator ce retine daca este k prim }
Begin
for i:=1 to 20 do writeln;
Writeln('Se tipresc n termeni dintr-un ir');
write('Dai n='); Readln(n);
i:=1; t:=1; write(t);
k:=2; ind:=1;
While i<n do
begin t:=k;
If ind=1
then while (i<n) and (t>=1) do
begin i:=i+1;
write(t:5); t:=t-1;
end
else begin d:=2;
i:=i+1; write(k:5);
while (d<k) and (i<n) do
begin
If k mod d = 0 then
begin
j:=1; t:=d;
Repeat i:=i+1; write(t:5); j:=j+1 until j>d;
24
end;
d:=d+1
end;
end;
k:=k+1; ind:=1;
For j:=2 to k-1 do
If k mod j = 0 then ind:=0;
end {while};
readln(d);
end.
2.3. PROBLEME PROPUSE.
Pentru problemele propuse mai jos se cere s se descrie n limbajul Pseudocod un
algoritm de rezolvare, preciznd i semnificaia variabilelor folosite. De asemenea, s se
scrie programul Pascal corespunztor.
2.1. Se d numrul natural n > 1. S se genereze toi divizorii pozitivi
1 2 m
d ,d ,...,d 23 ai numrului n.
2.2. S se genereze toate numerele prime mai mici dect numrul natural n dat.
2.3. Se dau m,n
+
. S se determine primele n cifre din scrierea fraciei 1/m ca
fracie zecimal.
2.4. Se d numrul natural m > 1. S se formeze vectorul ale crui componente
sunt primele m numere din irul lui Fibonacci, definit prin n
1
=n
2
=1 i n
k+1
=n
k
+n
k-1
pentru
k=2,3,... .
2.5. Se d numrul natural n > 1. S se tipreasc triunghiul lui Pascal, avnd n
linia m toate combinrile C(m,k) de m obiecte luate cte k, k=0,m, pentru m=1,2,...,n. Se
va folosi relaia de recuren:
C(m,k) = C(m-1,k)+C(m-1,k-1)
deci elementele liniei m se calculeaz din elementele liniei m-1 (precedente).
2.6. Se dau m,k
+
. S se determine numrul n al cifrelor i cele n cifre din
scrierea numrului ntreg m
k
= (c
1
c
2
c
3
...c
n
)
10
.
2.7. Se dau numrul natural n > 1 i X
n
. S se determine indicele componentei
minime i indicele componentei maxime din X.
2.8. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se gseasc toate
poziiile
1 2 k
p , p ,..., p
24 pe care se afl valoarea maxim.
2.9. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se verifice dac
numerele date sunt n progresie aritmetic sau geometric, calculnd indicatorul Ind
definit astfel:
25
Ind = 1, dac numerele sunt n progresie aritmetic,
Ind = 2, dac numerele sunt n progresie geometric,
Ind = 3, n caz contrar.
2.10. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se gseasc media
numerelor date, numrul valorilor pozitive, produsul valorilor negative i s se
tipreasc numerele mai mari dect 100.
2.11. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se ordoneze
cresctor primele k numere i descresctor celelalte numere, pentru k dat, k {1,2,...,n}.
2.12. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se gseasc toate
numerele distincte
1 2 m
y , y ,..., y
25 din irul X precum i frecvenele acestor numere
ntre numerele date.
2.13. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se calculeze
y
j
=x
1
*x
1
+x
2
*x
2
+...+x
j
*x
j
, pentru j=1,2,...,n i M = max{x
j
*y
j
j=1,n }.
2.14. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se determine cel
mai mare numr negativ i poziiile pe care se afl el n irul dat.
2.15. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se calculeze
i
j j
1 2 i
y
=
{
x
|
x
>0, j =1,i }, i
(
x
+
x
+...+
x
) / i, i
max daca este par
daca este impar

'

26
pentru i=1,2,...,n.
2.16. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se formeze
vectorul Y=(y
1
,y
2
,...,y
n
), unde y
i
ia valoarea 1 dac x
i
, x
i+1
, x
i+2
pot fi lungimile laturilor
unui triunghi i 0 n caz contrar, pentru i=1,2,...,n. Numerele x
n+1
, x
n+2
se iau egale cu x
n
.
2.17. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se determine
i
j
i
y
=
{
x
| j = i,n }, i
m
, i
max daca este par
daca este impar

'

27
unde m
i
este numrul componentelor vectorului X egale cu x
i
, pentru i=1,2,...,n.
2.18. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. S se calculeze
componentele vectorului
Y = ( y , y ,..., y ).
1 2 n
28 Componenta y
i
este media aritmetic a
26
componentelor pozitive de rang mai mic sau egal cu i ale vectorului X, n cazul n care
exist componente pozitive, respectiv -1 n caz contrar.
2.19. Se dau numrul natural n > 1 i numerele x
1
, x
2
, ..., x
n
. S se calculeze y
i
pentru i=1,n, tiind c
y
1
= (x
1
+x
2
)/2, y
2
= (x
1
+x
2
+x
3
)/3,
y
n
= (x
n-1
+x
n
)/2, y
n-1
= (x
n-2
+x
n-1
+x
n
)/3,
iar y
k
este media numerelor x
k-2
, x
k-1
, x
k
, x
k+1
, x
k+2
, pentru k=3,4,...,n-2.
2.20. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. S se determine
numrul k al numerelor negative din irul X i mediile v
i
pentru i=1,2,...,k-1. Prin v
i
s-a
notat media numerelor pozitive cuprinse ntre al i-lea i al i+1-lea numr negativ, dac
exist numere pozitive, respectiv 0 n caz contrar.
2.21. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. S se rein toate
numerele distincte y
1
,y
2
,...,y
k
i s se calculeze frecvenele de apariie ale acestor numere
n irul dat.
2.22. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. S se determine
vectorul Y=(y
1
,y
2
,...,y
n
), unde y
i
este egal cu numrul valorilor din irul dat mai mari
dect x
i
, pentru i=1,n.
2.23. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. Dac y
i
este numrul
termenilor mulimii {x
j
x
j
<x
i
,j<i}, s se determine vectorul Y=(y
1
,y
2
,...,y
n
).
2.24. Se dau numrul natural n > 1 i X
n
. S se determine vectorul
Y=(y
1
,y
2
,...,y
n
), unde y
i
este poziia valorii minime n secvena de numere x
1
,x
2
,...,x
i
(cea
mai mic dac exist mai multe poziii).
2.25. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. S se calculeze
primele k momente m
1
, m
2
,..., m
k
. Prin momentul de ordinul j, notat m
j
, se nelege media
aritmetic a puterilor de exponent j ale numerelor date.
2.26. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. Dac m
1
i m
2
sunt
primele dou momente (vezi problema 2.25) s se calculeze s, unde s
2
=m
2
-m
1
*m
1
i f
j
,
j=1,9, dac f
k
este numrul elementelor mulimii
{ x | m - k* s < x < m +k* s}
i 1 i 1 29.
2.27. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. Secvena x
i
, x
i+1
,...,
x
i+p
se numete scar (de lungime p) dac x
i
<x
i+1
<...<x
i+p
. Se cere s se tipreasc cea
mai lung scar din irul dat i poziia i din ir la care ncepe aceast scar.
2.28. Se dau numrul natural n > 1 i numerele x
1
, x
2
,..., x
n
. S se gseasc
permutarea o
1
, o
2
,..., o
n
a indicilor 1,2,...,n astfel nct
1 2 n
o o o
x x ... x .
30
2.29. Se dau a , n i numerele reale x
1
, x
2
,..., x
n
. S se determine
cardinalul (numrul elementelor) mulimii
{ i | x a }
i

31 i indicatorul r definit astfel:
r = i, dac exist i pentru care a=x
i
, (cel mai mic i)
27
r = 0, n caz contrar.
2.30. Se dau a , n i numerele reale x
1
, x
2
,..., x
n
. S se determine indicele i
(cel mai mic, dac exist mai muli) pentru care valoarea x
i
este cea mai apropiat de a.
2.31. Se dau a , n i numerele reale x
1
, x
2
,..., x
n
. S se rearanjeze aceste
numere astfel nct toate numerele mai mici dect a s fie naintea tuturor numerelor
egale cu a sau mai mari dect a, cu ct mai puine schimbri, deci fr a ordona tot irul.
2.32. Se dau a , n i numerele reale x
1
, x
2
,..., x
n
. S se determine vectorul Z
cu componentele
i
1 2 i i
i i+1 n i
z
=
x + x +...+x , x > a,
{
x
,
x
,...,
x
},
x
a.
daca
max daca

'

32
2.33. Se dau a , n i numerele reale 1 2 n
x , x ,..., x 33. S se elimine din
irul X toate elementele mai mici dect a.
2.34. Se dau a , n i numerele reale 1 2 n
x , x ,..., x 34. S se ordoneze
numerele date cresctor dup distana lor fa de numrul real a.
2.35. Se dau n , numerele reale a, b, a<b, i vectorul X cu componente reale
1 2 n
x , x ,..., x 35. S se determine media aritmetic a componentelor lui X aflate n
intervalul [a,b] i s se listeze perechile
(i, x )
i 36 pentru care i
x 37 [ a,b].
2.36. Se dau n , numerele reale a, b, a<b, i vectorul X cu componente reale
1 2 n
x , x ,..., x 38. S se rein n vectorul Y= (y
1
,y
2
,...,y
k
), toate componentele vectorului
X care aparin intervalului [a,b].
2.37. Se dau n , numerele reale a, b, a<b, i vectorul X cu componente reale
1 2 n
x , x ,..., x 39. S se gseasc minimul i maximul numerelor mai mici dect b, apoi
s se elimine din vectorul X toate componentele care nu aparin intervalului [a,b].
2.38. Se dau n i numerele reale i
i
x , y
40, i=1,n. S se calculeze
d = | x - y |+| x - y |+...+| x - y |
1
1
2
2
n
n
41 i
v = { { x , y }| i =1,n}
i
i
max min
42.
2.39. Se dau n i numerele reale i
i
x , y
43, i=1,2,...,n. S se rein n
1 2 k
i , i ,..., i 44 toate poziiile p pentru care x
p
=y
p
.
2.40. Se dau n i numerele reale i
i
x , y
45, i=1,2,...,n. S se calculeze
i
i
i
i
i
i
i
z =
{
x
+
y
},
x
,
{ x +
y
}, x ,
max daca
max daca


>

'

0
0
46
28
pentru i=1,2,...,n.
2.41. Se dau n i numerele reale i
i
x , y
47, i=1,2,...,n. S se calculeze
m=( x + x +...+x ) / n
1 2 n 48 i
d =( x * x + x * x +...+x * x ) / n
1 1 2 2 n n 49 i s se tipreasc toi
indicii i pentru care
| x - m|<3d
i 50.
2.42. Se dau n i numerele reale i
i
x , y
51, i=1,2,...,n. S se calculeze
i
i
i
1 2 i
z
=
x
+
y
, i ,
{
x
,
x
,...,
x
}, i ,
daca este impar
max daca este par

'

52
pentru i=1,2,...,n i
v = { z , z ,..., z }
1 2 n
min
53.
2.43. Se dau n i numerele reale i
i
x , y
54, i =1,2,...,n. S se calculeze
i
i i
i
i
i
i
i
i
c =
x , x <
y
,
0 , x =
y
,
y
, x >
y
,
daca
daca
daca

'

55
pentru i=1,2,...,n.
2.44. Se dau n i numerele reale i
i
x , y
56, i=1,2,...,n. S se calculeze
i
1 2 i i
i
i
i
i n
i
i
z =
( x + x +...+x ) / i, x <
y
,
0, x =
y
,
{|
y
|,... ,|
y
| }, x >
y
,
daca
daca
max daca

'

57
pentru i=1,2,...,n.
2.45. Se dau n i numerele reale i
i
x , y
58, i=1,2,...,n. S se calculeze
E = {|x |,| y | } + ...+ {| x |,| y | },
1
1
n
n
min min
59
i s se determine elementele mulimii
{ i | x * x > E}
i i 60.
29
2.46. Se dau n i numerele reale i
i
x , y
61,i=1,2,...,n. S se calculeze
2.47.
s1 = ( y + y + ... + y ),
s2 = ( y * x + y * x +...+ y * x ) / s1,
s3 = ( y * x * x + y * x * x +...+ y * x * x ) / s1,
1 2 n
1
1
2
2
n
n
1
1 1
2
2 2
n
n n
62
i m = cardinalul mulimii
{ x | 3(s3 - s2* s2) > | x - s2| }
i i 63.
2.47. Se dau n i numerele reale i
i
x , y
64, i=1,2,...,n. S se formeze vectorul
Z cu componentele
i
1 2 i
i i
i
1 2 i i
z
=
{
x
+
x
+...+
x
) / i,
y
},
y
0,
{ x ,(
y
+
y
+...+
y
) / i},
y
< 0,
max daca
min daca


'

65
pentru i=1,2,...,n.
2.48. Se dau n i numerele reale i
i
x , y
66, i=1,2,...,n. S se calculeze
i
1 2 i i
i
1 2 i i
i
i i+1 n
i
i
z =
{ x , x ,..., x }, x <
y
,
{ { x , x ,..., x }, 0}, x =
y
,
{
y
,
y
,...,
y
}, x >
y
,
max daca
max min daca
min daca

'

67
pentru i=1,2,...,n.
2.49. Se dau n i numerele reale i
i
x , y
68, i=1,2,...,n. S se calculeze
i
1 2 i i
i
i
1 2 i
i
i
i i+1 n
i
i
i
c =
( x + x +...+x ) / i, x
y
< 0,
{ x ,
y
,
y
,...,
y
}, x
y
= 0,
{ x , x ,..., x ,
y
}, x
y
> 0,
daca
max daca
min daca

'

69
pentru i=1,2,...,n.
2.50. Se dau n i numerele reale i
i
x , y
70, i=1,2,...,n. S se rein poziiile
1 2 k
i , i , ... , i 71, pe care cei doi vectori coincid. S se elimine din vectorii X i Y
termenii de pe aceste poziii.
2.51. Se dau n i numerele reale i
i
x , y
72, i=1,2,...,n. S se determine
vectorul
M =( m ,m ,...,m )
1 2 n 73, unde i
m 74 este poziia componentei maxime a
vectorului
( x , x ,..., x , y , y ,..., y )
1 2 i
i i+1 n
75 (dac exist mai multe, poziia primei valori maxime).
2.52. Se dau n i X,Y
n
. S se determine poziiile i0 i j0 cu urmtoarea
30
proprietate: exist m componente consecutive din cei doi vectori, ncepnd cu poziiile
i0, respectiv j0, care coincid i m este cel mai mare posibil. n cazul n care nu exist
poziii cu aceast proprietate, i0 i j0 vor fi n+1.
2.53. Se dau n i numerele reale i
i
x , y
76, i=1,2,...,n. S se calculeze
E = |x - y | + |x - y | + ... + | x - y |
1
1
2
2
n
n
77
i
i
i
i i
i
i
i
1 2 i
i
i
i i+1 n
i
i
i
c =
x / (
y
*
y
+1), |x -
y
| < E,
{ x ,
y
,
y
,...,
y
}, | x -
y
| = E,
{ x , x ,..., x ,
y
}, | x -
y
| > E,
daca
max daca
min daca

'

78
pentru i=1,2,...,n.
2.54. Se dau n i numerele reale i
i
x , y ,
79 i=1,2,...,n. Dac
1 2 n
1 2 n
x < x <...< x si y < y <...< y
80 s se depun direct toate numerele distincte n irul Z
ordonat cresctor:
1 2 k
z < z < ... < z 81,
deci fr a mai fi necesar ordonarea irului Z.
2.55. Se dau a , n i perechile
( x , y )
i
i
82, i=1,2,...,n de numere reale. S
se determine numrul punctelor (x
i
,y
i
) din plan care se afl n interiorul cercului de raz
a i centru (0,0).
2.56. Se dau a , n i perechile
( x , y ),
i
i
83 i=1,2,...,n de numere reale. S
se determine indicii 1 2 k
i ,i ,...,i 84 pentru care punctele
( x , y )
i
i
85 din plan se afl n
interiorul cercului de raz a i centru (0,0).
2.57. Se dau a , n i perechile
( x , y )
i
i
86, i=1,2,...,n de numere reale. S
se calculeze numrul m al valorilor y
i
mai mari dect a i
i
1 2 i
i
i
1
1
2
2
i
i
z =
( x + x +...+x ) / i, i < m,
{0, x ,
y
}, i = m,
| x -
y
|+|x -
y
|+...+| x -
y
|, i > m.
daca
max daca
daca

'

87
pentru i=1,2,...,n.
2.58. Se dau m,n i cifrele zecimale i
a ,
88 i=1,2,...,m i j
b ,
89 j=1,2,...,n.
Dac numerele ntregi A i B au reprezentrile n baza 10 date de aceste cifre, deci
31
A = ( a a ...a
)
si
B = ( b b ...b
)
1 2 m
10
1 2 n
10
90
s se calculeze cifrele i
c ,
91 i=1,2,...,r, ale reprezentrii numrului ntreg C=A+B.
2.59. Se dau m,n i cifrele zecimale i
a ,
92 i=1,2,...,m i j b ,
93 j=1,2,...,n.
Dac A i B sunt numerele definite n problema 2.58, s se determine indicatorul kod
definit astfel:
kod = -2, dac cel puin o valoare i
a 94 nu este corect,
kod = -1, dac cel puin o valoare i
b 95 nu este corect,
kod = 0 , dac A = B,
kod = 1 , dac A < B,
kod = 2, dac A > B.
2.60. Se dau m,n i cifrele zecimale i
a ,
96 i=1,2,...,m i j
b ,
97 j=1,2,...,n.
Dac numerele reale A i B au reprezentrile n baza 10:
A = ( a a ...a ,a ...a
)
1 2 r r+1 m
10
98
B = ( b b ...b ,b ...b
)
1 2 s s+1 n
10
99
pentru r<m i s<n dai, s se calculeze indicatorul kod egal cu -1 dac datele iniiale
sunt greite, 0 dac A < B, 1 dac A = B, respectiv 2 dac A > B.
2.61. Se d n , n>1. Dac X este irul:
1, 1, 2, 1, 2, 3, 1, 2, 3, 4, ...
obinut din irul numerelor naturale prin nlocuirea fiecrui numr natural k cu secvena
de numere 1, 2, 3, ..., k, s se construiasc vectorul
V =( v ,v ,...v )
1 2 n 100 tiind c cele n
componente ale sale sunt primii n termeni ai irului X.
2.62. Se d n , n>1. Dac X este irul:
3, 5, 5, 7, 11, 13, 17, 19, ...
obinut prin scrierea tuturor numerelor prime p i q, unde p i q sunt gemeni, adic
numere prime cu q-p=2, s se construiasc vectorul
V =( v ,v ,...v )
1 2 n 101 tiind c cele n
componente ale sale sunt primii n termeni ai irului X.
2.63. Se d n , n>1. S se construiasc vectorul
V =( v ,v ,...v )
1 2 n 102 tiind c
cele n componente ale sale sunt primii n termeni ai irului:
3, 4, 5, 5, 12, 13, 6, 8, 10, ...
obinut prin scrierea consecutiv a tuturor tripletelor de numere pitagorice p, q, r,
p<q<r, triplete ordonate dup suma p+q+r. Numerele p, q, r se numesc pitagorice
dac
2 2
2
p + q = r 103.
2.64. Se dau m,n , n>1. S se construiasc vectorul
V =( v ,v ,...v )
1 2 n 104 tiind
c cele n componente ale sale sunt primii n termeni consecutivi ai irului X:
1, 2, 3, 4, 2, 5, 6, 2, 3, 7, 8, 2, ...
obinut prin scrierea numerelor naturale i a divizorilor proprii ai acestor numere,
ncepnd cu m
x 105 (fr a reine termenii i
x 106 n calculator).
2.65. Se dau m,n , n>1. S se construiasc vectorul
V =( v ,v ,...v )
1 2 n 107 tiind
c cele n componente ale vectorului V sunt termeni consecutivi ai irului X:
1,1,2,1,2,3,4,4,4,4,1,2,3,4,5,6,6,...
32
obinut din irul numerelor naturale prin nlocuirea fiecrui numr natural prim p prin
secvena 1,2,...,p i a numrului neprim c prin scrierea lui de c ori, ncepnd cu m
x 108
(fr a reine termenii i
x 109 n calculator).
2.66. Se dau m,n , n>1. S se construiasc vectorul
V =( v ,v ,...v )
1 2 n 110 tiind
c cele n componente ale vectorului V sunt termeni consecutivi ai irului X:
1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 5, 5, 6, 7, ...
obinut din irul numerelor naturale prin nlocuirea fiecrui numr prim p cu un grup de
p numere toate egale cu p, ncepnd cu m
x 111 (fr a reine termenii i
x 112 n
calculator).
2.67. Se dau m,n , n>1. S se construiasc vectorul
V =( v ,v ,...v )
1 2 n 113 tiind
c cele n componente ale vectorului V sunt termeni consecutivi ai irului X:
1, 2, 3, 4, 2, 2, 5, 6, 2, 3, 3, 3, 7, 8, 2, ...
obinut prin scrierea numerelor naturale i a divizorilor proprii ai acestor numere, ultimul
divizor d repetndu-se de d ori, ncepnd cu m
x 114 (fr a reine termenii i
x 115 n
calculator).
2.68. Se dau m,n , n>1. S se construiasc vectorul
V =( v ,v ,...v )
1 2 n 116 tiind
c cele n componente ale vectorului V sunt termeni consecutivi ai irului X:
1, 2, 3, 2, 5, 2, 3, 7, 2, 4, 3, 2, 5, 11, ...
obinut prin scrierea numerelor naturale i nlocuirea fiecrui numr compus prin toi
divizorii si proprii, ncepnd cu m
x 117 (fr a reine termenii i
x 118 n calculator).
2.69. Se dau n i seria
n=1
1
3n - 2

1
3n - 1

1
3n
.

119
S se construiasc vectorul
V =( v ,v ,...,v )
1 2 n 120 tiind c cele n componente ale
vectorului V sunt sume pariale ale acestei serii, 1 20 i 20+5i
v = s , v = s ,
121 i=2,3,...,n, unde
k
s 122 este suma primilor k termeni.
2.70. Se d n i seria
n=1
n-1
2n-1 2n-1
(-1 )
4
2n - 1
1
2
+
1
3

_
,
123
S se construiasc vectorul
V =( v ,v ,...,v )
1 2 n 124 tiind c cele n componente ale
vectorului V sunt sume pariale ale acestei serii, 1 20 i 20+5i
v = s , v = s , 125 i=2,3,...,n, unde
k
s 126 este suma primilor k termeni.
2.71. Se dau n i se cunoate seria
3
3
2
(1+
1
6
+
1* 2
6* 10
+
1* 2* 3
6* 10* 14
+... ) 127
33
S se construiasc vectorul
V =( v ,v ,...,v )
1 2 n 128 tiind c cele n componente ale
vectorului V sunt sume pariale ale acestei serii, 1 20 i 20+5i
v = s , v = s ,
129 i=2,3,...,n, unde
k
s 130 este suma primilor k termeni.
2.72. Se dau n,m i se cunoate seria
2 1+
1
3
+
1* 2
3* 5
+
1* 2* 3
3* 5* 7
+...

_
,
131
S se construiasc vectorul
V =( v ,v ,...,v )
1 2 n 132 tiind c cele n componente ale
vectorului V sunt sume pariale ale acestei serii, 1 20 i 20+mi
v = s , v = s ,
133 i=2,3,...,n, unde
k
s 134 este suma primilor k termeni.
2.73. Se dau n,m i se cunoate seria

i
2 3
u = 1+
1
3

1
9
+
1
5

1
9
+
1
7

1
9
+... 135
S se construiasc vectorul
V =( v ,v ,...,v )
1 2 n 136 tiind c cele n componente ale
vectorului V sunt sume pariale ale acestei serii, 1 20 i 20+mi
v = s , v = s ,
137 i=2,3,...,n, unde
k
s 138 este suma primilor k termeni.
2.74. Se dau n,m,l i se cunoate seria
1+
1
3* 3
+
1* 2
3* 5* 5
+
1* 2* 3
3* 5* 7* 7
+
1* 2* 3* 4
3* 5* 7* 9* 9
+... 139
S se construiasc vectorul
V =( v ,v ,...,v )
1 2 n 140 tiind c cele n componente ale
vectorului V sunt sume pariale ale acestei serii, 1 m i m+l*i
v = s , v = s ,
141 i=2,3,...,n, unde
k
s 142 este suma primilor k termeni.
2.75. Se dau n,m,l i se cunoate seria
1+
1
3* 3
+
1* 2
3* 5* 5
+
1* 2* 3
3* 5* 7* 7
+
1* 2* 3* 4
3* 5* 7* 9* 9
+... 143
S se construiasc vectorul
V =( v ,v ,...,v )
1 2 n 144 tiind c cele n componente ale
vectorului V sunt sume pariale ale acestei serii, 1 l i l+mi
v = s , v = s ,
145 i=2,3,...,n, unde
k
s 146 este suma primilor k termeni.
2.76. Se cunoate seria convergent din problema 2.69. S se determine suma
parial s
n
a primilor n termeni pentru care
|s - s | <
n n-1

147
pentru dat, n fiind cel mai mic numr natural posibil.
2.77. Se cunoate seria convergent din problema 2.70. S se determine suma
parial s
n
a primilor n termeni pentru care
|s - s | <
n n-1

148
pentru dat, n fiind cel mai mic numr natural posibil.
34
2.78. Se cunoate seria convergent din problema 2.71. S se determine suma
parial s
n
a primilor n termeni pentru care
|s - s | <
n n-1

149
pentru dat, n fiind cel mai mic numr natural posibil.
2.79. Se cunoate seria convergent din problema 2.72. S se determine suma
parial s
n
a primilor n termeni pentru care
|s - s | <
n n-1

150
pentru dat, n fiind cel mai mic numr natural posibil.
2.80. Se cunoate seria convergent din problema 2.73. S se determine suma
parial s
n
a primilor n termeni pentru care
|s - s | <
n n-1

151
pentru dat, n fiind cel mai mic numr natural posibil.
2.81. Se cunoate seria convergent din problema 2.74. S se determine suma
parial s
n
a primilor n termeni pentru care
|s - s | <
n n-1

152
pentru dat, n fiind cel mai mic numr natural posibil.
2.82. Se cunoate seria convergent din problema 2.75. S se determine suma
parial s
n
a primilor n termeni pentru care
|s - s | <
n n-1

153
pentru dat, n fiind cel mai mic numr natural posibil.
2.83. S se tipreasc primii n termeni ai irului (x
k
) definit de relaia de recuren
k k-1 k-1
x = ( x + a / x ) / 2,
154 pentru a i x
0
numere reale date, pentru care
| x - x |<0.00001,
n n-1 155 n fiind cel mai mic posibil.
2.84. S se tipreasc primii n termeni ai irului (x
k
) definit de relaia de recuren
k k-1
k-1
m-1
x =
1
m
* (m- 1) x +
a
x
,

_
,
156
pentru m i a, x
0
dai, pentru care
| x - x |<0.00001,
n n-1 157 n fiind cel mai mic
posibil.
2.85. S se tipreasc primii n termeni ai irului (x
k
) pentru care
| x - x |<0.00001,
n n-1 158 n fiind cel mai mic posibil, n cazul irului
n
3 5
n
2n+1
x = x -
x
3
+
x
5
- ...+(-1 ) *
x
2n+1
159
pentru x dat.
2.86. S se tipreasc primii n termeni ai irului (x
k
) pentru care
| x - x |<0.00001,
n n-1 160 n fiind cel mai mic posibil, n cazul irului
35
n
2 n
x = 1+ x +
x
2!
+...+
x
n!
161
2.87. S se tipreasc primii n termeni ai irului (x
k
) pentru care
| x - x |<0.00001,
n n-1 162 n fiind cel mai mic posibil, n cazul irului
n
2 n
x = 1+ x +
x
2!
+...+
x
n!
163
pentru x dat.
2.88. S se tipreasc primii n termeni ai irului (x
k
) pentru care
| x - x |<0.00001,
n n-1 164 n fiind cel mai mic posibil, n cazul irului
n
3
2n+1
2n+1
x = x -
x
3!
+ ... +(-1 ) *
x
(2n+1)!
165
pentru x dat.
2.89. Se d f C
2
[a,b]. tiind c ecuaia f(x) = 0 admite o soluie unic r n
intervalul [a,b] i c f' i f" nu-i schimb semnul pe [a,b], s se aproximeze r folosind
metoda tangentei (a lui Newton), deci folosind faptul c
r = lim x
n
n
unde n+1 n n n
x = x - f( x ) / f ( x ),
166 n=0,1,2,... iar x
0
este ales unul din capetele
intervalului [a,b], notat cu c, i anume cel pentru care f(c)*f"(c)>0.
2.90. Fie f:[a,b] --> o funcie continu. Se tie c ecuaia f(x) = 0 are o singur
rdcin n intervalul [a,b]. S se construiasc irul de intervale
[ x , y ]
i
i
167, i =1,2,...,n,
definit astfel:
1.
[ x , y ] = [a,b]
0
0
168 ;
2.
[ x , y ]
i
i
169 se obine mprind intervalul
[ x , y ]
i-1
i-1
170 n trei pri egale
i lund partea care conine rdcina;
3. n este cel mai mic numr natural pentru care
n
n
y - x 171<eps, pentru eps
numr pozitiv dat.
36
37
CAPITOLUL 3
PROBLEME REZOLVATE CU AJUTORUL
VECTORILOR
3.1. NUMRUL PUNCTELOR DIN CERC
Se dau n puncte n plan i un cerc. Se cere numrul punctelor care se afl n
interiorul cercului.
Rezolvare
Punctele se dau prin coordonatele (x
i
,y
i
), i=1,2,...,n. Variabila nr va conine
numrul punctelor din interiorul cercului, care se d prin centrul O(a,b) i raza r.
Deci specificarea problemei este:
DATE n, { numrul punctelor date }
(x
i
,y
i
, i=1,n), { coordonatele celor n puncte }
a,b, { coordonatele centrului cercului }
r; { raza cercului dat }
REZULTATE nr; { numrul punctelor aflate n interiorul cercului }
Pentru a calcula valoarea lui nr se iniializeaz cu 0 acest numr i se verific care
dintre punctele (x
i
,y
i
) au distana fa de (a,b) mai mic dect r, deci se afl n cerc.
Pentru fiecare rspuns afirmativ valoarea lui nr se mrete cu 1.

Algoritmul pentru rezolvarea problemei este dat n continuare.
Algoritmul PUNCTE_IN_CERC este :
DATE n, { numrul punctelor date }
(x
i
,y
i
, i=1,n), { coordonatele celor n puncte }
a,b, { coordonatele centrului cercului }
r; { raza cercului dat }
Fie nr:=0;
Pentru i:=1,n execut
Dac
2
i
2
i
2
( x - a) +( y - b) <r 172 atunci nr:=nr+1 sf-dac
sf-pentru
REZULTATE nr; { numrul punctelor aflate n interiorul cercului }
sf-algoritm.
Programul PASCAL este dat n continuare.
Program Nr_Puncte_n_cerc; {Programul 3.1 Nr. puncte ntr-un cerc}
var n, { numrul punctelor date }
i, { variabila de lucru - contor }
38
nr : integer; { numrul punctelor aflate in cerc }
a,b, { coordonatele centrului cercului }
r : real; { raza cercului dat }
x, { x[i] = abscisa iar }
y:array [1..50] of real; { y[i] = ordonata punctului "i" }
begin
clrscr;
writeln('Programul numr cte dintre n puncte date');
WRITELN('se afla in interiorul unui cerc dat');
for i:=1 to 3 do writeln;
repeat write('n=');
readln(n)
until (n in [1..50]);
for i:=1 to n do
begin write('x[',i:2,']='); read(x[i]);
write(' y[',i:2,']='); readln(y[i]);
end;
writeln;
writeln('Datele privitoare la cerc:');
write('abscisa='); readln(a);
write('ordonata='); readln(b);
repeat write('raza (>0)=?');
readln(r)
until r>0;
writeln;
{ determinarea nr. de puncte interioare cercului }
nr:=0;
for i:=1 to n do
if (x[i]-a)*(x[i]-a)+(y[i]-b)*(y[i]-b)<r*r
then nr:=nr+1;
{ tiprirea rezultatelor }
writeln('Nr punctelor din interiorul cercului= ',nr);
end.
3.2. INTERCLASARE
Se dau m,n i vectorii X,Y de componente numere ntregi, ordonate
nedescresctor. Formai vectorul Z de dimensiune m+n, avnd drept componente toate
componentele vectorilor X i Y, de asemenea ordonate nedescresctor.
Rezolvare
Specificarea problemei este:
DATE m, { numrul componentelor lui X }
n, { numrul componentelor lui Y }
(x
i
,i=1,m), {componentele vectorului X: x
1
x
2
... x
m
}
39
(y
i
,i=1,n); {componentele vectorului Y: y
1
y
2
... y
n
}
REZULTATE k, { numrul componentelor lui Z: k=m+n }
(z
i
, i=1,k), { componentele vectorului Z. Ele sunt toate }
{ componentele din X i Y. Avem z
1
z
2
... z
k
}
Pentru a forma vectorul Z observm mai nti c z
1
este cel mai mic dintre x
1
i y
1
.
Ct timp mai sunt componente i n X i n Y urmtorul z va fi cel mai mic dintre x
i
i y
j
,
i, respectiv j, fiind poziiile n cei doi vectori pn la care componentele au fost deja
depuse n Z. Evident se va ncepe cu i=1 i j=1, iar k - poziia curent n vectorul Z va fi
iniial tot 1.
Algoritmul pentru rezolvarea problemei este dat n continuare:
Algoritmul INTERCLASARE este : { Z := X interclasat cu Y }
Date m, { numrul componentelor lui X }
n, { numrul componentelor lui Y }
(x
i
,i=1,m), {componentele vectorului X. Avem x
1
x
2
...x
m
}
(y
i
,i=1,n), {componentele vectorului Y. Avem y
1
y
2
...y
n
}
Fie i:=1; j:=1; k:=0;
Cttimp i m i j n execut
Dac x
i
<y
j

atunci k:=k+1; z[k]:=x[i]; i:=i+1
altfel k:=k+1; z[k]:=y[j]; j:=j+1
sf-dac
sf-cttimp
Cttimp (i<=m) execut
k:=k+1; z[k]:=x[i]; i:=i+1
sf-cttimp
Cttimp (j<=n) execut
k:=k+1; z[k]:=y[j]; j:=j+1
sf-cttimp
Rezultate k, { k = numrul componentelor lui Z: k=m+n}
(z
i
, i=1,k), { componentele vectorului Z. Ele sunt toate }
{ componentele din X i Y i z
1
z
2
... z
k
}
sf-algoritm
Programul PASCAL este dat n continuare.
PROGRAM INTERCLASARE; { Programul 3.2. Interclasarea }
{ componentelor vectorilor X si Y }
VAR m, { numrul componentelor lui X }
n, { numrul componentelor lui Y }
i,j, { contori in X, respectiv Y }
k: integer; { numrul valorilor gsite in Z }
X,Y, { Vectori cu numerele date }
Z : array[1..100] of integer; { Vector rezultat-cu }
{ componentele din X si Y interclasate}
BEGIN
40
{ Citesc m, X }
Writeln('Se dau doi vectori X i Y');
Write('Nr.comp. lui X='); readln(m);
For i:=1 to m do
begin write('x(',i,')='); readln(x[i]) end;
{ Citesc n, Y }
Write('Nr.comp. lui Y='); readln(n);
For j:=1 to n do
begin write('y(',j,')='); readln(y[j]) end;
{ Interclasarea }
i:=1; j:=1; k:=0;
While (i<=m) and (j<=n) do
If x[i]<y[j]
then begin k:=k+1; z[k]:=x[i]; i:=i+1 end
else begin k:=k+1; z[k]:=y[j]; j:=j+1 end;
While (i<=m) do
begin
k:=k+1; z[k]:=x[i]; i:=i+1
end;
While (j<=n) do
begin
k:=k+1; z[k]:=y[j]; j:=j+1
end;
Writeln; { Tiprete rezultatele }
Writeln(' Numerele ordonate sunt');
For j:=1 to k do write(z[j]:5);
readln
END.

3.3. PROBLEME PROPUSE
3.1. Se d un polinom P(X) cu coeficieni reali. S se calculeze valoarea
polinomului P(X) ntr-un punct x
0
dat.
3.2. Se d un polinom P(X) cu coeficieni reali. S se verifice dac un numr dat r
este rdcina acestui polinom.
3.3. Se d un polinom P(X) cu coeficieni reali. S se calculeze derivata acestui
polinom.
3.4. Se d un polinom P(X) cu coeficieni reali. S se calculeze derivata de
ordinul k a polinomului dat.
3.5. Se d un polinom de gradul n cu coeficieni ntregi. S se gseasc rdcinile
ntregi ale polinomului dat.
41
3.6. Se d un polinom de gradul n cu coeficieni ntregi. S se gseasc rdcinile
raionale ale acestui polinom.
3.7. Se dau dou polinoame P(X) i Q(X). S se calculeze suma lor.
3.8. Se dau dou polinoame P(X) i Q(X). S se calculeze produsul lor.
3.9. Se dau dou polinoame P(X) i Q(X).S se calculeze T(X)=P(Q(X)).
3.10. Se dau m,n i mulimile
A={ a , a ,..., a }
B={ b , b ,..., b }
1 2 m
1 2 n
173
S se calculeze C = A B.
3.11. Se dau m,n i mulimile
A={ a , a ,..., a }
B={ b , b ,..., b }
1 2 m
1 2 n
174
S se calculeze C = A B.
3.12. Se dau m,n i mulimile
A={ a , a ,..., a }
B={ b , b ,..., b }
1 2 m
1 2 n
175
S se calculeze C = A - B.
3.13. Se dau dou numere scrise n baza b. S se calculeze suma i diferena celor
dou numere.
3.14. Se dau dou numere scrise n baza b. S se calculeze produsul celor dou
numere.
3.15. Se dau dou numere scrise n baza b. S se gseasc ctul i restul mpririi
primului numr la al doilea numr.
3.16. S se transforme un numr din baza p n baza q.
3.17. Se d o mulime M de n puncte n plan. S se gseasc punctul cel mai
deprtat de origine.
3.18. Se d o mulime M de n puncte n plan. S se ordoneze n funcie de
distana lor fa de axa OX.
3.19. Se d o mulime M de n puncte n plan. S se ordoneze n funcie de
42
distana lor la originea axelor de coordonate.
3.20. Se d o mulime M de n puncte n plan. S se gseasc triunghiul de arie
minim care are vrfurile n M.
3.21. Se d o mulime M de n puncte n plan. S se gseasc numrul
triunghiurilor care au vrfurile n mulimea M.
3.22. Se d o mulime M de n puncte n plan. S se determine submulimea
maxim de puncte coliniare.
3.23. Se d o mulime M de n puncte n plan. S se determine submulimea
maxim de puncte cu proprietatea c oricare trei sunt necoliniare.
3.24. Se dau n puncte n plan, un cerc i o elips. S se gseasc punctele care
sunt n interiorul cercului, dar nu se afl n interiorul elipsei.
3.25. Se dau n puncte n plan i un cerc. S se elimine punctele care se afl n
interiorul cercului.
3.26. Se dau n puncte P
1
,P
2
,...,P
n
n plan i un punct M. S se gseasc cte
puncte sunt la o distan de punctul M mai mic dect un numr real r dat.
3.27. Se dau n puncte P
1
,P
2
,...,P
n
n plan i un punct M. S se calculeze
indicatorul Kod definit astfel:
Kod = 0, dac poligonul P
1
P
2
...P
n
nu este convex;
Kod este pozitiv dac poligonul este convex:
Kod = 1, dac M este interior poligonului;
Kod = 2, dac M este pe una din laturile poligonului;
Kod = 3, dac M este exterior poligonului.
3.28. Se dau coordonatele vrfurilor unui poligon convex, n ordinea lor. S se
gseasc diagonala cea mai lung.
3.31. Se dau n puncte n plan i ecuaia unei drepte. S se numere cte puncte se
afl pe dreapt i s se afle punctul de distan maxim fa de dreapt.
3.32. Se dau n cercuri concentrice. S se gseasc inelul de arie maxim delimitat
de dou cercuri consecutive.
3.33. Se dau n puncte pe un cerc. S se ordoneze n ordine trigonometric
invers.
3.34. O funcie f : {1,2,...,m} ---> {1,2,...,n} se poate reprezenta n calculator
printr-un vector F=(F
1
,F
2
,...,F
m
) cu m componente, unde F
i
= f(i). S se verifice dac
funcia f, dat prin vectorul F este injectiv.
43
3.35. Se d o funcie f : {1,2,...,m} ---> {1,2,...,n} reprezentat aa cum se
menioneaz n problema 3.34. S se verifice dac funcia f, dat prin vectorul F este
surjectiv.
3.36. Se dau funciile f:{1,2,...,m} --->{1,2,...,n} i g:{1,2,...,n}---> {1,2,...,p},
reprezentate aa cum se menioneaz n problema 3.34. S se determine compunerea
celor dou funcii date.
3.37. O aplicaie f : {1,2,...,n} ---> {1,2,...,n} bijectiv se numete permutare. Ea
se poate reprezenta n calculator aa cum s-a artat n problema 3.34. Se d o permutare
f. S se determine numrul inversiunilor permutrii f.
3.38. Se d o permutare f aa cum s-a artat n problema 3.37. S se determine
ordinul permutrii date. Prin ordinul permutrii f se nelege cel mai mic ntreg k pentru
care f
k
este aplicaia identic.
3.39. Se d o permutare f aa cum s-a artat n problema 3.37. S se calculeze
inversa permutrii f.
3.40. Se dau dou permutri f i g aa cum s-a artat n problema 3.37. S se
determine compunerea celor dou permutri date.
3.41. La un concurs de patinaj artistic se cunosc cele n note obinute de un
concurent. S se calculeze punctajul lui, tiind c la calculul mediei nu se ia n
considerare nota cea mai mic i cea mai mare obinut (o singur dat n cazul c sunt
dou note egale, deci se face media aritmetic a n-2 note).
3.42. Pentru cei n studeni ai anului nti se cunosc notele m
i
, i=1,n, la primul
examen. Se cere s se determine numrul studenilor cu nota 10, numrul studenilor cu
note de 8 i 9 i s se tipreasc lista studenilor nepromovai.
3.43. Pentru cele 365 de zile ale unui an se cunosc cantitile de precipitaii
zilnice p
i
, i=1,365. Se cere s se determine numrul zilelor fr precipitaii, mediile
lunare i media anual a precipitaiilor i s se listeze zilele cu precipitaii ce depesc
cantitatea a.
3.44. Se dau m,n , intervalele [a
i-1
,a
i
], i = 1,m i numerele reale x
1
,x
2
, ... , x
n
.
Prin frecvena f
i
se nelege numrul valorilor x
j
care se afl n intervalul [a
i-1
,a
i
]. S se
determine frecvenele f
1
,f
2
,... ,f
m
i s se listeze indicii j pentru care x
j
<a
1
sau a
m
< x
j
.
44
CAPITOLUL 4
PROBLEME CU MATRICE
4.1. CONSTRUIREA UNEI MATRICE
Se dau numerele naturale m i n i un ir de numere reale X(i),i=1,2,...,m x n. S
se genereze matricea A, cu m linii i n coloane, definit prin :
a(i, j)=
x
(i j - i +1)
, (4.1)
k=1
i j
k

176
pentru i=1,m i j=1,n.
Pentru rezolvarea problemei, algoritmul pe care-l vom descrie folosete un tablou
unidimensional pentru irul X i un tablou bidimensional pentru matricea A. Deci
specificarea problemei este:
DATE m, {numrul liniilor matricei A}
n, (numrul coloanelor matricei A}
X; {vector ce conine cele m*n numere date}
REZULTATE A {Matrice de dimensiune m*n definit de (4.1)}
Deoarece n expresia ce definete elementele matricei A numitorul este
ntotdeauna nenul (j=1,n este natural i i>0, natural) nu vom avea probleme la generarea
matricei. Pentru a calcula suma elementelor x(k) pentru k de la 1 la i*j vom folosi o
variabil auxiliar sum. Variabilele i,j,k sunt variabile de ciclare.
Algoritmul pentru rezolvarea problemei este dat n continuare:
Algoritmul MATRICE este : {Se calculeaz A conform formulei 4.1}
Date m, n, {m*n este dimensiunea matricei cerute}
X; {X=(X(i),i=1,m*n) este un vector cu m*n componente date}
Pentru i:=1 la m execut
Pentru j:=1 la n execut
sum:=0;
Pentru k:=1 la i*j execut
sum:=sum+X(k)
sf-pentru;
A(i,j):=sum/(i*j-i+1)
sf-pentru
sf-pentru
45
Rezultate A; {Matrice de dimensiune m*n definit de (4.1)}
sf-algoritm
Programul PASCAL corespunztor este urmtorul:
Program matrice; { Programul 4.1. Construirea unei matrice A }
Type sir=array[1..100] of real;
mat=array[1..10,1..10] of real;
Var m,n, {m*n este dimensiunea matricei cerute}
i,j,k:integer; {variabile auxiliare}
X:sir; {X este un vector cu m*n componente date}
A:mat; {Matrice de dimensiune m*n definit de (4.1)}
sum:real; {variabil auxiliar; va conine o suma}
begin
Writeln('Se calculeaz o matrice A de dimensiune m*n');
writeln('dandu-se un vector X cu m*n componente');
write(' Dai numrul liniilor matricei : '); readln(m);
write(' Dati numrul coloanelor matricei: '); readln(n);
writeln(' Dai termenii irului X');
for i:=1 to m*n do
begin write('x(',i,')=?'); readln(x[i]) end;
for i:=1 to m do
for j:=1 to n do
begin sum:=0;
for k:=1 to i*j do sum:=sum+x[k];
a[i,j]:=sum/(i*j-i+1)
end;
writeln; writeln;
Writeln(' Matricea rezultat este:');
writeln;
for i:=1 to m do
begin
for j:=1 to n do write(a[i,j]:8:1);
writeln
end;
readln
end.
4.2. GENERAREA UNEI MATRICE DINTR-UN IR
Se dau m,n,k i numerele ntregi x
1
,x
2
,...,x
k
. Se cere s se construiasc o
matrice A cu m linii i n coloane astfel nct elementele matricei s fie elementele irului
n urmtoarea ordine: (considerm m=3 i n=4)
x
1
x
6
x
7
x
12
x
2
x
5
x
8
x
11
x
3
x
4
x
9
x
10
46
n cazul n care nu exist suficiente elemente n vectorul X, deci matricea nu se poate
construi, se va da un mesaj de eroare.
Specificarea problemei este:
DATE m,n, {dau dimensiunea matricei}
k, {numrul componentelor irului X}
X; {vector de dimensiune k}
REZULTATE A {matrice de dimensiune m*n}
Se observ c elementele irului sunt puse n ordine pe coloane i anume pe o
coloan de sus n jos, iar pe urmtoarea coloan de jos n sus. Pentru a deosebi cele
dou cazuri vom folosi o variabil de control notat kod care ia dou valori posibile 0 i
1. Dac valoarea lui kod este 0 atunci pe acea coloan elementele din ir se pun
ncepnd cu prima linie i pn la linia a m-a, iar dac valoarea lui kod este 1 atunci pe
acea coloan elementele irului se pun ncepnd cu linia a m-a i pn la prima linie.
Variabile folosite:
X - vector ce conine numerele date, de lungime k;
A - matricea cerut;
m,n - dimensiunile matricei;
l - indice n ir;
kod - variabila de control.
Algoritmul corespunztor este dat n continuare.
Algoritmul MATRICE2 este:
DATE m,n, {dau dimensiunea matricei}
k, {numrul componentelor irului X}
X; {vector de dimensiune k}
Dac m*n>k
atunci Tiprete('Prea puine elemente n ir')
altfel Fie j:=1; l:=1; kod:=0;
Repet
Dac kod=0
atunci kod:=1;
Pentru i:=1,m execut a
ij
:=x
l
; l:=l+1 sf-pentru
altfel kod:=0;
Pentru i:=m,1,-1 execut a
ij
:=x
l
; l:=l+1 sf-pentru
sf-dac
pn cnd j>n sf-repet
REZULTATE A {matrice de dimensiune m*n}
sf-dac
Programul Pascal este:
Program matrice2; {Programul 4.2. Matrice dintr-un vector}
Type sir = array[1..100] of integer;
mat = array[1..10,1..10] of integer;
47
Var m, n, {dimensiunile matricei}
i, j, {indici linie-coloana in matricea A}
k, {numr natural dat}
l, {indice n ir}
kod : integer; {variabila de control}
X : sir; {vector ce conine numerele date, de lungime k}
A : mat; {matricea cerut}
Begin
Writeln{'Se constuiete o matrice dintr-un ir de numere');
write('Dai dimensiunile matricei:'); readln(m,n);
write('Dai dimensiunea irului:'); readln(k);
{ Dac elementele irului nu }
if m*n > k { "umplu" matricea se }
then write('Prea puine elemente in ir') { semnaleaz eroare }
else begin
for i := 1 to k do
begin write('x(',i,')='); readln(x[i]) end;
j:=1; l:=1; kod:=0;
repeat
if kod = 0
then begin
for i:=1 to m do { pe coloan de sus in jos }
begin a[i,j]:= x[l]; l:=l+1 end;
kod:=1 {se schimba valoarea lui kod}
end
else begin { pe coloana }
for i:=m downto 1 do { de jos in sus }
begin a[i,j]:=x[l]; l:=l+1 end;
kod := 0 { se schimba valoarea lui kod}
end;
j := j+1
until j>n; {se repeta pana cnd s-a completat coloana n}
for i:= 1 to m do { tiprete linia i a matricei }
begin
for j := 1 to n do write(a[i,j]:5);
writeln
end
end
end.
4.3. PROBLEME PROPUSE
n cele ce urmeaz vom nota prin M
m,n
(D) mulimea matricelor cu m linii i n
coloane avnd toate elementele din domeniul D. n cazul m=n, deci al matricelor
ptrate, vom nota M
n,n
(D) = MP
n
(D). Prin Z vom nota mulimea numerelor ntregi, iar
prin R mulimea numerelor reale. Prin V
n
(D) se noteaz mulimea vectorilor cu n
48
componente, toate elemente din domeniul D.
4.1. Se d o matrice A M
m,n
(R
+
). S se calculeze raportul dintre cel mai mic
element i cel mai mare element al matricei.
4.2. Se d o matrice A M
m,n
(R). S se adauge a (n+1)-a coloan acestei matrice,
definit prin:
A(i,n+1)=
A(i, j)
j=1
n

177 , pentru i=1,m.


4.3. Se d o matrice A M
m,n
(R
+
). S se formeze un vector cu n componente,
astfel nct componenta a i-a s fie egal cu elementul maxim din coloana a i-a a
matricei.
4.4. Se d o matrice A M
m,n
(R). S se determine linia i coloana care conin cel
mai mic element pozitiv.
4.5. Se d o matrice A M
m,n
(R
+
). Dac v
i
este valoarea maxim din linia i s se
calculeze:
w = { v | i =1,m}
i
min
178.
4.6. Se d o matrice A M
m,n
(R). S se tipreasc indicii liniilor care conin
elemente negative. S se formeze apoi matricea B, obinut din matricea A prin
eliminarea acestor linii.
4.7. Se d o matrice A M
m,n
(R
+
). S se schimbe ntre ele liniile matricei A astfel
ca prima coloan s devin ordonat cresctor.
4.8. Se d o matrice A M
m,n
(R
+
) i un interval [, ]. S se rein ntr-un vector X
toate elementele matricei aflate n intervalul [, ].

4.9. Se d o matrice A M
m,n
(R
+
). Pentru fiecare linie s se scad din elementele
sale valoarea minim din acea linie.
4.10. Se d o matrice A M
m,n
(R). S se construiasc vectorul X =
( x , x , ..., x )
1 2 k 179 ce reprezint indicii liniilor care conin valori nule.
4.11. Se d o matrice A M
m,n
(R). S se tipreasc matricea A completat cu o
nou coloan n care elementul din linia a i-a este egal cu cel mai mare numr negativ
din linia a i-a, dac exist elemente negative, respectiv cu 10 cnd nu exist elemente
negative.
4.12. Se d o matrice A M
m,n
(R
+
) i numerele naturale l i k (1<l<n, 1<k<m).
Prin operaii de schimbare a dou linii ntre ele s se obin pe coloana k elementele
ordonate cresctor pn la linia l i apoi descresctor.
49
4.13. Se d o matrice A M
m,n
(R
+
) i numerele naturale l i k (1<k<n, 1<l<m).
Prin operaii de schimbare a dou coloane ntre ele s se obin pe linia k elementele
ordonate descresctor pn la coloana l i apoi cresctor.
4.14. Se d o matrice A M
m,n
(R). S se mpart elementele fiecrei linii la media
aritmetic a elementelor pozitive din linia respectiv. Dac ntr-o linie nu exist
elemente pozitive, linia rmne neschimbat.

4.15. Se d o matrice A M
m,n
(R). S se calculeze media aritmetic a elementelor
matricei aflate deasupra diagonalei principale, precum i media armonic a elementelor
pozitive care se gsesc sub diagonala principal.
4.16. Se d o matrice A M
m,n
(R
+
). S se verifice dac exist dou linii
proporionale n matricea dat.
4.17. Se d o matrice A M
m,n
(R
+
). S se construiasc un vector X de n
componente, astfel nct X(i) s fie numrul elementelor distincte din coloana a i-a,
pentru i=1,2,...,n.
4.18. Se d o matrice A M
m,n
(R
+
). S se schimbe ntre ele liniile matricei astfel
nct irul sumelor 1 2 m
s , s ,..., s 180 s fie ordonat descresctor, unde
i
j=1
n
ij
s = a , i =1,m

181.

4.19. Se d o matrice A M
m,n
(B
2
), unde B
2
={0,1} i se consider c elementele
unei linii sunt cifrele unui numr ntreg scris n binar. S se gseasc numerele ntregi
corespunztoare liniilor matricei.
4.20. Se d o matrice A M
m,n
(R
+
). Poziia
( i , j )
0
0
182 se numete punct a dac:
a)
0 0
i , j a
183 este maxim pe coloana j
0
;
b)
0 0
i , j a
184 este minim pe linia 0
i 185.
S se tipreasc toate punctele a dac exist astfel de puncte sau un mesaj
corespunztor n caz contrar.
4.21. Se d o matrice A M
m,n
(R
+
). S se formeze matricea B cu m linii i n
coloane unde ij ij
2
b = ( a - ) max
186, unde max este cel mai mare element al matricei A.
4.22. Se d o matrice A M
m,n
(R
+
). S se formeze matricea B cu m linii i n
coloane unde
ij
ij
i in 1j mj
b =
a , i < j
( a 1+a +a +a ) / 4, .
daca
altfel

'

187
50
4.23. Se d o matrice A M
m,n
(R
+
). Se dau numerele x i y. S se formeze matricea
B cu m linii i n coloane unde
ij
ij
ij
ij
b =
- 1, a (x, y)
0, a {x, y}
1, a [x, y].
daca
daca
daca

'

188
4.24. Se d A M
m,n
(R). S se formeze matricea B cu m linii i n coloane unde:
ij ik ij
b = | { a | k =1,2,...,n}| - a max
189.
4.25. Se d A M
m,n
(R
+
). S se formeze matricea B cu m linii i n coloane, n care
elementul b
ij
se definete ca suma elementelor matricei A aflate pe linia i, mai puin
elementul aflat pe coloana j.
4.26. Se d A M
m,n
(Z). S se formeze matricele B i C cu m linii i n coloane
unde
ij
ij ij
b
=
a
,
a

0, ,
daca este par
altfel

'

190
ij
ij ij
c
=
a
,
a

0, .
daca este impar
altfel

'

191
4.27. Se d A M
m,n
(R
+
). Se dau numerele reale x, y, z, cu x < y < z. S se formeze
matricea B cu m linii i n coloane, unde
ij
ij
ij
ij
ij
b =
0 , a < x
1 , x a < y
2 , y a < z
3 , a z.
daca
daca
daca
daca

'

192
4.28. Se d A M
m,n
(R
+
). S se determine vectorii B i C definii astfel :
51
i ij
j
i=1
m
ij i
b = { a | j =1,2,...,n } , i =1,2,...,m
c = a b , j =1,2,...,n.
max

193
4.29. Se d A M
m,n
(Z). Fiind dat un numr natural p, s se formeze vectorul X cu
m componente, unde x
i
reprezint numrul elementelor din linia a i-a a matricei A care
sunt divizibile cu p.

4.30. Se d A MP
n
(R). S se determine linia l ce conine cel mai mare element al
diagonalei principale i apoi s se schimbe linia i coloana l cu linia, respectiv coloana
nti.
4.31. Se d A M
m,n
(R
+
). S se formeze un vector de n componente, n care
componenta v
i
a vectorului s fie egal cu raportul dintre suma elementelor din linia i i
suma elementelor din coloana i.

4.32. Se d A MP
n
(R). S se calculeze E=MDP-MDS, unde MDP este maximul
dintre sumele elementelor aflate pe diagonale paralele cu diagonala principal, iar MDS
este minimul dintre sumele elementelor aflate pe diagonalele paralele cu diagonala
secundar.
4.33. Se d A MP
n
(R). S se ordoneze liniile i coloanele matricei astfel nct
elementele de pe diagonala principal s fie ordonate cresctor.
4.34. Se d A MP
n
(R). n fiecare linie s se schimbe ntre ele elementele care se
gsesc pe diagonala principal cu cele care se gsesc pe cea secundar.
4.35. Se d A MP
n
(R). S se determine vectorii X i Y cu n componente, unde:
X(i) = numrul elementelor pozitive din linia i;
Y(i) = numrul elementelor negative din coloana i .
4.36. Se d A MP
n
(R). S se calculeze suma primelor n puteri ale matricei A.

4.37. Se d A MP
n
(R). S se calculeze matricea P = A*A
T
, unde A
T
reprezint
transpusa matricei A.
4.38. Se d X V
n
(R). S se genereze o matrice A MP
n
(R) astfel nct elementele
matricei s reprezinte elementele vectorului X scrise n urmtoarea ordine:
X(1) X(2) ... X(n-1) X(n)
X(4n-4) X(4n-3) ... X(.) X(n+1)
. . ... . .
X(3n-2) X(3n-3) ... X(2n) X(2n-1).

52
4.39. Se d X V
n
(R). S se genereze o matrice ptrat A de ordin maxim posibil,
astfel nct elementele matricei s reprezinte elementele vectorului X scrise n
urmtoarea ordine:
X(1) X(2) X(5) X(10) ...
X(4) X(3) X(6) X(11) ...
X(9) X(8) X(7) X(12) ...
X(16) X(15) X(14) X(13) ...
. . .
4.40. Se d X V
n
(R). S se genereze o matrice A ptrat de ordinul m, cu m
maxim posibil, astfel nct elementele matricei s reprezinte elementele vectorului X
scrise n urmtoarea ordine:
X(1) X(2) X(4) X(7) ...
X(3) X(5) X(8) ...
X(6) X(9) ...
X(10) ...
4.41. Se d X V
n
(R). S se genereze o matrice ptrat A de ordinul m, cu m
maxim posibil, astfel nct elementele matricei s reprezinte elementele vectorului X
scrise n urmtoarea ordine:
X(1) X(2) X(6) X(7) X(15) ...
X(3) X(5) X(8) X(14) ...
X(4) X(9) X(13) ...
X(10) X(12) ...
X(11) ...
4.42. Se dau m i X V
n
(R) pentru n=m
2
. S se construiasc o matrice ptrat
de ordinul m, dac este posibil, astfel:
- deasupra diagonalei principale elementele matricei sunt elementele irului ncepnd
cu x
1
, scrise n ordine pe linii;
- elementele de pe diagonala principal sunt a
i,i
= x
i*i
;
- elementele de sub diagonala principal se calculeaz astfel:
a
i,j
= max{ x
j
, ... , x
i
}.
4.43. Se d X V
2n
(R). S se construiasc o matrice ptratic de ordinul n astfel: se
completeaz diagonala principal de sus n jos cu elemente consecutive din ir ncepnd
cu x
1
; deasupra diagonalei principale se completeaz matricea paralel cu diagonala
principal, de sus n jos, cu elemente succesive din ir, ncepnd cu x
n+1
, iar sub
diagonala principal elementul din linia i i coloana j a matricei este egal cu elementul
x
j+i
al irului.
4.44. Se d X V
2n
(R). S se construiasc o matrice ptratic de ordinul n astfel
nct:
53

a
=
{
x
,...,
x
}, i
{
x
|
x
<0,k =1, j}, i .
i, j
i n
k k

min daca este par
max daca este impar

'

194
4.45. Se dau m, n . S se formeze matricea A M
m,n
(R) din elementele irului
1,1,2,4,3,9,27,1,4,16,5,25,125,...
scrise n ordine pe linii. (Se va observa c irul este obinut din irul numerelor naturale
prin nlocuirea fiecrui numr par p cu o secven format din numerele 1,p,p
2
i a
numrului impar i>1 cu o secven format din numerele i,i
2
,i
3
) .
4.46. Se dau m, n . S se formeze matricea A M
m,n
(R) din elementele irului
1, 2,2, 1,2,3, 4,4,4,4, 1,2,3,4,5, 6,6,6,6,6,6, 1,2, 3,4,5,6,7, 8,8,8,8,8,8,8,8, 1,2,...
scrise n ordine pe coloane. (Se va observa c irul este obinut din irul numerelor
naturale prin nlocuirea fiecrui numr par p cu o secven format din p numere toate
egale cu p i a numrului impar i cu o secven format din numerele 1,2,...,i).
4.47. Se dau m,n i X V
m*n
(R). S se genereze o matrice A M
m,n
(R) definit
astfel:
a =
( x + x +...+x ) / (ij - i +1) , x > 0
{
x
,
x
,...,
x
} ,
x
0
ij
i i+1 ij i
i i+1 ij i
daca
max daca

'

195
pentru i=1,2,...,m i j=1,2,...,n.

4.48. Se dau m,n i X V
m*n
(R). S se genereze o matrice A M
m,n
(R) definit
astfel:
a = x
ij
l=(i-1)n+1
(i-1)n+ j
l
196
pentru i=1,2,...,m i j=1,2,...,n.
4.49. Se dau 2 numere naturale m i n. S se construiasc matricea A M
m,n
(R)
definit astfel :
0 , dac i+j este numr prim
A(i,j) = 1 , dac i+j este numr perfect neprim
2 , n caz contrar,
pentru i=1,2,...,m i j=1,2,...,n.
4.50. Fie B o matrice definit astfel:
0 , dac i+j este numr prim
B(i,j) =
1 , altfel,
pentru i=1,2,...,m i j=1,2,...,n i fie matricea C de aceleai dimensiuni, n care linia i
54
reprezint numrul 2i+1 scris n baza 2. S se determine matricea A = B + C, adunare
modulo 2.
4.51. S se construiasc matricea A definit prin :
cos( i*j) , dac i*j < m*n/2
A(i,j) =
sin( i+j) , n caz contrar,
pentru i=1,2,...,m i j=1,2,...,n.
4.52. Se d a R i fie M(1)=a. S se formeze matricea ptrat A de ordinul n de
forma
M(1) M(12) M(11) M(10)
M(2) M(13) M(16) M( 9)
M(3) M(14) M(15) M( 8)
M(4) M( 5) M( 6) M( 7)
(n cazul n=4) dac
M(k) = I + 10
M(k-1)
2
197
pentru k = 2,3,...,n*n, unde p
I
198 reprezint rsturnatul numrului p (exemplu:
rsturnatul numrului 123 este numrul 321)
4.53. Un labirint n care exist numai drumuri (poteci, alei) orizontale i verticale,
se reprezint cu ajutorul unei matrice, n care un ir de zerouri reprezint un drum, un ir
de 1 un zid. Se d o poziie iniial n interiorul labirintului. S se gseasc cel mai scurt
drum pe care se poate iei din labirint.
4.54. Se d o matrice cu elemente cuvinte de maximum 30 de litere sau spaii. S
se afle frecvena vocalelor n cuvinte:
- pe linii;
- pe coloane;
- n matrice.
4.55. Se dau vectorii A V
m
(R) i B V
n
(R). S se formeze matricea C M
m,n
(R) dac
c(i, j) =
a(k)
b(k)
k=1
i
k= j
n

199
n cazul n care numitorul este nul, c(i,j)=-1.
4.56. Se dau vectorii A V
m
(R) i B V
n
(R). S se formeze matricea C M
m,n
(R) dac
ij
i j
1 m 1 n
c =
a * b
{a ,...,a ,b ,...,b } max
200
n cazul n care numitorul este nul se ia c
ij
= min{a
i
, b
j
}.
4.57. Se dau vectorii A V
m
(R) i B V
n
(R). S se formeze matricea C M
m,n
(R) dac
55
ij i i j j
c = { a , b , a + b }, i =1,2,...,m, j =1,2,..n max
201.
4.58. Se dau vectorii A V
m
(R) i B V
n
(R). S se formeze matricea C M
m,n
(R) dac
ij
k=1
i
k
p=1
j
p
c
=
a b

202
4.59. Se dau dou matrice A,B M
m,n
(R). S se determine matricea C M
m,n
(R)
unde
ij ij ij c = { a ,b } , i =1,m j =1,n max
203.
4.60. Se dau dou matrice A,B MP
n
(R). S se determine matricea C MP
n
(R)
definit prin:
ij ik kj
c = { a + b | k =1,2,...,n}. min
204
4.61. Se dau dou matrice A,B M
m,n
(R). S se determine matricea C M
m,n
(B
2
) unde
ij
ij ij
ij ij
c =
0 , a b
1 ,
a
=
b
.
daca
daca

'

205
4.62. Se dau dou matrice A,B M
m,n
(R). S se gseasc mulimea indicilor i
pentru care:
j=1
n
ij
j=1
n
ij
a
<
b
.

206
4.63. Se cere s se genereze matricea A, ptratic de ordinul n, definit astfel:
C(j,i), dac i<j
A(i,j) =
C(i,j), n caz contrar.
Prin C(n,k) s-a notat "combinri de n luate cte k". S se verifice dac matricea este
simetric.
4.64. Se dau n obiecte i o matrice D = d(i,j) simetric, d(i,j) > 0 reprezentnd
distana de la obiectul i la obiectul j (msur a gradului de disimilaritate dintre obiectele
i i j). S se determine toate mulimile nevide de perechi de obiecte pentru care k-1 <
d(i,j) k ( k , 0 k max{d(i,j) i,j=1,...,n}).
4.65. S se tipreasc toate matricele ptrate de ordinul 4 care au un singur 1 pe
fiecare linie i pe fiecare coloan iar n rest 0.
56
4.66. Fie A,B,C MP
n
(R) trei matrice diagonale, iar D MP
2n
(R) o matrice cu
structura:
D =
A B
B C

_
,

207
X i P fiind 2 vectori coloan de dimensiune 2n cu componente reale, s se ntocmeasc
un algoritm i s se scrie un program pentru rezolvarea sistemului D X = P.
4.68. Se dau numerele ntregi 1 2 n
n
x , x ,..., x [0,2 ) . 208 S se tipreasc matricea
ptrat de ordinul n care are proprietatea c linia a i-a a acestei matrice reprezint
numrul x
i
n baza doi.

4.69. Se d A M
m,n
(B
2
). S se determine numerele a cror reprezentri n baza 2
sunt date de coloanele matricei.
4.70. Se d X V
n
(R). S se formeze matricea A MP
n
(R) cu elementele:
ij
k l
k
2
l
i i+1 j
a
=
{
x
|k j si k i} , j i
x
>0, l = j, j +1,...,i
{
x
| j k i}, j i
x
0, l = j, j +1,...,i
(
x
+
x
+...+
x
) / (j - i +1), j >i .
max daca si
min daca si
daca

'

209
57
CAPITOLUL 5
SUBALGORITMI
5.1. REUNIUNEA UNOR MULIMI
Se consider, trei mulimi A, B, C. Se cere un program care afieaz:
- elementele mulimii A n ordine cresctoare;
- elementele mulimii B n ordine cresctoare;
- elementele mulimii C n ordine cresctoare;
- elementele mulimii A B n ordine cresctoare;
- elementele mulimii B C n ordine cresctoare;
- elementele mulimii C A n ordine cresctoare.
Rezolvare.
Pentru realizarea programului este necesar construirea a patru proceduri
specificate n continuare:
- o procedur pentru citirea unei mulimi: CIT(n,A);
REZULTATE n,A {primesc valori prin citire}
- o procedur pentru ordonarea unui ir: ORDON(r,X);
DATE {de intrare}
r, {numrul componentelor vectorului X}
X; {vector cu n componente}
REZULTATE X {la ieirea din subalgoritm vom avea: }
{ x
1
< x
2
< ... < x
n
}
- o procedur pentru calculul reuniunii a dou mulimi:
REUN(n,m,A,B,nm,AUB);
DATE {de intrare}
n, {numrul elementelor mulimii A}
m, {numrul elementelor mulimii B}
A, {mulimea {a
1
, a
2
, ... , a
n
} }
B; {mulimea {b
1
, b
2
, ... , bm } }
REZULTATE nm, {numrul elementelor reuniunii }
AUB {AUB = A B }
- o procedur pentru tiprirea unei mulimi: TIPAR(n,A,ch);
DATE {de intrare}
n, {numrul elementelor mulimii A}
A, {mulimea {a
1
, a
2
, ... , a
n
} }
ch; {caracter considerat numele mulimii}
REZULTATE afiarea elementelor mulimii
58
- o procedur pentru ordonarea i apoi tiprirea unui ir: TIPORDON(r,X,ch);
DATE {de intrare}
r, {numrul componentelor vectorului X}
X, { vector cu n componente arbitrare }
ch; {caracter considerat numele mulimii}
REZULTATE *ordonarea componentelor vectorului X i
* afiarea elementelor ordonate cresctor
- o procedur pentru calculul reuniunii a dou mulimi, cu ordonarea i tiprirea
rezultatului: TIPREUN(n,m,A,B,nm,AUB).
aceeai semnificaie ca la procedura REUN, dar, n plus, se tiprete AUB.
Algoritmul pentru rezolvarea problemei, descris n limbajul PSEUDOCOD, este
urmtorul:
Algoritmul Exemplu1 este:
Cheam CIT(n,A); { A e vectorul care conine n componentele }
{ sale cele n elemente ale mulimii A}
Cheam CIT(m,B); { Citete mulimea B}
Cheam CIT(p,C); { Citete mulimea C}
Cheam TIPORDON(n,A);
Cheam TIPORDON(m,B);
Cheam TIPORDON(p,C);
Cheam TIPREUN(n,A,m,B,n1,AB); { Tiprete pe AB := A U B}
Cheam TIPREUN(m,B,p,C,m1,BC);
Cheam TIPREUN(p,C,n,A,p1,CA);
Sf-algoritm.
Subalgoritmii apelai mai sus sunt descrii n continuare:
Subalgoritmul ORDON(r,X) este: {Ordoneaz componentele lui X}
Repet {examineaz toate componentele}
Fie sch:= 0; {ipoteza c sunt ordonate}
Pentru i:= 1, r-1 execut
Dac i i+1
x > x 210 atunci Fie xx:= i
x ;
211
Fie i i+1
x := x ; 212
Fie i+1
x := xx;
213
Fie sch:=1; {reine c n-au fost ordonate}
sf-dac
sf-pentru
pncnd sch=0 sf-repet
sf-ORDON
Subalgoritmul REUN(n,A,m,B,n1,AUB) este: {AUB := A B}
Pentru i:=1, n execut i i
AUB := A ; 214 sf-pentru
Fie n1:=n;
59
Pentru j=1, m execut
Fie i:=1;
Cttimp
( B A ) si (i n)
j i

215 execut i:=i+1 sf-cttimp
Dac i>n atunci Fie n1:=n1+1; 216 sf-dac
sf-pentru
sf-REUN
Subalgoritmul TIPORDON(r,X,ch); {Ordoneaz i apoi tiprete}
{ cele n componente ale vectorului X}
{ch=numele mulimii reprezentat n vectorul X}
Cheam ORDON(p,X);
Cheam TIPAR(r,X,ch);
sf-REUN
Subalgoritmul TIPREUN(n,A,m,B,n1,AUB,ch) este: { AUB:= A B}
{Ordoneaz i tiprete pe AUB}
Cheam REUN(m,B,p,C,m1,BC);
Cheam TIPORDON(r,X,ch);
sf-TIPREUN
Traducerea algoritmului n limbajul PASCAL este urmtoarea:

Program exemplu1; { Programul 5.1 }
{operaii cu mulimi reprezentate ca vectori}
Type
sir = array [1..30] of real;
s3 = string[3];
Var n, m, p, n1, m1, p1 : integer;
a, b, c, {a,b,c conin elementele a trei mulimi de numere }
ab, bc, ca : sir;
Procedure cit(var n: integer; var a: sir; ch: s3); {Citete n si }
{ mulimea a cu n elemente}
{ch=numele mulimii citite}
var i: integer;
begin
write('nr. elementelor mulimii ', ch, ' este:');
readln(n);
for i := 1 to n do
begin write(ch, '[', i, ']='); readln(a[i]) end;
end;
Procedure tipar(n: integer; a: sir; {Tiprete mulimea a cu}
ch: s3); {numele ch avnd n elemente}
var i: integer;
begin
60
writeln('elementele mulimii ', ch, ' sunt:');
for i := 1 to n do writeln(ch, '[', i, ']=', a[i]);
end;
Procedure ordon(r: integer; {Ordoneaz cresctor elementele}
var x: sir); {vectorului X cu r componente}
var xx: real;
i, sch: integer;
begin
repeat sch := 0;
for i := 1 to r-1 do
if x[i] > x[i+1] then
begin
xx := x[i];
x[i] := x[i + 1];
x[i + 1] := xx;
sch := 1
end;
until sch = 0;
end;
Procedure tipordon(r: integer; var x: sir; nume:string);
var xx: real;
i, sch: integer;
begin
ordon(r, x);
tipar(r, x, nume);
end;
Procedure reun(n, m: integer; A,B: sir; {Calculeaza A B}
var n1:integer; var AUB:sir);
var i, j: integer;
begin n1 := n ;
for i := 1 to n do AUB[i] := A[i];
for j := 1 to m do
begin
i := 1;
while (B[j]<>A[i]) and (i<=n) do i := i+1;
if i > n then
begin n1 := n1+1; AUB[n1] := B[j]; end;
end;
end;
Procedure tipreun(n, m: integer; A,B: sir; {Calculeaz reuniunea,}
var n1: integer; {ordoneaz elementele i}
var AUB:sir; nume:string); {tiprete rezultatul}
61
var xx: real;
i, sch: integer;
begin
reun(n, m, A, B, n1, AUB, nume);
ordon(n1, AUB);
tipar(n1, AUB, nume);
end;
Begin {programul principal}
cit(n, a, 'A');
cit(m, b, 'B');
cit(p, c, 'C');
tipordon(n, a,'A');
tipordon(m, b,'B');
tipordon(p, c,'C');
tipreun(n, m, a, b, n1, ab,'AUB');
tipreun(m, p, b, c, m1, bc,'BUC');
tipreun(p, n, c, a, p1, ca,'AUC');
end.
5.2. NUMERE PRIME
S se scrie un program care determin primele n numere prime (n>3), folosind o
funcie care stabilete dac un numr este prim sau nu.
Specificarea problemei:
DATE n; {n N, n>3}
REZULTATE (p
j
,j=1,n);{p
1
,p
2
,...,p
n
sunt primele n numere prime}
Pentru rezolvarea problemei vom utiliza o funcie de tip boolean "PRIM(n)" care
ntoarce "true" dac numrul natural n este prim i "false" n caz contrar. Algoritmul
funciei are la baz ideea de a cuta divizori ai lui n ntre primele n/2 numere naturale.
Algoritmul poate fi util n multe probleme, motiv pentru care l vom descrie ca
subalgoritm ce poate fi apelat oricnd este nevoie de el. Vectorul P va reine cele n
numere prime. n variabila i vom avea urmtorul candidat, numr natural care uneori
este prim. Primele dou numere prime fiind 2 i 3, la nceput vom iniializa pe i cu 5.
Prin k s-a notat numrul numerelor prime gsite. Subalgoritmul NRPRIME este
urmtorul:
Subalgoritmul NRPRIME(n,P) este: {Se caut n numere prime}
Fie i:=5; p
1
:=2; p
2
:=3; k:=2;
Repet
Dac prim(i) atunci
Fie k:=k+1; p
k
:=i;
62
sf-dac;
Fie i:=i+2;
pn cnd k=n sf-repet
sf-NRPRIME
Funcia PRIM(n) este:
prim:=true;
Pentru i:=2, n/2 execut
Dac n mod i = 0 atunci prim:=false sf-dac
sf-pentru
Sf-PRIM
Programul PASCAL cerut este urmtorul:
Program exemplu2; {Programul 5.2. Gsete primele n numere prime }
Type vector = array[1..999] of integer;
Var n, { numrul numerelor gsite }
i : integer; { variabila contor in P }
P : vector; { Vectorul numerelor prime }
function prim(n: integer): boolean; {Dac n e prim atunci TRUE}
var i: integer;
begin
prim := true;
for i := 2 to n div 2 do
if n mod i = 0 then prim := false;
end;
Procedure NRPRIME(n:integer; { In vectorul P se obin }
Var P:vector); { primele n numere prime }
Var k:integer;
begin
i := 5; k := 2;
P[1]:=2; p[2]:=3;
repeat
if prim(i) then begin k:= k+1; P[k]:=i end;
i:= i+2;
until k > n;
end;
begin {programul principal}
write('cate numere prime va intereseaz?');
readln(n);
NRPRIME(n,P);
writeln('primele ', k, ' numere prime sunt urmtoarele:');
For i:=1 to n do
63
begin
write(P[i]:4);
If i mod 5 = 0 then writeln
end
end.
5.3. PROBLEME PROPUSE
5.1. S se calculeze valoarea ntr-un punct a unui polinom i a tuturor derivatelor
sale, folosind pentru aceasta
- o procedur de derivare a unui polinom;
- o funcie care ntoarce ca rezultat valoarea polinomului ntr-un punct x dat.
5.2. Se dau polinoamele P, Q, R :
P = p
m
X
m
+ ... + p
1
X + p
0
,
Q = q
n
X
n
+ ... + q
1
X + q
0
,
R = r
k
X
k
+ ... + r
1
X + r
0
.
S se tipreasc produsele
P Q, Q R, R P
217 n ordinea indicat.
5.3. Folosind un subalgoritm pentru efectuarea produsului
P = Q R
218 a dou
polinoame Q i R, tiprii polinoamele (x + 1)
n
pentru n = 1,2,...,12.
5.4. Se cere programul care, folosind cel mult trei iruri, determin rezultatul:
a) reuniunii a n mulimi;
b) interseciei a n mulimi.
5.5. Se cere programul pentru calculul:
a) produsului a n matrice ptratice;
b) puterii a n-a a unei matrici ptratice.
5.6. Se cere programul de calcul al produsului a n polinoame.
5.7. Se cere un program care calculeaz, cu ajutorul unui subalgoritm, media
aritmetic a elementelor maxime corespunztoare fiecrei linii a unei matrici, iar apoi
afieaz aceast valoare pentru trei matrice distincte A, B, C.
5.8. Fie f
1
, f
2
, ..., f
n
n polinoame. Se cere un program care calculeaz valoarea
sumei celor n polinoame ntr-un punct dat folosind:
- o procedur de calcul a sumei a dou polinoame;
- o funcie de calcul a valorii unui polinom ntr-un punct folosind schema lui Horner.
5.9. Fie f i g dou polinoame. Se cere s se calculeze valoarea funciilor f g i g f
ntr-un punct dat, folosind o funcie de calcul a valorii unui polinom ntr-un punct.
5.10. Folosind dezvoltarea n serie:
64
arcsin x = x +
1
2
x
3
+
1 3
2 4
x
5
+
1 3 5
2 4 6
x
7
+ ...
3 5 7





219
s se defineasc o funcie PASCAL care calculeaz arcsin x cu precizia = 10 .
-6
220
S se tipreasc apoi valorile:
i
v =
1
i
, i = 2,3,...,m arcsin 221.
5.11. Fie irul x
1
,x
2
,...,x
n
. Se cere un program care determin i tiprete cea mai
lung secven din irul dat care are o anumit proprietate P folosind:
- o funcie care descrie proprietatea P i ntoarce lungimea secvenei care are
proprietatea P i ncepe cu k
x 222
- o procedur care determin secvena cerut.
(De exemplu, proprietatea P poate cere ca doi termeni vecini s aib semne diferite).
5.12. Folosind un subalgoritm care rezolv ecuaia f(x) = 0 (care are o soluie
unic n intervalul [a,b]) prin metoda njumtirii, tiprii tabelul de mai jos:
i i
3
22
3
i
5
224
2 ... ...
3 ... ...
.
.
.
.
.
.
.
.
.
10 ... ...
Observaie. Radicalul r = m
n
225 se calculeaz prin rezolvarea ecuaiei
n
t = m226.
5.13. Se dau m,n,p N i trei iruri X: x
1
,x
2
,...,x
n
; Y: y
1
,y
2
,...,y
m
; Z: z
1
,z
2
,...,z
p
de
numere ntregi. Pentru fiecare ir se cere s se calculeze i s se afieze frecvenele de
apariie ale cifrelor 0,1, ..., 9 n scrierea numerelor din irurile date.
5.14. Fie o grup de studeni care au susinut 5 examene ntr-o sesiune. S se
65
scrie programul care afieaz:
- primii 6 studeni n ordinea mediei generale obinute;
- studenii care nu au promovat cel puin trei examene.
5.15. S se scrie un program care genereaz un ir aleator de m numere ntregi i
care stabilete frecvena de apariie n acest ir a:
- numerelor prime;
- numerelor divizibile cu 13.
Observaie. Pentru generarea unui numr aleator se vor folosi funcia i respectiv
procedura predefinit RANDOM i RANDOMIZE.
5.16. Fie n N i x
1
, x
2
,..., x
n
un ir de numere naturale date. S se scrie un program
care gsete:
a) media aritmetic a acestor numere;
b) maximul din irul y
1
,y
2
,...,y
n
unde y
i
se obine n felul urmtor:
1
1
i
i i-1 i i-1
y = x , y = ( x div x ) * ( x + x ) , i =1,2,...,n.
227.
c) S se scrie o funcie boolean care stabilete dac cele dou iruri au i alte
elemente comune n afara primului.
5.15. Dou numere prime p, q se numesc gemeni dac p = q + 2. S se determine
primele n perechi de gemeni.
5.18. Trei numere ntregi a, b, c, a < b < c se numesc pitagorice dac
2 2 2
c = a + b 228, iar dou triplete
( a ,b ,c )
1 1 1 229 i
( a ,b ,c )
2 2 2 230 sunt considerate a fi
asemenea dac
1
2
1
2
1
2
a
a
=
b
b
=
c
c
231.
Se d n N i mulimea de numere ntregi X = {x
i
i=1,2,...,n}. Se cere s se afieze
mulimea tripletelor pitagorice din mulimea dat i clasele determinate de relaia de
asemnare pe aceast mulime.

5.19. Fie 1 2 n
A , A , ..., A 232 n mulimi de numere. S se scrie programul care
determin mulimea:
A = (...( A A ) A ) ... A ) A
1 2 3 n-1 n

233,
folosind pentru aceasta o procedur de calcul a mulimii:
A B = (A - B) (B - A)
234.
Observaie. Pentru rezolvarea problemei se vor utiliza cel mult trei iruri.
5.20. Fie I o mulime de subintervale ale intervalului [a,b].
a) S se formeze o diviziune X a intervalului [a,b]
a = x < x < x < ... < x = b
0 1 2 n 235
care are ca puncte capetele subintervalelor din I;
b) S se calculeze valorile i i
v = f( x )
236, unde
f( x )
i 237 este numrul de
subintervale din I n care se afl i
x 238.
5.21.tiind c irul X:
66
4,2,6,2,3,8,2,4,9,3,10,...
este obinut din irul numerelor naturale prin eliminarea numerelor prime i scrierea
dup fiecare numr compus a divizorilor si proprii, s se genereze urmtoarea matricea
de ordinul n:
A =
x x . . . . . .
x x x . . . . .
. x x x . . . .
. . . . . . . .
. . . . . x x x
. . . . . . x x
1 n+1
2n 2 n+2
2n+1 3 n+3
3n-3 n-1 2n-1
3n-2 n

_
,

239.
S se tipreasc n final A, A , ..., A .
2 n
240
5.22. Se dau n N i numerele 1 2 n
x , x , ..., x 241. Se cere programul care
genereaz matricea de dimensiune mxk 242 care are pe liniile sale n ordine elemente
din irul: 1 2 n 1 2 n
x , x , ..., x , x , x , ..., x , ... . 243
5.23. tiind c irul
{ x }
n 244:
1,2,3,2,5,2,3,7,2,4,3,2,5,11,...
este format din irul numerelor naturale n care fiecare numr compus este nlocuit prin
divizorii si proprii, s se genereze matricea:
A =
x x . . . x
x x . . . x
. . . . . .
x x . . . x
1 2 m
m+1 m+2 2m
(m-1) m+1 (m-1) m+2 m
2

_
,

245.
5.24. S se scrie un program care rezolv ecuaia matriceal:
A X + B = C 246,
unde A,B,C 247 3x3
M 248 i X este vectorul necunoscut.
5.25. S se scrie un program pentru rezolvarea unui sistem liniar de patru ecuaii
cu patru necunoscute folosind metoda lui Kramer. Programul va stabili mai nti dac
sistemul este compatibil i unic determinat.
5.26. Se dau n N i vectorii X, Y cu n componente numere reale. S se calculeze
valorile:
i i
i i
i i
i
i
v = f( x ) =
g( x ), x < 0,
l( x ), x = 0,
h(
y
), x > 0,
daca
daca
daca

'

249
67
pentru i=1,2,...,n, unde:
{ }
{ }
g( x ) = x , x , ... , x ,
h( y ) = y , ... , y ,
i 1 2 i
i i n
max
min
250
pentru i=1,2,...,n, iar
l( x )
i 251 este media aritmetic a numerelor pozitive din irul { n
x
} cu valoare mai mic dect
| y |
i
253.
5.27. Se dau m,n N i o matrice mxn
A ( n 10)
254 ale crei elemente sunt cifre de
la 0 la 9 i n care fiecare linie a matricei reprezint un numr n baza zece. S se scrie
un program care face o permutare a liniilor matricei astfel nct n final cele m numere
reprezentate pe liniile matricei s fie n ordine cresctoare.
5.28. S se scrie un program care calculeaz sumele:
a) 3C - 7 C + 11C - ... + (-1 ) (4n - 1)C ;
n
1
n
2
n
3
n-1
n
n
255
b)
( C )
0!
+
( C
)
1!
+ ... +
( C
)
n!
n
0
3
n
1
3
n
n
3
256.
5.29. S se scrie un program pentru calculul sumei:
S =
1
a a ... a
+
1
a a ... a
+ ... +
1
a ... a
,
1 2 k 2 3 k+1 n-k+1 n

257
unde { } a
n 258 e o progresie aritmetic pentru care raia i primul termen se cer
utilizatorului.
5.30. Dac numerele 1 2 n+1
a , a , ..., a 259 sunt primii n+1 termenii ai unei
progresii geometrice, s se calculeze, printr-un program, sumele:
a) n
2
p
1
p
3
p
2
p
n-1
p
n
p
S =
1
a - a
+
1
a - a
+ ... +
1
a - a
260
b)
n
1
2 1
2
3 2
n
n+1 n
S =
a
a - a
+
a
a - a
+ ... +
a
a - a
261.
Observaie. Raia i primul termen al progresiei vor fi furnizate programului de ctre
utilizator.
5.31. Se dau n N i numerele reale 1 2 n
a < a < ... < a 262. S se scrie programul
care tiprete permutarea

n
S 263 pentru care suma
68

n
i=1
n
i (i)
2
S = ( a - a
)

264
este maxim, respectiv minim.
5.32. Fie f(X) = a X +a X +...+a X +a I ,
0
n
1
n-1
n-1 n m
265 unde i a _ , i =0,n, 266 iar
X,I
m
mxm
M 267 i fie matricele A,B

mxm
M 268. S se scrie un program care calculeaz
f(A) + f(B) i f(A+B).
5.33. Se dau R i n N. S se scrie un program care calculeaz suma:
k=1
n
2 2
k k
k k

_
,

cos sin
cos sin


269
5.34. Dac 1 2
x , x 270 sunt rdcinile reale ale ecuaiei de gradul doi (cu
coeficieni reali):
1
2
2 3
a x + a x + a = 0 271, s se scrie programul care calculeaz suma:
S =
x x x
x x x
.
k=1
n
1
k
2
2k
1
3k
2
3k
1
2k
2
k

_
,

272
n cazul n care ecuaia de gradul doi nu are rdcini reale se va da un mesaj de eroare
corespunztor.
5.35. Se dau m,n N. S se scrie programul care genereaz i tiprete matricea A
cu m linii i n coloane definit prin:
ij
2
2
a =
P(i + j), i + j < (m, n)
R( i ,
j
), (m, n) i + j (m, n)
Q(i + j), (m, n) < i + j
daca min
daca min max
daca max

'

273
unde P(k) este numrul prim cel mai apropiat de k, Q(k) este numrul ptratelor perfecte
mai mici dect k, iar R(a,b) este cmmdc(a,b).
5.36. S se scrie un program care determin primele m numere naturale n
cu proprietatea
cmmdc ( n, 2 - 1 ) > 1
n
275.
5.37. S se scrie un program care determin cel mai mic numr natural n
69
care are exact m divizori primi proprii.
5.38. Fie n
*
276 S se scrie un program care calculeaz suma:
S =
m
d
(d)
d|m


277
unde nsumarea se face dup divizorii naturali d ai lui m (inclusiv 1 i m), iar

278 este
indicatorul lui Euler,
(n) =
279 numrul numerelor naturale mai mici dect n i prime
cu n,
n
*
280 (cu convenia
(1) = 1
281 ).
5.39. Fie m = k C
k=0
n
2n
k

282 unde n N, n 1. S se scrie un program care


calculeaz valoarea pe un punct x dat a funciei:
f(x) =
1
m
(k - x ) c .
k=0
n
2
2n
2k

283
5.40. Fie
( p , p , p ) ( p < p < p )
1 2 3 1 2 3
284 un triplet format din numere prime
aflate la aceai distan unul fa de altul, adic
3 2 2 1
p - p = p - p = d > 0,
285. S se
determine primele n triplete pentru care d este multiplu de 2 ( n 10 286).
5.41. Se dau m,n N i o matrice A M
m,n
(N) care are ca elemente numere naturale.
S se scrie un program care genereaz vectorul V ce conine drept componente toate
elementele matricei care sunt prime ntre ele dou cte dou.
5.42. S se scrie un program care determin primele n numere prime pentru care
suma cifrelor este un numr divizibil cu 11.
5.43. Se d o matrice A avnd ca elemente caractere alfabetice. S se scrie
programul care stabilete dac un cuvnt dat apare pe vreuna din liniile sau coloanele
matricei, iar n caz afirmativ tiprete poziiile din matrice unde ncepe i respectiv se
termin cuvntul cutat.
5.44. Se dau n N i funcia
f(n) =
C ( k + 1), n par

1
k!
, n impar
k=0
n
n
k 2
k=1
n

'

287
70
a) Se cere programul care genereaz primele m elemente ale irului x
i
= f(g(i)),
i=1,2,...,n, unde g(n) reprezint suma cifrelor numrului n din scrierea sa n baza zece.
b) S se afieze frecvena de apariie a fiecrei valori din irul x
i
.
71
CAPITOLUL 6
PROBLEME REZOLVATE CU MATRICE
6.1. RELAII NTRE PERSOANE
Se dau n persoane i matricea A MP
n
(B
2
) unde
ij
a =
1, daca persoanele i si j se cunosc
0, i n caz contrar

'

288
S se gseasc persoanele care nu au nici o cunotin.
Rezolvare.
Specificarea problemei este:
DATE n, A; { n = numrul persoanelor }
{ A = matrice ptrat de ordinul n }
REZULTATE k,P; {k = numrul persoanelor care nu au nici o}
{cunotin. P = un vector cu k componente}
{P reine cele k persoane fr cunotine }

Pentru rezolvarea problemei, n matricea dat se caut liniile care au numai
zerouri. n aceast cutare este nevoie de dou variabile auxiliare i i j, indici n matricea
A. Algoritmul pentru rezolvarea acestei probleme este dat n continuare.
Algoritmul PERSOANE este:
Date n, A; {n = numrul persoanelor }
{A = matrice ptrat de ordinul n }
Fie k:=0;
Pentru i := 1,n execut
Fie j:=1;
Cttimp (j n) i (a
ij
=0) execut j:=j+1 sf-cttimp
Dac j>n atunci k:=k+1; p
k
:=i sf-dac
sf-pentru
Rezultate k,P;
sf-algoritm.
La scrierea programului Pascal este necesar s verificm corectitudinea datelor,
respectiv faptul c dac persoanele i i j se cunosc vom avea a
ij
=1, dar atunci i a
ji
=1,
deci matricea A trebuie s fie simetric. Aici s-a optat pentru o alt soluie: nu se citete
matricea A ci perechile de persoane care se cunosc, matricea A fiind construit n
program.
72
Program CUNOSTINTE; {Programul 6.1.}
{ Relaia de cunotine intre persoane}
Var n, { n = numrul persoanelor }
k, {k = nr. pers. care nu au nici o cunotina}
i,j : byte;
P : array[1..20] of byte; { P = vector cu k componente ce}
{reine cele k persoane fr cunotine}
a : array[1..20,1..20] of byte; { A = matrice de ordinul n }
BEGIN
writeln ('Programul gsete persoanele care intr-un grup de n');
writeln ('persoane nu au nici o cunotina.'); writeln;
{ CITIRE NR. PERSOANE }
repeat
write ('Dai numrul persoanelor:'); readln (n)
until n in [1..20];
{ INITIALIZARE MATRICE }
for i := 1 to n do
for j := 1 to n do a[i,j] := 0;
writeln ('Dai perechile de persoane care se cunosc intre ele.');
writeln ('Persoanele se codifica prin numerele 1,2,...,n.');
writeln ('Introducei cate doua numere pe o linie (separate', 'prin spaiu)');
writeln ('Pentru terminarea introducerii tastai: 0 0 ');
{ CITIREA DATELOR, CU ELIMINAREA CELOR ERONATE }
write ('* '); readln (i,j);
while (i>0) and (j>0) do
begin
if (i<=n) and (j<=n) then
begin a[i,j] :=1; a[j,i] :=1 end {if};
write ('* '); readln (i,j);
end{while};
{ CAUTARE PERSOANE CARE NU AU CUNOSTINTE }
k:=0;
for i := 1 to n do
begin
j := 1;
while (j<=n) and (a[i,j]=0) do j := j+1;
if j > n then begin k:=k+1; P[k]:=i end{if};
end{for};
{ TIPARIREA REZULTATELOR }
writeln; write ('Persoanele care nu au cunotine: ');
if k>0 then for i:=1 to k do write(p[i]:5)
else writeln (' nu exista ');
END.
73
6.2. PATRATE MAGICE
S se realizeze un ptrat magic de ordin impar.
Rezolvare.
Prin ptrat magic se nelege o matrice ptrat de ordin n cu elementele {1, 2, ...,
n
2
} aezate astfel nct suma elementelor de pe fiecare linie, coloan sau diagonal este
aceeai. Cu aceast precizare specificaia problemei este urmtoarea:
DATE n; { n N, n>1, reprezint ordinul matricei }
REZULTATE A; {A=matrice de ordinul n, care reprezint }
{ptratul magic; deci suma elementelor pe }
{ fiecare linie, coloan sau diagonal este aceeai }
n general algoritmul de construire a unui ptrat magic este complicat. Dac n =
2k+1 atunci exist mai muli algoritmi care obin ptratul magic. Vom folosi urmtoarea
metod:
- se ncepe cu a
1k
:= 1.
- Dac a
ij
= k atunci a
i- 1,j+1
:= k+1, dac locul este liber, altfel a
i+1,j
:= k+1.
- irul indicilor se consider circular, adic dup n urmeaz 1, naintea lui 1 este n.
Excepie de la regul: dac a
1n
= k atunci a
2n
:= k+1.
Exemplu:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
Pentru trecerea la noua poziie se recomand s se foloseasc formulele:
m1:= (i+n-2) modulo n + 1
m2:= j modulo n + 1.
Algoritmul P_MAGIC este: { Se calculeaz un ptrat magic }
{ Acesta este o matrice ptrat de ordinul n }
{ care are suma elementelor pe fiecare linie, }
{coloan sau diagonal aceeai }
DATE n; { n N, n>1, reprezint ordinul matricei }
Pentru i:=1,n execut { iniializare matrice }
Pentru j:=1,n execut Fie a[i,j] := 0 sf-pentru
sf-pentru
Fie i:=1; j:=n div 2 +1; { fixare locul de pornire}
a[i,j]:=1;
Pentru k := 2,n*n execut
74
m1 := (i+n-2) mod n + 1; { calculul poziiei urmtoare}
m2 := j mod n + 1;
Dac a[m1,m2] 0 atunci
Dac (m1=n) i (m2=1)
atunci m1 := 2; m2 := n
altfel m1 := i+1; m2 := j
sf-dac
Fie a[m1,m2]:=k; { atribuire noua valoare }
Fie i:=m1; j:= m2; { i noua poziie }
sf-dac
sf-pentru
REZULTATE A;
sf-algoritm
Programul Pascal echivalent este urmtorul:
Program magic; { Programul 6.1.}
{ Se calculeaz un ptrat magic. }
{ Acesta este o matrice ptrata de ordinul n }
{ care are suma elementelor pe fiecare }
{ linie, coloan sau diagonal aceeai }
Uses Crt;
Var n, { n N, n>1, reprezint ordinul matricei }
m1, m2, { variabile curente pentru noua poziie }
i, j, { dau poziia curenta in ptrat }
k : integer; { valoarea ce se scrie in ptrat }
a : array[1..19,1..19] of integer; { Ptratul magic }
Begin
Writeln('Se construiete un ptrat magic cu n linii');
Repeat write ('n=');
readln (n) { Citete n }
until (n in [1..19]) and Odd(n);
for i := 1 to n do
for j := 1 to n do a[i,j] := 0; { iniializare matrice }
i:= 1; j:= n div 2 + 1; { fixare locul de pornire}
a[i,j]:=1;
for k := 2 to n*n do
begin
m1 := (i+n-2) mod n + 1; { calculul poziiei urmtoare }
m2 := j mod n + 1;
if a[m1,m2] <> 0 then
if (m1=n) and (m2=1)
then begin m1 := 2; m2 := n end
else begin m1:=i+1; m2 := j end;
75
a[m1,m2] := k; { atribuire noua valoare }
i := m1; j := m2;
end;
{ Tiprirea rezultatului }
ClrScr;
for i := 1 to n do { tiprete linia i }
begin
writeln;
for j := 1 to n do write (a[i,j]:4);
end;
writeln;
writeln ('Suma magica = ', n*(n*n+1) div 2);
readln;
END.
6.3. PROBLEME PROPUSE

6.1. Se dau n localiti. ntr-o matrice A sunt marcate drumurile directe ntre
localiti astfel:
ij
a = 1,
289 dac exist drum direct ntre localitile i i j;
ij a = 0,
290 dac nu exist drum ntre i i j,
pentru i,j=1,2,...,n.
6.1.1. S se determine dac din localitatea x se poate ajunge n localitatea y.
6.1.2. S se determine localitile n care se poate ajunge din localitatea x.
6.1.3. S se determine toate drumurile de la k la l pentru k i l date.
6.2. Se dau n persoane i matricea A cu elementele
ij
a = 1,
291 dac persoanele i i j se cunosc;
ij a = 0,
292 n caz contrar,
pentru i,j=1,2,...,n.
6.2.1. S se determine persoanele care le cunosc pe toate celelalte.
6.2.2. S se determine dac cele n persoane pot fi mprite n dou (sau mai
multe) grupe astfel nct nici o persoan dintr-o grup s nu cunoasc pe nimeni din
celelalte grupe.
6.2.3. S se determine persoana care are cele mai multe cunotine.
6.2.4. Dac n 6, s se verifice dac exist trei persoane care se cunosc ntre ele,
sau trei care nu se cunosc ntre ele.
76
6.3. Se dau n relaii de rudenie prin matricea A=(a
ij
), i=1,2, ...n, j=1,2, unde i2
a
este copilul lui i1
a 294 pentru fiecare i=1,2,..., n.
6.3.1. S se gseasc: copiii lui k, prinii lui k, strmoii lui k, pentru k dat.
6.3.2. S se gseasc: persoanele care nu au frai, persoanele care au numai frai
vitregi.
6.3.3. S se gseasc verii primari i secundari ai unei persoane date.
6.3.4. S se gseasc toate familiile (grupele formate din persoanele care sunt
rude ntre ele).
6.4. Se dau n localiti i matricea A cu elementele a
ij
, i,j=1,...,n, unde a
ij
este
egal cu costul construirii drumului dintre localitile i i j, dac se poate construi un
drum, respectiv 0 dac nu se poate construi un drum. S se gseasc o reea de drumuri
care leag toate localitile i este de cost minim.
6.5. Se dau n N, M = {a
1
,a
2
,...,a
n
} i * : M x M --> M o operaie peste mulimea
M. Aceast operaie poate fi identificat cu o operaie definit pe M' = {1,2,...,n} i
reprezentat printr-o matrice O cu elementul o
ij
= k dac i numai dac a
i
*a
j
= a
k
(deci
i*'j=k). Deci operaia *, definit peste o mulime arbitrar M, poate fi studiat prin
intermediul operaiei *' definit pe mulimea M' i reprezentat n calculator prin
matricea O.
6.5.1. S se verifice dac:
a) operaia * este comutativ;
b) exist element neutru (stnga i dreapta).
6.5.2. S se rezolve ecuaiile: a*X = b i X*a = b.
6.5.3. Dndu-se o submulime de indici H = {i
1
, i
2
, ..., i
m
} M' i o operaie dat
prin matricea O, s se verifice dac H este parte stabil n raport cu operaia .
6.5.4. S se verifice dac operaia dat este asociativ.
6.5.5. S se verifice dac operaia admite element neutru la dreapta i n caz
afirmativ s se precizeze acest element.
6.5.6. S se verifice dac operaia admite un element neutru la stnga i n caz
afirmativ s se precizeze acest element.
6.5.7. S se verifice dac operaia admite un element neutru.
6.5.8. Se tie c operaia are ca element neutru pe k. Pentru un jM, s se verifice
dac acest element are element simetric la dreapta fa de operaia dat.
77
6.5.9. Fie k elementul neutru al operaiei. Pentru un j M, s se verifice dac acest
element are element simetric la stnga fa de operaia dat.
6.5.10. Fie k elementul neutru al operaiei. S se determine un vector s, ale crui
componente sunt s
1
,s
2
,...,s
n
, unde s
i
este 0 dac i nu are element simetric i este j dac j
este simetricul lui i.
6.5.11. S se verifice dac structura algebric (M ,*) este un grup.
6.6. Se d o relaie R printr-o matrice cu elementele
ij a = 1,
295 dac i este n relaie cu j (deci iRj),
ij a = 0,
296 dac i nu este n relaie cu j (deci iRj ),
pentru i,j=1,2,...,n.
6.6.1. S se verifice dac relaia R este reflexiv.
6.6.2. S se verifice dac relaia R este simetric.
6.6.3. S se verifice dac relaia R este antisimetric.
6.6.4. S se verifice dac relaia R este tranzitiv.
6.6.5. S se determine relaia R' complementar, definit astfel: aR'b dac i
numai dac aRb nu are loc.
6.6.6. S se determine relaia invers R
- 1
.
6.6.7. S se determine relaia complementar R
c
definit astfel:
aR
c
b prin definiie dac aRb .

6.6.8. Dac se dau dou relaii R
1
i R
2
, s se determine compunerea celor dou
relaii: T = R
1
o R
2
nseamn c (aTc dac i numai dac exist b astfel ca aR
1
b i
bR
2
c).
6.7. Se dau mulimile A i B:
A = {a , a ,..., a }
B = { b , b ,..., b }
1 2 m
1 2 n
297.
O relaie R ntre A i B poate fi reprezentat printr-o matrice cu elementele:
ij
i j
r =
1 , a R b
0 , .
daca
altfel

'

298
6.7.1. Fiind date dou relaii R
1
i R
2
peste aceleai mulimi, s se verifice dac
relaia R
1
este inclus n R
2
sau nu.
78
6.7.2. S se verifice dac R
1
= R
2
.
6.7.3. S se construiasc matricea relaiei R
1
R
2
(reuniune).
6.7.4. S se construiasc matricea relaiei R
1
R
2
(intersecie).
6.7.5. Fie R o relaie omogen peste M. S se construiasc relaia R
k
, unde R
k
=
R
k- 1
R (adic R
k- 1
compus cu R).
6.7.6. Fie R o relaie omogen peste M. S se determine matricea relaiei R
+
de
nchidere tranzitiv a lui R (R
+
= R R
2
... R
n
)
6.8. Se dau dou operaii o
1
i o
2
peste mulimea M={1,2,...,n}, reprezentate ca n
problema 6.5.
6.8.1. S se verifice dac operaia o
1
este distributiv la dreapta fa de operaia
o
2
.
6.8.2. S se verifice dac operaia o
1
este distributiv la stnga fa de operaia
o
2
.
6.8.3. S se verifice dac structura algebric (M,o
1
,o
2
) este inel.
6.8.4. Dac (M,o
1
,o
2
) este inel, o
1
operaia aditiv, o
2
operaia multiplicativ, i
1

elementul neutru al operaiei aditive, iar i
2
elementul neutru al operaiei multiplicative, s
se verifice existena divizorilor lui zero n inel.
6.8.5. S se verifice dac structura algebric (M,o
1
,o
2
) este corp.
6.9. Se dau dou structuri algebrice finite cu cte o operaie, (M
1
,o
1
) i (M
2
,o
2
),
reprezentate ca n problema 6.5, cu M
1
= M
2
= {1,2,...,n}. Se d i aplicaia f : M
1
-->
M
2
, reprezentat printr-un vector F cu n componente astfel: F
i
= j dac i numai dac
f(i)=j.
a) S se verifice dac f este un morfism.
b) S se verifice dac f este izomorfism.
6.10. Fie A, B, C trei mulimi finite i relaiile R
1
peste AxB i R
2
peste BxC,
reprezentate prin matricele lor, ca n problema 6.7. S se construiasc relaia compus T
= R
1
R
2
.
6.11. Se dau n localiti. ntr-o matrice A=(a
ij
), i,j=1,2,..., n, sunt marcate
lungimile drumurilor directe dintre localiti:
ij
a = d,
299 dac exist drum direct ntre i i j i d este distan ntre i i j;
ij a = 0,
300 dac nu exist drum direct ntre i i j.
6.11.1. S se determine drumul de lungime minim ntre dou localiti date.
79
6.11.2. S se determine matricea D=(d
ij
) a drumurilor, unde d
ij
= distana minim
ntre localitile i i j, pentru i,j=1,2,...,n.
6.11.3. Dac d(i,j) este distana minim ntre i i j, atunci notm prin
(i) = max { d(i, j)| j = 1,2, ..., n }
301 i localitatea i se numete cea mai central dac
(i) = min { (j)| j =1,2,..., n }
302
S se determine localitatea cea mai central.

6.12. Se dau n intersecii de strzi ntr-un ora. ntr-o matrice A=(a
ij
), i,j=1,2,...,n,
sunt marcate sensurile de circulaie pe strzile oraului:
ij
a = 1,
303
dac se poate circula dinspre i spre j,
ij
a = 0,
304
n caz contrar.
6.12.1. S se determine dac exist n ora strzi care formeaz un circuit.
6.12.2. Dac n fiecare intersecie numrul sensurilor care intr n intersecie
coincide cu numrul sensurilor care ies din ea, s se determine un circuit care parcurge
fiecare sens o singur dat, indiferent din ce intersecie se pornete.
6.13. Se dau rezultatele la meciurile de fotbal a celor n echipe pe primele m
etape. Se cere clasamentul.

6.14. Un pluton de soldai formeaz o coloan de defilare care are m rnduri, cu
n soldai pe un rnd. De pe fiecare rnd este ales cel mai scund soldat, iar dintre cei alei
cel mai nalt primete primul steag. Al doilea steag este repartizat similar - se aleg din
fiecare rnd soldaii cei mai nali, iar dintre cei alei cel mai scund primete al doilea
steag. n cazul n care exist mai muli soldai cu aceeai nlime, se alege primul dintre
ei. S se afieze nlimile purttorilor de steag. Valorile m, n i nlimile soldailor se
dau.
6.15. La un concurs de frumusee pentru cini sunt n participani i m criterii de
selecie, iar rezultatele se reprezint ntr-o matrice X de dimensiune m x n. Pentru fiecare
criteriu "i" se cunosc:
MAX(i) = punctajul maxim ce se poate obine la criteriul "i" i
MIN(i) = limita inferioar a punctajului pentru criteriul "i".
6.15.1. S se dea numrul cinilor care nu ndeplinesc condiiile de participare.
6.15.2. S se decid dac exist cine ctigtor la fiecare criteriu.
6.15.3. S se decid dac exist criterii la care exist mai muli ctigtori.
6.15.4. Dndu-se un criteriu s se decid dac exist cine perfect dup acest
criteriu.
80
6.15.5. S se decid dac exist cine care nu ndeplinete condiiile de
participare la nici un criteriu.
6.15.6. S se afieze lista ctigtorilor la fiecare criteriu.
6.15.7. S se dea lista ctigtorilor la mai multe criterii.
6.15.8. S se decid dac exist cine care are suma punctajului maxim, dar la
fiecare criteriu exist un cine mai bun dect el.
6.15.9. S se decid dac exist cini ctigtori la un criteriu dar exist criterii la
care nu sunt admii.
6.15.10. S se decid dac exist doi cini A i B astfel nct A s fie mai bun
dect B la fiecare criteriu.
6.15.11. S se dea lista criteriilor la care exist cini perfeci.
6.16. Se d o matrice A cu 12 linii i n coloane, astfel nct A(i,j) reprezint
cantitatea de precipitaii czut n judeul j, n luna a i-a. S se elaboreze un program
care s rezolve urmtoarele cerine :
a) s se stabileasc cantitatea minim i maxim de precipitaii pe fiecare lun ;
b) se cunosc vectorii PMAX i PMIN ce reprezint valoarea maxim i minim a
cantitilor de precipitaii nregistrate pe o perioad de 100 de ani. S se precizeze luna
i judeul n care s-a nregistrat o depire a uneia din cele dou valori ;
c) s se calculeze media de precipitaii pe ar pentru fiecare lun ;
d) s se calculeze media de precipitaii anual pentru fiecare jude i media de
precipitaii anual pe ar. S se precizeze judeul care e cel mai aproape de medie i
judeul pentru care abaterea de la medie e cea mai mare.
6.17. La o olimpiad particip n ri. Rezultatele se obin ntr-o matrice de
dimensiune n x 3. Prima coloan reprezint numrul medaliilor de aur obinute de
fiecare ar, a doua coloan numrul medaliilor de argint, iar a treia coloan numrul
medaliilor de bronz. Se mai d un vector W de dimensiune 3, unde W(1) reprezint
punctajul acordat pentru o medalie de aur, W(2) pentru o medalie de argint, iar W(3)
pentru o medalie de bronz. S se adauge la matrice o nou coloan care s conin
punctajul total realizat de fiecare ar participant. Se cere s se afle ara care a realizat
punctajul maxim, ara care a obinut cel mai mare numr de medalii de aur i ara care a
primit "lingura de lemn" (cel mai mic punctaj). S se decid dac exist ar care nu a
obinut nici o medalie.
La sfritul olimpiadei s-a depistat un sportiv la controlul antidopping i i se
retrage acestuia medalia de aur. tiind c provine din ara "i" i c medalia nu se acord
altcuiva s se afieze clasamentul rilor participante.

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