Beruflich Dokumente
Kultur Dokumente
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
Capitolul 8.
PROBLEME REZOLVATE FOLOSIND TIPUL MULIME SAU ENUMERARE
8.1. Divizori comuni .............................................................................................................................. 89
8.2. Ciurul lui Eratostene ....................................................................................................................... 92
8.3. Statistica culorilor citite .................................................................................................................. 94
8.4. Probleme propuse ........................................................................................................................... 95
Capitolul 9.
PROBLEME CU IRURI DE CARACTERE
9.1. Poziia unui subir ntr-un ir ........................................................................................................ 99
9.2. Afiarea cuvintelor care ncep cu majuscul................................................................................. 100
9.3. Probleme propuse ......................................................................................................................... 102
Capitolul 10.
PROCEDURI RECURSIVE
10.1. Generarea permutrilor .............................................................................................................. 107
10.2. Calculul combinrilor de m elemente luate cte k ..................................................................... 108
10.3. Subprograme mutual recursive .................................................................................................. 109
10.4. Probleme propuse ....................................................................................................................... 110
Capitolul 11.
PROBLEME CU FIIERE
11.1. Construirea, actualizarea i listarea unui fiier ........................................................................... 113
11.2. Probleme propuse ....................................................................................................................... 119
Capitolul 12.
PROBLEME CU LISTE
12.1. Liste nlnuite ............................................................................................................................ 131
12.2. List de articole .......................................................................................................................... 132
Capitolul 14.
PROBLEME DE CONCURS
14.1. Plimbare pe ecran ....................................................................................................................... 153
14.2. Probleme propuse ....................................................................................................................... 156
Capitolul 15.
TIPURI ABSTRACTE DE DATE
15.1. Noiuni fundamentale ................................................................................................................. 163
15.2. TAD enumerare n Pascal .......................................................................................................... 165
15.3. TAD stiv n Pascal .................................................................................................................... 169
15.4. Probleme propuse ....................................................................................................................... 175
Capitolul 16.
PROBLEME CU GRAFE
16.1. Noiuni fundamentale i notaii folosite ..................................................................................... 191
16.2. Tipul abstract de date GRAF ..................................................................................................... 194
16.3. Preluarea reprezentrii geometrice de ctre calculator .............................................................. 208
16.4. Probleme propuse pentru programare ........................................................................................ 219
16.5. Probleme cu caracter teoretic ..................................................................................................... 222
PREFA
10
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 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
11
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 r2=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;
REZULTATE r;
12
{Iniializeaz pe a i b}
{rdcina n stnga}
{rdcina n dreapta}
13
a,b,
m : REAL;
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
ELSE BEGIN a:=1; b:=x END;
REPEAT
m:=(a+b)/2;
IF (a*a-x)*(m*m-x)<0
THEN b:=m
ELSE a:=m;
UNTIL b-a<eps;
r:=(a+b)/2;
WRITELN; WRITELN;
WRITELN('Radical(',x:6:1,') = ',r:6:3);
READLN
END.
{Iniializeaz pe a si b}
{rdcina n stnga}
{rdcina in dreapta}
14
{n
-dac
Sf-pentru
Sf-pentru
Sf-pentru
Sf-dac
Sf-algoritm.
Programul Pascal corespunztor este dat n continuare.
PROGRAM NRPITAGORICE;
VAR n,
S,
a,b,c,
k : integer;
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.2. S se tipreasc toate tripletele (i,j,k) de numere naturale care verific condiiile
i2 + j2 = k2
15
t 0 = t1 = 1 3.
1.7. Fie
elemente luate cte k.
1.8. Fie
. S se scrie un algoritm pentru calculul mediei aritmetice, geometrice i
armonice a tuturor divizorilor lui a.
1.9. Fie funcia lui Euler
mai mici ca n. S se tipreasc valorile
1.10. Fie
, unde
este numrul numerelor relativ prime cu n i
=1,2,...,m, pentru
dat.
S = Akn + Ckn + Pn 4.
1.11. S se determine toate numerele ntregi de trei cifre
3
abc 5 cu proprietatea
abc = a + b + c 6.
1.12. Se dau numerele
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 n ,l n ,a n ) 7 data naterii unei persoane i
curent. S se determine vrsta, n zile, a persoanei respective.
( z c ,l c ,ac ) 8 o dat
1.15. Se dau datele de natere ( z1 ,l1 ,a1 ) si ( z 2 ,l 2 ,a2 ) 9 a dou persoane. Se cere s se
precizeze care din cele dou persoane este mai tnr, prin indicatorul r
vrst, 1 dac prima persoan este mai tnr).
16
n numere din
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.
, se cere un algoritm care s stabileasc cea mai mare
1,
3-x,
f (x) 2
x +2,
10,
x, dac
pentru x 1
pentru -1<x 0
pentru 0<x 0
pentru x>1
y x2
11
2
y 2 x - 16
1.24. Se d
S se calculeze
n
C n(1+ 2 +...+ k ) 12
k=1
x2 + dx + p = 0 13
17
unde d = (a,b) este cel mai mare divizor comun al numerelor a i b, iar p este probabilitatea ca un
numr
ce verific condiia
, luat la ntmplare, s fie prim.
1.26. Se cere un algoritm pentru determinarea numerelor impare succesive a cror sum este
egal cu n3, pentru n=1,...,20. (Ex.
1.27. S se scrie un algoritm care citete succesiv p perechi de numere ntregi (m,n
n i care calculeaz, pentru fiecare pereche coeficientul binomial bn,m definit de relaia recursiv
bn,m
daca m = 0 sau m = n,
1,
15
=
bn-1,m-1 + bn-1,m , in caz contrar .
18
ax + by + c = 0
17
dx + ey + f = 0
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(a1,a2), B(b1,b2),
respectiv C(c1,c2), D(d1,d2). 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
ax 2 + bx , daca a x (a + b) / 2
18
f(x) = ax 2 + bx
, daca (a + b) / 2 < x b
x+2
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
dedus, s se calculeze n M 19.
Indicaie. Se va lua f(x) = xn - 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.
19
S se scrie un algoritm pentru calculul probabilitii ca numrul nscris pe bila extras s fie prim.
1.41. Un mobil efectueaz o micare oscilatorie armonic. tiind c pentru elongaiile x1=2
cm i x2=3 cm, mobilul are vitezele v1=5m/s i respectiv v2=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=
x12 v 22 - x 22 v12
x12 - x 22
20
; T = 2PI 2
v 22 - v12
v 2 - v12
20
21
CAPITOLUL 2
{ xi
{ X=Y, unde X este }
{ mulimea ce conine toate numerele xi, i=1,n, }
{ iar Y =mulimea ce conine pe yj, j=1,k i yl j
{ Versiunea 1 }
{ Versiunea 2 }
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
23
{ Versiunea final }
{ xi
{Verific dac xi aparine lui Y}
ind:=1;
DAC xi=yind ATUNCI ind:=0
ALTFEL ind:=ind+1
SF-DAC
SF{Dac nu aparine atunci adaug pe xi la Y}
DAC ind>0 ATUNCI k:=k+1;
yk:=xi
SF-DAC
SF-PENTRU
REZULTATE (yj, j=1,k);
SF-ALGORITM
Programul Pascal corespunztor este:
PROGRAM DISTINCTE;
VAR n,
i,j,
k,
ind : integer;
X,
Y : array[1..100] of integer;
BEGIN
Writeln('Se da vectorul X cu n componente reale');
Writeln('Se pun in Y toate valorile ce apar in X');
24
{ Verifica daca }
{ x[i] aparine lui Y }
25
{ varianta1 }
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 :
DATE n;
Fie i:=1; t:=1; Tiprete t;
k:=2; ind:=1;
Ct timp i<n execut
t:=k;
26
{ varianta final }
Dac ind=1
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;
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 " Y i 22:=t".
Transcriind n Pascal se obine urmtorul program:
Program SIR;
Var n,
i,
j,
k,
d,
t,
ind : integer;
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;
27
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;
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.
d 1 , d 2 ,..., d m 23 ai
2.2. S se genereze toate numerele prime mai mici dect numrul natural n dat.
2.3. Se dau m,n
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 n1=n2=1 i nk+1=nk+nk-1 pentru k=2,3,... .
28
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
+. S se determine numrul n al cifrelor i cele n cifre din scrierea
numrului ntreg mk = (c1c2c3...cn)10.
2.7. Se dau numrul natural n > 1 i
i indicele componentei maxime din X.
2.8. Se dau numrul natural n > 1 i numerele x1, x2, ..., xn. S se gseasc toate poziiile
distincte
2.12. Se dau numrul natural n > 1 i numerele x1, x2, ..., xn. S se gseasc toate numerele
y1 , y2 ,..., y m 25 din irul X precum i frecvenele acestor numere ntre numerele date.
2.13. Se dau numrul natural n > 1 i numerele x1, x2, ..., xn. S se calculeze
yj=x1*x1+x2*x2+...+xj*xj, pentru j=1,2,...,n i M = max{xj*yj j=1,n }.
2.14. Se dau numrul natural n > 1 i numerele x1, x2, ..., xn. 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 x1, x2, ..., xn. S se calculeze
29
pentru i=1,2,...,n.
2.16. Se dau numrul natural n > 1 i numerele x1, x2, ..., xn. S se formeze vectorul
Y=(y1,y2,...,yn), unde yi ia valoarea 1 dac xi, xi+1, xi+2 pot fi lungimile laturilor unui triunghi i 0 n caz
contrar, pentru i=1,2,...,n. Numerele xn+1, xn+2 se iau egale cu xn.
2.17. Se dau numrul natural n > 1 i numerele x1, x2, ..., xn. S se determine
30
2.25. Se dau numrul natural n > 1 i numerele x1, x2,..., xn. S se calculeze primele k
momente m1, m2,..., mk. Prin momentul de ordinul j, notat mj, se nelege media aritmetic a puterilor
de exponent j ale numerelor date.
2.26. Se dau numrul natural n > 1 i numerele x1, x2,..., xn. Dac m1 i m2 sunt primele dou
momente (vezi problema 2.25) s se calculeze s, unde s2=m2-m1*m1 i fj, j=1,9, dac fk este numrul
elementelor mulimii { xi | m1 - k* s < xi < m1 + k* s} 29.
2.27. Se dau numrul natural n > 1 i numerele x1, x2,..., xn. Secvena xi, xi+1,..., xi+p se
numete scar (de lungime p) dac xi<xi+1<...<xi+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 x1, x2,..., xn. S se gseasc permutarea o1,
o2,..., on a indicilor 1,2,...,n astfel nct xo1 xo2 ... xon . 30
2.29. Se dau
, n
x1, x2,..., xn. S se determine cardinalul
(numrul elementelor) mulimii { i | xi a } 31 i indicatorul r definit astfel:
r = i, dac exist i pentru care a=xi, (cel mai mic i)
r = 0, n caz contrar.
2.30. Se dau
,
i numerele reale x1, x2,..., xn. S se determine indicele i (cel mai
mic, dac exist mai muli) pentru care valoarea xi este cea mai apropiat de a.
2.31. Se dau
i numerele reale x1, x2,..., xn. 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.
i numerele reale x1, x2,..., xn. S se determine vectorul Z cu
2.32. Se dau
componentele
2.34. Se dau
i numerele reale
date cresctor dup distana lor fa de numrul real a.
2.33. Se dau
toate elementele mai mici dect a.
2.35. Se dau
31
x1 , x2 ,..., x n 35. S se determine media aritmetic a componentelor lui X aflate n intervalul [a,b]
(i, x i ) 36 pentru care x i 37 a,b].
i s se listeze perechile
2.36. Se dau
x1 , x2 ,..., x n 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.39. Se dau
i numerele reale
i numerele reale
x i , y i 43, i=1,2,...,n.
S se rein n
2.40. Se dau
max{ x i + y i },
zi =
max{ x i + y i },
daca x i 0,
46
daca x i 0,
pentru i=1,2,...,n.
2.42. Se dau
i numerele reale
i numerele reale
32
2.43. Se dau n
i numerele reale
x i , daca x i < y i ,
ci = 0 , daca x i = y i , 55
y , daca
xi > yi ,
i
pentru i=1,2,...,n.
2.44. Se dau n
i numerele reale
0,
daca x i = y i ,
57
zi =
max{| y |,...,| y | }, daca
xi > yi ,
i
n
pentru i=1,2,...,n.
i numerele reale
2.47.
s1 = ( y1 + y 2 + ... + y n ),
62
s2 = ( y1 * x1 + y 2 * x 2 +...+ y n * x n ) / s1,
s3 = ( y1 * x1 * x1 + y 2 * x 2 * x 2 +...+ y n * x n * x n ) / s1,
i m = cardinalul mulimii
2.47. Se dau
componentele
33
pentru i=1,2,...,n.
2.48. Se dau
i numerele reale
max{ x1 , x 2 ,..., x i },
daca x i < y i ,
min{ y , y ,..., y },
daca x i > y i ,
i
i+1
n
pentru i=1,2,...,n.
i numerele reale
2.49. Se dau n
( x1 + x 2 +...+ x i ) / i,
daca x i y i < 0,
min{ ,
x i x i+1 ,..., x n , y i }, daca x i y i > 0,
pentru i=1,2,...,n.
2.50. Se dau n
i numerele reale
i1 , i2 , ... , ik 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
2.53. Se dau n
i
34
x i / ( y i * y i + 1),
daca | x i - y i | < E,
min{ ,
x i x i+1 ,..., x n , y i }, daca | x i - y i | > E,
pentru i=1,2,...,n.
2.54.
Se
dau
numerele
reale
xi , y i , 79 i=1,2,...,n. Dac
x1 < x2 <...< x n si y1 < y2 <...< y n 80 s se depun direct toate numerele distincte n irul Z
ordonat cresctor:
, n
i perechile
( x1 + x 2 +...+ x i ) / i,
daca i < m,
max{0, x i , y i },
daca i = m, 87
zi =
| - y |+| - y |+...+| - y |, daca i > m.
xi i
x1 1 x 2 2
pentru i=1,2,...,n.
2.58. Se dau
i cifrele zecimale
A = ( a1 a 2 ...a m )10
si
90
B = ( b1 b2 ...bn )10
s se calculeze cifrele
35
2.59. Se dau
i cifrele zecimale
sunt numerele definite n problema 2.58, s se determine indicatorul kod definit astfel:
kod = -2, dac cel puin o valoare a i 94 nu este corect,
kod =
kod =
kod =
kod =
-1,
0,
1,
2,
2.60. Se dau
bi 95 nu este corect,
i cifrele zecimale
p2 + q2 = r 2 103.
2.64. Se dau
n>1. S se construiasc vectorul V = ( v1 , v2 ,... v 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
x m 105 (fr a reine termenii x i 106 n calculator).
2.65. Se dau
n>1. S se construiasc vectorul V = ( v1 , v2 ,... v n ) 107 tiind c
cele n componente ale vectorului V sunt termeni consecutivi ai irului X:
36
1,1,2,1,2,3,4,4,4,4,1,2,3,4,5,6,6,...
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 x m 108 (fr a reine termenii
x i 109 n calculator).
2.66. Se dau
n>1. S se construiasc vectorul V = ( v1 , v2 ,... v 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 x m 111 (fr a reine termenii x i 112 n calculator).
2.67. Se dau
n>1. S se construiasc vectorul V = ( v1 , v2 ,... v 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 x m 114 (fr a reine termenii x i 115 n calculator).
2.68. Se dau
n>1. S se construiasc vectorul V = ( v1 , v2 ,... v 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 x m 117 (fr a reine termenii x i 118 n calculator).
2.69. Se dau
i seria
3n - 2
n=1
1
1
. 119
3n - 1 3n
S se construiasc vectorul
i seria
4 1
1
2n-1 + 2n-1 123
2n - 1 2
3
n=1
S se construiasc vectorul V = ( v1 , v2 ,..., v n ) 124 tiind c cele n componente ale vectorului V
sunt sume pariale ale acestei serii, v1 = s20 , vi = s20+5i , 125 i=2,3,...,n, unde sk 126 este suma
(-1 )
n-1
primilor k termeni.
37
2.71. Se dau n
3
1 1* 2
1* 2* 3
(1+ +
+
+... ) 127
2
6 6* 10 6* 10* 14
S se construiasc vectorul
1 1* 2 1* 2* 3
2 1+ +
+
+... 131
3 3* 5 3* 5* 7
S se construiasc vectorul
ui = 1+
1 1 1 1 1 1
+
+
+... 135
3 9 5 92 7 93
S se construiasc vectorul
1+
i se cunoate seria
1
1* 2
1* 2* 3
1* 2* 3* 4
+
+
+
+... 139
3* 3 3* 5* 5 3* 5* 7* 7 3* 5* 7* 9* 9
S se construiasc vectorul
38
unoate seria
1+
1
1* 2
1* 2* 3
1* 2* 3* 4
+
+
+
+... 143
3* 3 3* 5* 5 3* 5* 7* 7 3* 5* 7* 9* 9
S se construiasc vectorul
39
xk =
| x n - x n-1|< 0.00001, 155 n fiind cel mai mic posibil.
xk =
pentru m
1
a
m
x k-1
| x n - x n-1|< 0.00001, 157 n fiind cel mai mic posibil.
a, x0
2.85. S se tipreasc primii n termeni ai irului (xk) pentru care | x n - x n-1|< 0.00001, 158
n fiind cel mai mic posibil, n cazul irului
x3
x5
x 2n+1
n
159
+
- ...+(-1 ) *
xn = x 3
5
2n+1
pentru x
2.86. S se tipreasc primii n termeni ai irului (xk) pentru care | x n - x n-1|< 0.00001, 160
n fiind cel mai mic posibil, n cazul irului
x2
xn
x n = 1+ x + +...+ 161
2!
n!
2.87. S se tipreasc primii n termeni ai irului (xk) pentru care | x n - x n-1|< 0.00001, 162
n fiind cel mai mic posibil, n cazul irului
x n = 1+ x +
x2
xn
+...+ 163
2!
n!
pentru x
2.88. S se tipreasc primii n termeni ai irului (xk) pentru care | x n - x n-1|< 0.00001, 164
n fiind cel mai mic posibil, n cazul irului
xn = x -
x3
x 2n+1
2n+1
+ ... +(-1 ) *
165
3!
(2n+1)!
pentru x
2.89. Se d f C2[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
40
[ x0 , y0 ] = [a,b] 168 ;
2. [ x i , y i ] 169 se obine mprind intervalul [ x i-1 , y i-1 ] 170 n trei pri egale
1.
41
42
CAPITOLUL 3
DATE n,
(xi,yi, i=1,n),
a,b,
r;
REZULTATE nr;
Pentru a calcula valoarea lui nr se iniializeaz cu 0 acest numr i se verific care dintre
punctele (xi,yi) 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,
(xi,yi, i=1,n),
a,b,
r;
Fie nr:=0;
Pentru i:=1,n execut
2
Dac ( x i - a) + (
sf-pentru
REZULTATE nr;
43
sf-algoritm.
Programul PASCAL este dat n continuare.
Program Nr_Puncte_n_cerc;
var n,
i,
nr : integer;
a,b,
r : real;
x,
y:array [1..50] of real;
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
44
Se dau
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,
n,
(xi,i=1,m),
(yi,i=1,n);
REZULTATE k,
(zi, i=1,k),
Pentru a forma vectorul Z observm mai nti c z1 este cel mai mic dintre x1 i y1. Ct timp
mai sunt componente i n X i n Y urmtorul z va fi cel mai mic dintre xi i yj, 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 :
Date m,
n,
(xi,i=1,m),
(yi,i=1,n),
Fie i:=1; j:=1; k:=0;
Dac xi<yj
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
sfRezultate k,
(zi, i=1,k),
{ Z := X interclasat cu Y }
{ numrul componentelor lui X }
{ numrul componentelor lui Y }
{componentele vectorului X. Avem x1
2
m}
{componentele vectorului Y. Avem y1
2
n}
45
sf-algoritm
Programul PASCAL este dat n continuare.
PROGRAM INTERCLASARE;
VAR m,
n,
i,j,
k: integer;
X,Y,
Z : array[1..100] of integer;
BEGIN
{ 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;
Writeln(' Numerele ordonate sunt');
For j:=1 to k do write(z[j]:5);
readln
END.
46
{ Tiprete rezultatele }
3.10. Se dau
A = { a1 , a2 ,..., a m }
173
B = { b1 , b2 ,..., bn }
S se calculeze C = A
B.
i mulimile
3.11. Se dau
A = { a1 , a2 ,..., a m }
174
B = { b1 , b2 ,..., bn }
S se calculeze C = A
3.12. Se dau
B.
i mulimile
47
A = { a1 , a2 ,..., a m }
175
B = { b1 , b2 ,..., bn }
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 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 P1,P2,...,Pn 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.
48
49
50
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 :
i j
x
a(i, j) =
k=1
(i j - i +1)
(4.1) 176
51
sf-pentru;
A(i,j):=sum/(i*j-i+1)
sf-pentru
sf-pentru
Rezultate A;
sf-algoritm
52
Se dau m,n,k
i numerele ntregi x1,x2,...,xk. 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)
x1 x6 x7 x12
x2 x5 x8 x11
x3 x4 x9 x10
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,
k,
X;
REZULTATE A
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,
k,
X;
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 aij:=xl; l:=l+1 sf-pentru
altfel kod:=0;
Pentru i:=m,1,-1 execut aij:=xl; l:=l+1 sf-pentru
sf-dac
pn cnd j>n sf-repet
53
REZULTATE A
sf-dac
54
end
end
end.
4.3. PROBLEME PROPUSE
n cele ce urmeaz vom nota prin Mm,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 Mn,n(D) =
MPn(D). Prin Z vom nota mulimea numerelor ntregi, iar prin R mulimea numerelor reale. Prin Vn(D)
se noteaz mulimea vectorilor cu n componente, toate elemente din domeniul D.
4.1. Se d o matrice
mai mare element al matricei.
m,n(R+).
4.2. Se d o matrice
m,n(R).
prin:
n
A(i,n+1)=
4.3. Se d o matrice
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
element pozitiv.
4.5. Se d o matrice
m,n(R+).
m,n(R+).
m,n(R).
S se construiasc vectorul X =
55
4.11. Se d o matrice
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
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.
4.13. Se d o matrice
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
media
m,n(R). S se mpart elementele fiecrei linii la
aritmetic a elementelor pozitive din linia respectiv. Dac ntr-o linie nu exist elemente pozitive,
linia rmne neschimbat.
4.15. Se d o matrice
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
matricea dat.
m,n(R+).
4.17. Se d o matrice
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
m,n(R+). S se schimbe ntre ele liniile matricei astfel nct irul
sumelor s1 , s2 ,..., sm 180 s fie ordonat descresctor, unde
n
si =
ij
, i = 1,m 181.
j=1
4.19. Se d o matrice
m,n(B2), unde B2 ={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
m,n(R+).
Poziia
S se tipreasc toate punctele a dac exist astfel de puncte sau un mesaj corespunztor n caz
contrar.
56
4.21. Se d o matrice
m,n(R+).
bij = ( aij - max ) 186, unde max este cel mai mare element al matricei A.
4.22. Se d o matrice A
m,n(R+).
daca i < j
aij ,
187
bij =
( ai 1+ ain + a1j + a mj ) / 4, altfel.
4.23. Se d o matrice
linii i n coloane unde
m,n(R+).
- 1, daca a ij (x, y)
4.24. Se d
m,n(R).
m,n(Z).
4.27. Se d
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
57
0 , daca a ij <
1 , daca x
a ij
bij =
2 , daca y a ij
3 , daca a ij
4.28. Se d
m,n(R+).
x
< y
< z
192
z.
cj =
ij
bi ,
j = 1,2,...,n.
193
i=1
4.29. Se d
m,n(Z). Fiind dat un numr natural p, s se formeze vectorul X cu m
componente, unde xi reprezint numrul elementelor din linia a i-a a matricei A care sunt divizibile cu
p.
4.30. Se d
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
m,n(R+). S se formeze un vector de n componente, n care componenta vi a
vectorului s fie egal cu raportul dintre suma elementelor din linia i i suma elementelor din coloana
i.
4.32. Se d
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
n(R). S se ordoneze liniile i coloanele matricei astfel nct elementele
de pe diagonala principal s fie ordonate cresctor.
4.34. Se d
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
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
58
n(R).
4.37. Se d
matricei A.
n(R).
4.38. Se d
n(R). S se genereze o matrice
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).
4.39. Se d
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
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
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) ...
2
4.42. Se dau
i
n(R) pentru n=m . S se construiasc o matrice ptrat de
ordinul m, dac este posibil, astfel:
- deasupra diagonalei principale elementele matricei sunt elementele irului ncepnd cu x1, scrise n
ordine pe linii;
- elementele de pe diagonala principal sunt ai,i = xi*i;
- elementele de sub diagonala principal se calculeaz astfel:
59
cu elemente succesive din ir, ncepnd cu xn+1, iar sub diagonala principal elementul din linia i i
coloana j a matricei este egal cu elementul xj+i al irului.
4.44. Se d
2n(R).
ai, j
min{ x i ,..., x n },
daca i este par
194
=
4.46. Se dau m, n
S se formeze matricea A Mm,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(R).
S se genereze o matrice
m,n(R)
definit astfel:
m*n(R).
S se genereze o matrice
m,n(R)
definit astfel:
(i-1)n+ j
a ij =
x l 196
l=(i-1)n+1
m,n(R)
definit
astfel :
A(i,j) =
60
m(R)
n(R).
S se formeze matricea
m,n(R)
dac
m,n(R)
dac
a(k)
c(i, j) =
k=1
n
b(k)
199
k= j
cij =
m(R)
n(R).
S se formeze matricea
ai * b j
200
max{ a1 ,...,a m ,b1 ,...,bn }
61
m(R)
n(R).
S se formeze matricea
m,n(R)
dac
m(R)
n(R).
a b
cij =
k=1
S se formeze matricea
m,n(R)
dac
m,n(R).
p 202
p=1
S se determine matricea
m,n(R)
unde
n(R).
S se determine matricea
n(R)
definit
prin:
m,n(R).
S se determine matricea
m,n(B2)
unde
m,n(R).
a
j=1
ij
<
ij
. 206
j=1
62
n(R)
2n(R)
o matrice cu structura:
A B
D =
207
B C
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 x1 , x 2 ,..., x n [0,2n ) . 208 S se tipreasc matricea
ptrat de ordinul n care are proprietatea c linia a i-a a acestei matrice reprezint numrul xi n baza
doi.
4.69. Se d
de coloanele matricei.
4.70. Se d
m,n(B2).
n(R).
S se formeze matricea A
MPn(R) cu elementele:
63
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
n ordine cresctoare;
- elementele mulimii
n ordine cresctoare;
- elementele mulimii
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: }
{ x1 < x2 < ... < xn }
- o procedur pentru calculul reuniunii a dou mulimi:
REUN(n,m,A,B,nm,AUB);
DATE {de intrare}
n,
m,
A,
B;
REZULTATE nm,
AUB
64
ch;
REZULTATE afiarea elementelor mulimii
Cheam CIT(m,B);
Cheam CIT(p,C);
Cheam TIPORDON(n,A);
Cheam TIPORDON(m,B);
Cheam TIPORDON(p,C);
Cheam TIPREUN(n,A,m,B,n1,AB);
Cheam TIPREUN(m,B,p,C,m1,BC);
Cheam TIPREUN(p,C,n,A,p1,CA);
Sf-algoritm.
{ Tiprete pe AB := A U B}
x i ; 211
xi := xi+1 ; 212
Fie xi+1 := xx; 213
Fie
Fie sch:=1;
sf-dac
sf-pentru
pncnd sch=0 sf-repet
sf-ORDON
65
Subalgoritmul TIPORDON(r,X,ch);
Cheam ORDON(p,X);
Cheam TIPAR(r,X,ch);
sf-REUN
Subalgoritmul TIPREUN(n,A,m,B,n1,AUB,ch) este:
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;
66
{ Programul 5.1 }
{operaii cu mulimi reprezentate ca vectori}
end;
Procedure tipar(n: integer; a: sir;
ch: s3);
var i: integer;
begin
writeln('elementele mulimii ', ch, ' sunt:');
for i := 1 to n do writeln(ch, '[', i, ']=', a[i]);
end;
Procedure ordon(r: integer;
var x: sir);
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;
67
if i > n then
begin n1 := n1+1; AUB[n1] := B[j]; end;
end;
end;
Procedure tipreun(n, m: integer; A,B: sir;
var n1: integer;
var AUB:sir; nume:string);
var xx: real;
i, sch: integer;
begin
reun(n, m, A, B, n1, AUB, nume);
ordon(n1, AUB);
tipar(n1, AUB, nume);
end;
Begin
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.
{Calculeaz reuniunea,}
{ordoneaz elementele i}
{tiprete rezultatul}
{programul principal}
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.
poate fi apelat oricnd este nevoie de el. Vectorul P va reine cele n numere prime. n variabila i vom
68
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:
Fie i:=5; p1:=2; p2:=3; k:=2;
Repet
Dac prim(i) atunci
Fie k:=k+1; pk:=i;
sf-dac;
Fie i:=i+2;
pn cnd k=n sf-repet
sf-NRPRIME
{ In vectorul P se obin }
{ primele n numere prime }
69
{programul principal}
P = Q R 218 a dou
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.
70
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 f1, f2, ..., fn 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
punct dat, folosind o funcie de calcul a valorii unui polinom ntr-un punct.
ntr-un
1 x3
1 3 x5
1 3 5 x7
arcsin x = x + +
+
+ ... 219
2 3
24 5
246 7
s se defineasc o funcie PASCAL care calculeaz arcsin x cu precizia
tipreasc apoi valorile:
v i = arcsin
= 10-6 . 220
S se
1
, i = 2,3,...,m 221.
i
5.11. Fie irul x1,x2,...,xn. 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 x k 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
...
...
...
...
.
.
.
.
.
.
.
.
.
10
...
...
i 223
i 224
71
Observaie. Radicalul
r =
5.13.
X: x1,x2,...,xn; Y: y1,y2,...,ym; Z: z1,z2,...,zp 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 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
i x1, x2,..., xn un ir de numere naturale date. S se scrie un program care
gsete:
a) media aritmetic a acestor numere;
b) maximul din irul y1,y2,...,yn unde yi se obine n felul urmtor:
y1 = x1 , yi = ( xi div xi-1 ) * ( xi + xi-1 ) , 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
c = a2 + b2 228, iar dou triplete ( a1 ,b1 ,c1 ) 229 i ( a2 ,b2 ,c2 ) 230 sunt considerate a fi
asemenea dac
a1
b1
c1
=
=
231.
a2
b2
c2
Se d
i mulimea de numere ntregi X = {xi
Se cere s se afieze mulimea
tripletelor pitagorice din mulimea dat i clasele determinate de relaia de asemnare pe aceast
mulime.
5.19. Fie
mulimea:
72
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]
x i 238.
5.21.tiind c irul X:
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:
.
. .
.
.
.
x1 x n+1
. .
.
.
.
x 2n
x 2 x n+2
.
.
.
x 3 x n+3 .
. x 2n+1
A =
239.
.
.
. .
.
.
.
.
.
.
.
. . x 3n-3 x n-1 x 2n-1
.
.
.
. .
. x 3n-2
x n
S se tipreasc n final
A, A2 , ..., An . 240
x1 , x2 , ..., x n 241. Se cere programul care genereaz
5.22.
matricea de dimensiune
mxk 242 care are pe liniile sale n ordine elemente din irul:
x1 , x2 , ..., x n , x1 , x2 , ..., x n , ... . 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:
73
x1
x2
x m+1
x m+2
A =
.
.
x(m-1)m+1 x(m-1)m+2
x m
. . . x 2m
245.
. . .
.
. . . x m2
. . .
g( x i ), daca x i < 0,
v i = f( x i ) = l( x i ), daca x i = 0, 249
h( y ), daca
x i > 0,
i
g( x i ) = max x1 , x 2 , ..., x i,
h( y i ) = min y i , ..., y n ,
250
5.27. Se dau
i o matrice Amxn ( 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)
74
n-1
b)
3
3
3
( C0n )
( C1n )
( Cnn )
256.
+
+ ... +
0!
1!
n!
S =
unde
1
1
1
+
+ ... +
, 257
a1 a2 ... a k
a2 a3 ... a k+1
a n-k+1 ... a n
a n 258 e o progresie aritmetic pentru care raia i primul termen se cer utilizatorului.
5.30. Dac numerele a1 , a2 , ..., an+1 259 sunt primii n+1 termenii ai unei progresii
geometrice, s se calculeze, printr-un program, sumele:
a)
Sn =
b)
S n =
1
+
a - a1p
p
2
a1
+
a2 - a1
p
3
-a
p
2
+ ... +
p
n-1
1
260
- a np
a2
+ ... +
a3 - a2
an
261.
a n+1 - a n
Observaie. Raia i primul termen al progresiei vor fi furnizate programului de ctre utilizator.
5.31. Se dau
care tiprete permutarea
i numerele reale
Sn =
( a
- a (i) ) 264
i=1
Fie
unde
cos k
k=1
sin k
269
cos2 k sin 2 k
75
5.34. Dac
x1 , x2 270 sunt rdcinile reale ale ecuaiei de gradul doi (cu coeficieni reali):
a1 x + a2 x + a3 = 0 271, s se scrie programul care calculeaz suma:
2
S =
k=1
x1k
3k
x2
x 2k
2
x12k
x13k
. 272
k
x 2
n cazul n care ecuaia de gradul doi nu are rdcini reale se va da un mesaj de eroare corespunztor.
5.35. Se dau
i n coloane definit prin:
a ij
2
= R( i2 , j ), daca min(m,n) i + j max(m,n) 273
Q(i + j), daca max(m,n) < i + j
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 274 cu
proprietatea
5.37. S se scrie un program care determin cel mai mic numr natural n care are
exact m divizori primi proprii.
5.38. Fie
S =
d|m
m
(d) 277
d
unde nsumarea se face dup divizorii naturali d ai lui m (inclusiv 1 i m), iar
lui Euler,
76
(n) =
n, n
5.39. Fie
m =
k
282 unde
C2n
k=0
f(x) =
(k - x )
c2k
2n . 283
k=0
5.41. Se dau
i o matrice
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
i funcia
f(n) =
C kn ( k 2 + 1), n par
k=0
n
k=1
1
,
k!
287
n impar
a) Se cere programul care genereaz primele m elemente ale irului xi = 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 xi.
77
78
CAPITOLUL 6
aij
n(B2)
unde
{ n = numrul persoanelor }
{ A = matrice ptrat de ordinul n }
{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;
ij=0) execut j:=j+1 sf-cttimp
Dac j>n atunci k:=k+1; pk:=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 aij=1, dar atunci i aji=1, deci matricea A trebuie
79
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.
Program CUNOSTINTE;
Var n,
k,
i,j : byte;
P : array[1..20] of byte;
a : array[1..20,1..20] of byte;
{Programul 6.1.}
{ Relaia de cunotine intre persoane}
{ n = numrul persoanelor }
{k = nr. pers. care nu au nici o cunotina}
{ P = vector cu k componente ce}
{reine cele k persoane fr cunotine}
{ 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: ');
80
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 a1k:= 1.
- Dac aij = k atunci ai-1,j+1 := k+1, dac locul este liber, altfel ai+1,j := k+1.
- irul indicilor se consider circular, adic dup n urmeaz 1, naintea lui 1 este n. Excepie de la
regul: dac a1n = k atunci a2n:= k+1.
Exemplu:
17
23
4
10
11
24 1 8 15
5 7 14 16
6 13 20 22
12 19 21 3
18 25 2 9
DATE n;
Pentru i:=1,n execut
81
Uses Crt;
Var n,
m1, m2,
i, j,
k : integer;
a : array[1..19,1..19] of integer;
Begin
Writeln('Se construiete un ptrat magic cu n linii');
Repeat write ('n=');
readln (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;
i:= 1; j:= n div 2 + 1;
a[i,j]:=1;
for k := 2 to n*n do
82
{ 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 }
{ variabile curente pentru noua poziie }
{ dau poziia curenta in ptrat }
{ valoarea ce se scrie in ptrat }
{ Ptratul magic }
{ Citete n }
{ iniializare matrice }
{ fixare locul de pornire}
begin
m1 := (i+n-2) mod n + 1;
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;
a[m1,m2] := k;
i := m1; j := m2;
end;
ClrScr;
for i := 1 to n do
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.
{ tiprete linia i }
83
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
nu se cunosc ntre ele.
6.3. Se dau n relaii de rudenie prin matricea A=(aij), i=1,2, ...n, j=1,2, unde
a i2 293 este
M'
84
6.5.10. Fie k elementul neutru al operaiei. S se determine un vector s, ale crui componente
sunt s1,s2,...,sn, unde si 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
aij = 1, 295 dac i 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 Rc definit astfel:
aRcb prin definiie dac
.
6.6.8. Dac se dau dou relaii R1 i R2, s se determine compunerea celor dou relaii: T =
R1 o R2 nseamn c (aTc dac i numai dac exist b astfel ca aR1b i bR2c).
6.7. Se dau mulimile A i B:
A = { a1 , a2 ,..., a m }
297.
B = { b1 , b2 ,..., bn }
85
r ij
1 , daca a i R b j
298
=
0 , altfel .
6.7.1. Fiind date dou relaii R1 i R2 peste aceleai mulimi, s se verifice dac relaia R1 este
inclus n R2 sau nu.
6.7.2. S se verifice dac R1 = R2 .
6.7.3. S se construiasc matricea relaiei R1
R2 (reuniune).
R2 (intersecie).
6.7.5. Fie R o relaie omogen peste M. S se construiasc relaia Rk, unde Rk = Rk-1 R
(adic R compus cu R).
k-1
86
6.11. Se dau n localiti. ntr-o matrice A=(aij), i,j=1,2,..., n, sunt marcate lungimile
drumurilor directe dintre localiti:
aij = d, 299 dac exist drum direct ntre i i j i d este distan ntre i i j;
Dac
d(i,j)
este
distana
minim
ntre
j,
atunci
notm
(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
prin
aij = 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
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".
87
88
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.
89