Documente Academic
Documente Profesional
Documente Cultură
ww.face
book.co
m/manu
ale.onli
ne
http://ww
w.faceboo
k.com/ma facebook.com/manuale.online
nuale.onl
ine
Kffi
http://www.ls-inf
omat.ro
VladHutanu Tudor Sorin
INFORMATICA
Ciclulsuperioral liceului,
clasaa XI-a
Retoronti gtiintitici:
Prof. Dr. Victor Mitrana, Facultatead lratemstica, UniversitateaBucuriti
Prof. grad I Valiana Petrigor,Colegiul Nalional Bilingvceorge Cogbuc
Anultipdririi:
2006
L Tudor.Sorin
004(075,
Edirnra
L&S soFr: H
AdrsorStr.Sdnjeneilornr,8, bl.29,sc.A. er.l, apr,12,Secxor
4, Bucure$ti;
Tcl./Foxr03l-105.62.84;
Mobil:0722-530.390, 0722-51.31.01 ;
E-msil:tsorin@ls-infomat.ro;
WebSiteiwww.ls-infomat.ro.
Cuprins
L d Pr ( ur ur r .
Cuprins
3.2.3.Compararea .........................................
9iruri1or...............................
3.2.4.Lungimea de caractere.....................
Sirurilor ... .............................. 79
3.2.5.Subqiruri............. .............................,.......... 80
3.2.6.Conversiide la Siruri
la valorinumerice Siinvers.................-....--...... 84
3.2.7.Citirea giscrierea datelor de tip St rgdin 9i in figiere text................. BB
3 .3.$ir u r id e caracterelnC++.......... . . . . . . . . . . . . . .............89
3.3.1.Generalitdti....... ................................ 89
3.3.2.Citirea giscrierea girurilof
decaractere....................................... 89
3 .3.3.Tipu|chart........ .......................................
3.3.4.Lungimea unui9irde caractero........,...................................... 93
3.3-5.Copierea ti conctenarea $irurilorde caractere.....-.........-.............. 94
3.3.6.Cautarea unuicaracter intr-un5ir............ ........ ....................... 95
3 .3.7.Co mpararea qiruri|or.......... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.8.Sub9iruri........,.... ........................................ 99
3.3.9.Altefunctiiutilein prelucrarea qiruri1or....................................... 101
3.3.10. Conversia girurilor
ln valorinumerice 9i invers.........................,.....
3.3.11.Citirea9iscriereaSirurilordecaracteredin9iinfigieretext.....
3.3.11.1.Operatia deci|ire.................................................... 108
3.3.11.2.Operatia de scriere................................................, 109
3.3.12. O modalitate de conversie de la 9irla alttip...................................
Probleme propuse....... . .......... 110
Capitolul4. Structuri
de dateneomogene 112
CaDitolul
5. Structuri
de date 124
v:.ual de informaticipentrualasaa Xl-a
Tablouri
l . l . No! iunea
d e ta blo u
Anultrecutam studiatlablourileunidimensionalo
numitouneori,p n analogie
cu matematica,vecto . in acestan studiemtablourilebidimensionalo
numite,iot
pdnanalogiecu matemalica, matrlce.
s Oetlnllla1.1.Untablouesteo structurd
printr-un
identifice
intermediul
sangur
omogena
de acelalifel)cu un numdrbinedeterminat
(formaEdinelemente
de componente.
nume,iarcomponentele
unuisistemdeindici.
Tabloulse
prin
salese identificd
& Intreb5liposlblle
a) Dacamagazinut vinde5 produse,cateelemente aretabloul?
in tabloupentrua aflavanzdrilo
b) Caresuntindiciide adresare dinprodusul
5 in lunaseptembrie?
c) Cumsepoatecalcula sumaincasauin lunamai?
Capitolul l. Tablouri
Flgura1.1.Exemplu
d iablou
t in memorie,
tablourile pe linii.Aceasta
suntretinute Tnseamne
cd h inceput
estememoralaprimalinie,apoiadoua,9.a.m.d.
l0 Capitolull. Tablouri
I .3.Aplicatiicu tablouribidimensionale
0 Aplicalia l.l, lnterschimbalede tlnll. Se cilegteun tabloucu n linii 9i ll
coloane.Se citesc, d6 asemenea,gi doud numerenaturaledistincte:< 9i y,
cuprinseintre 1 9i m.Se ceresd se interschimbeliniax cu liniay. La inceputvom
apoipecoloblinutprininterschimbarea
afila tabloulinilial, liniilorx9iy.
ExemPlu:Considerem tabloulde maijos,cu m-3,nE3 9i liniilexE2,yE3:
23)
{1
4 5 6l
[7 8 e J
In urmainterschimbdrii
liniilor2 Si3 se obline:
EI Rezolvare.
I i:]
DupScum arn invalat,pentrua interschimba conlinutul
a doue
variabilese utilizeazAo a treia,de manevr6. Deaceastadatd.se intorschimbd
doud
linii.Amti tentalica manevrasdfie unvectorcun componente. Cu putineatentione
d6mseamace putemfolosica man^evrd o singuravaiabildde acelagi
tipcu celal
componenlelor debazdaletabloului. Inrest,analizali
programuldemaijos:
ro E l. - 1E on. ! o I'
E t t 6 ( E t t i, i 1 . | ' )r I
Elemeniele
vorfi afigatein ordinea:
tffil
123598745.
EI Rezolvale.Pentrua putearezotvaproblema,privimtabloulca pe un ansamblu
abetuitdinmai multedreptunghiuri'concenlrice":
q-nctajulliterelorcareaparinlr-uncuventpeorizontald
9i unulpe verticab9i carear
rehri luatededoudoriln calcul.Deaceea, vomanaliza Tnplus,pentru fiecarelitere,
* ea tacepartedinlr-unsingurcuvant(areliterevecinedoar pe orizontaEsau
@r peverticaE) $isepuncteaza saufacepartedindouecuvinte(arelitere
obignuit,
pe
Ecine$i odzontale pe
Si verticaE) giatunci
sepuncteaza dublu.
fo r(t.1rI< = r; i++)
!c l:-1 to D alo fo r{J.1, J< { rJ+ + )
t> > ati l tl l t
lor Jr!r. to ! dlo
rs ld( r , at t , J I ) , !o !(i - 1ri < = art+ + )
FAdrr(f ) fo r( J.1r l < ar j + + )
i f (attl IJt I-' .' )
(
for i!=1 to a alo l t ( atit Iil - =' A,lt
1;1==' e' ll
if aI i. jl< > r . ' tha "r at Ij:--'I'll
3trl
( aI i, jI = ' r ,' ) o r
atrl Ij:--'o'll
t! attl IJI--'u')
( ! I l, J I r ! r t ) o!
( aI i' J I = ' r ' ) o r
( s t i' jl = r o ' ) o r
( aI t , j1= ' u t ) tb d D != 1 (t>1 e& atr-1] IJIrt!.
if
l@ D!- 2 '
ll1<a&&
att+lltJIt='.r)
if { t > 1) . n( l { a tt-1 , J l < > ' . ' )
( t < s ) a' d (.Ii + 1 , j 1 < > ' .,)
lf {l>1 && 6ItI ll-u lrt.
tha dlirr.al:lrlt ll l<n &&
elil tj+ll l=r ' | )
if { J > 1) lr d (a tt,J -1 1 < > ' . ' )
Dacautilizam
artificiul
dea boada
matricea punct:
cucaractere
rpntlu i=0,n+1 e:.ecut5
| a*r,r'.'
"0,.<'.'r
I ar.o' . ar.*r'.'
\t "
atuncitestareavecinilor de pe margine
elementelor se realizeaze
intocmai
ca9i tn
cazulcalordininteorulmatriceil
I dtredh+1 (celputinunvecinpedirectia
orizontatd)
l.|
t 0 0 0 0 o
lt0 25
30
1 0 I 0 0 0 0 o
25 30 {o
pentruclasaa Xl-a
Manualde informaticd
'/ Algoritmuleste
"mareconsumator"
do memoriel
Exernplu.Pentrutabloulde mallos
r \2 r)
l+ \ ol.
lt ')
sunt:1, 5 9i9.
elemenlele
Secero:
principald;
aflatepsdiagonala
al) sumaelementelor
aflat
a2isumaelementelor deasupra principale;
diagonalei
atlate
a3isumaelernentelor sub principald'
diagonala
A, numimdlagonaEsecundattr,
b) Pentruuntabloupdtratic aflatepe
elementele
al'l.1I cu A[1,nI
careunegte
'linia"
tabloul
Pentru
Exemplu.
(' ,,2)
rz:l
\/ I ',
sunt ?, 5 9i 3.
elementsle
Secere:
secundare;
atlatepediagonala
bl) sumaelementelor
aflatedeasupra
b2i sumaelementelor secundare;
ciagonalei
secundare'
allatesubdiagonala
b3isumaelementelor
Cerinlesupllmentare:
. pentrufiecareceriilldsevalaceun programseparat;
. Tnniciunprogram nusevafolosiinshu4iunea lf
coloanele
2, lnterschimbali uneimatrice astfelincatin liniak'
d: n linii9in coloane
elementelesdlie ln ordinecresc6toaae.
Manualde informatice
pentruclasaa Xl-a 17
VarlantaPascal ' :i .l i
'/ prinulilizarea
Copierease realizeazd unuisingurcicluforl
spunsu grila
rilela testele
d); 13.c); 14.b).
Capitolul2
Subprograme
2. 1.Noliu ne a
de sub pro gr am
in Pascal
2.2. Subprograme
a funcliilor
2.2.1. Un exemplude utilizare
z,=.*LaLa...a!, =('-*.1.
" -*)'
EI Rezolvaro.Funcliacarocalculeazig1s19:
lscrton su.bc,(nr Lnle!'r) r16.1,
v . a .!ro r1 r
Irl n t g .!,
f , o r l !.1 to n a l o a r.!+ l /i ,
aubDt
-.,
Analizaprogramululanterlor
t esle"frrldtlon
Antelultunctiei lrbD (r r l.ntossr) trarr".
t Functiaso numesle"sulD".
t Ea oste recunoscut5 de compilatorprin faptulc5 antetulesle precedatde
cuvantulcheie"f unotlon".
t Functiaare un paramlrunumit D. Rolul siu este imporlant9i anume
$ecizeazf penfiu ce valoate tr&ulo calculate exptesla. Aia cum vom
sd avemmaimultiparametri,
vedea,existdposibililatea do diferitetlpurl.
t Funcl@are un anufiil llp, carc ptecl4eazd natu'a rczuttatulut in exemplu
lipulesterear lntfucalexpresiacalculat esledo acesltip.
t Funcliaare variabileproprir- adicavariabilocarsuntdefinitein cadrulei. in
exemplu,ele sunl s 9i i. Acestevariabilese numoscva ablle locale.
) Am vdzulcd functialntoarceun anumitrezultal- Tnexemplu,de tip rear,
Obseryalimecanismulprin care am oblinutaceasta,Calculezexpresiain
mod obiqnuit.Rezultatuleste relinulde variabilalocalds. Prin alribuirea
"rul[)-sr ", funcliaa primitca valoarede relurcontinulul
variabileiE.
prezenidmceledoudprogramecareutilizeaza
in conlinuare, funclia:
Lanualde informatlcE
pentruclasaa Xt-a 23
f o! lr ! 1 t o n 6 0 s t. rl l tr
v lf n, l! I r r . t . rt
r.z, Dloal I r6al,
furcllotr .u!E!(nrtnt.sr) r !a1,
waE ! !!..1t
i !In!ge!,
b.sh
lor lr-1 co n dto .r.r+t/i,
g!.bt, ! rat
Parametril
careseutlzeazd
taapelsenumesc
paramerrl
3r:1Ly,:"t
La apel,lucrurile
staualtfeltvalorileacgstora prin urmare
sunlcunoscute.
acestia
senurnescparamelrielectlvl.
24 Capitolul2. Subprograme
a procedurilor
2.2.2Un exemplude utilizare
O Problema2.2. Se citegten, numdrnaturalSe citeqteun vectorcu n
numere
componenle veclorulsortal.
reale.Seceresdsetipdreasce
esteurmato.ul:
Programul
EI Rezolvare.
tt'I). v.clolratssv [1..91 of iDletet,
wa r tr. i : int ogr ;
v:v. c t or ,
Iro..alur clletc;
groc.alut. ltt)Arsdc,
fo r tr- l to n dt o Elt er ! ( v lt l) ,
Droccdlur6 so!!62,
var e..:Ll.boolos,
utt:lntes6t,
cl!..ci
ao rtzt
crDrraac,
Apelul unei prcceduri se lace pin utlllzarea numerui er',sub forma nu!r.
Mai precis, apelu/ unei prccedui este inslruqiune, numilS instructlunea
de aoel.
La apel, contrclul programului este tansfeat la pima instuqiune a
proceduii- dupecum se lntampldSi la funclii.Dupaexecutareaprocedurii,
se rcvine in programulpincipal la ptina instuqiune carc urmeazdcelei de
apel- in cazuldo fald se intalnegte
o ala instrucliune
de apel.
Ca Si funcliile, prccedurile 6e pot phsa in cadrul programulul intre
declar4ile de va abileii instru4iuneacompusA.
O ce variabi6 a prognmului ptincipalesteSi variabid a procedutii(inversnu
este adevdrat).
2.2.3.Structura
unuisubprogram
in osenla,
unsubprcgram
ostoalcatuit
din:
Antot - conlinemai multoinfgmatiiimportanle necesarecompllalorului,
numelesuwogmmului,lbtapatametrilor formali.In oazulsubprogramelor
de
tiplunclie,
contine (valoarea
ii tipulrezultlului intoarsd dfun4ie).
Bloc - cuprindedelin4iiletipuribr de va abile, ale variabilebr,ale
subprogramlor
9i o inslructiune
compusd. Structt/ra
saesteidenlicd
cuc6aa
programului
princlpal, daceesteblocdeprocedura
indilernt saudetunctie.
I, principal
Programul unantgt(program
contine nume)$iunbloc.
Penlruprezenlarea
strucluriisubprogramelor
do tip lunctievom utiliza
diagramele
de sintaxd.
2.2.3,1,Structura
subprogramelor
de tip funclie
infigura estprezentatd
urmetoare struclura
anletulul:
ANTET DE lt$T
- FUI{CI|E PANAMETRI
FORMALI
DEIITIFICATOR
DE TIP
Figu6 2.1.Slrucrura
anrtului
unuisubp.ogGm
de iipruncle
Exemplu:
fwction str@(s,Yth!e!ot) ttellt
.l|@.-a+yt
- bloculesle(inacestcazlipsosc
variabilels
locale):
srlu ! rx+y,
Structura
2.2.3.2. detip procedure
subprogramelor
antetuld ptoooduli:
steprezentat
in flguraurmetoare
LISTI
ANTET IDENTIFICATOR PARAMETRI
-pnoceounF
Flglra2.2.structurd
anttllul dllppfocdula
unulsubprogram
Exemplui
D!oc.a\rr. !u!.(va! 3r r.d, x,yt!.41),
(numgleprocedurll)
- idenlificalorul estesurr;
- lislaparametrilor "vat E!!611, x,vr!aLt";
formalieslei
- blocul6ste:
Lnual de Informaticioentruclasaa Xl-a 27
2.2.4.Definirea
$i declararea
unuisubprogr_am
Dsgiaparentasemdndtoare, celedoudnoliunidiler). Bunaintelegerea lor
.E ajutasa evilSmanumiteerori.I\Iaimult,acsslonotiunisunl utilizatede orice
tnbaj de programare,
nu numaidePasoal,
w!llo1tr(*)
b.sh
Drogra! 6xrq,1u2,
r i. t 14 ( ' u s u n l z r)t
nr il. ln( *) , zt
28 Capitolul2. Subprograme
Exemple
. in programulexdDtul, procedurat este delinitdin bloculprogramului
principal.
Ea poateli apelatddinprogramul
principal.
. in programulxeq)lu2, procedurat esle definiidin bloculprogramului
principal,decipoalefiapelaldde acesta.Procedufaz esie definitdin blocul
proceduriir. Ea poatefi apelaiadin t. in schmb. nu poateli apelalddin
program!lprincipal.
Exemple
writt a( t s lt )
Dloc6tlur 62t
6 1t
ffiiE' ln ( ' a2' ) _
. Procedura test conline definilia a doud proceduri 11 91 62. Nici una din
aceste proceduri nu se considerd declarati penlru programul principal.
Amandoud sunt declaratepentru proceduratet. Pentru proceduras2, 61
este declaratb,dar pentru 61 proceduraE2 nu este declaratd.
Manualde informaflce
pentruclasaa Xt,a 29
Drocealur tctt
Drocedluao s1t
r lt or E ( ' sl' )
Drocedur 3?'
a2t
p*i9lt"ta rn 2, sepoare
rotusi
caoricesubprogram
definit
llra :ilr_llll _cazut
nrvrurunur.btocsd fie
declaratpenku loate subprogrameld
derinitela
nrverur
acturagi
btoc,ca ln exemplulurmator.
cheie,,forts!rd',
Dclarallass face prln antet,urmatde cuventut
Droc6dlur br fonltdt,
t t r ilLn( ' E u s u rr r. ),
E 1! 6t u( , E u .u 8 t b ' )
2.2.5.Apelulsubprogramelor
Oetinilia 2.6. A apela un subprogEm,inseamnea-l lanaa in
oxocutare. Penirua puteafi apelaldincadrulunulbloc,un subprogram
trebuie
declarai la nivelul
blocului
respctiv.
2 .2 .5 .1 A
. p e l ulfuncliilor
in programul produsul"a
de mailos esteapelatio funcliecarecalculeazd
dou, numereintregi.ProgramultipSreltesumaintre 1 9i produsul
calculat.In
exemplu, gesiHest?:
valoarea
w.r D, x , y r lt r t egr ,
Dtodt 'xrv,
D,rl+D loll( x , y ) ,
ellt6 tn( D)
LISIT
AFEL IDENTIFICATOR PARAMETRI
FUNCTIE FUNCTIE
EFECTIVI
Flgura
2.3.Slruclunopnndului
oalerpr8zinla
aplur
fundioi
Manualde informaticipentruclasaa Xl_a
3l
2.2.5.2.Apelulproceduror _
datepana
acum
racinutire
prezenrarea
unliart
"*"'o?rl?,if,1"'J3.?ii#li?
insrrucriune
i;"1j."1,'J",113i",?lT3*:l"ffi"lxfr,,il!:lj;:::,",,"#H;,j
_rNTRucflUNE usrl
pco ceo une L-i IDENflFICATOR
Figuna
2.4.Strucrllra
insrrucliunij
procdute
2.Dupe
apol,sevaexecuta
instructiunea
cafeurmeaze
instrucliunii
procedurale.
2.2.5.3.Transmiterea
parametrilor
la apel
in ce priv9te
mecanismulde tran!
o,t*""ra
.
i.j"ip,ili,ii;ii;:il'
ffiI#"1THi
?j,ffiT"i':,l";;:fff
f ,:5":
> Parametdl
tormallsuntceitfecutjlnantetuj
subprogramului,
> Parametrll
eto vl suntceilreculilaapetut
subprogramului.
? vdzut,subprogramete
ln..:!jT_"r conrrne por tucracu vafjabitete
gtobajale
' orocurur,care definirra
ror.Atuncrcaroestemorivur
ngcesartparamelril? pentrJ ciie-s,lni
*r E 3, y r = 4,
8r|D(a.y,.s); rr!t!61n ( !u&) ,
( 2, 3. au ), i tEtte l n (s rs ) t
s E A
32 capitolul2:sfE]!gjg!s
t NL esle obl.galoriu
ca numeleparametrilor
lormalisa coincdacu nume,e
i paramelrilorefeclivi.
Figura2.5.
Slftaxaparametrilor
trimili
lanual de Informaticepentru clasaa Xl-a 33
parametriitransmiii ?
2.2,5.4.cum memoreazisubprogramele
3 | 4 | adresavariabiloisum
Laaldoileaapel,paramehiisuntz, 3, sv!,
2 | 3 | adresavarlabileisum
t, Observalll
Larevenifea
Tnbloculapelant, variabilelor
conlinutul mmorate
in slivass va
preroe.
/ Memorarea vorfi tratatela
dar acestea
in slivaare9i alteconsecinle,
polrivit
momentul (vezirocursivitateal).
prinvaloare
parametrilor
2,2.5.5.Transmiterea
Transmiiereaprin valoare se utilizezdatunci cand sunlem interesali ca
subprogramulse bcrgze cu acea valoare,dar in prelucrare,nu ne inlereseazSca
paramotrul
efecliv(celdin bloculapelant)sArqind valoareamodificatdln subprogram.
Astfel,se pottransmileprinvaloare:
Elt lD( t r )
writrr(n);
parametruln prinvaloare.
estotransmis
t ih programul
principal,
avemdeclaratd
variabita
n, careesteinitializatd
cu 1,
t Apeldmprocedura. La apol,se rezervdspatiuin stivd,spatiucare are
numeleparameirului
(decitol n) 9i estoinilializat
cu valoarea
mehoralAde
n a programului
variabila principal.
ln acostmoment avsmdoudvariabile
n 9i
ambelerotinvaloarea
1.
) in procedurd,
variabila (adlcdla vechiutcontinutse
! stoincrsmntate
adauge1). Evident,
estevorbadevariabtla
nemoraidin slivd,
+ Afigdm
continutul (ceadlnstivd),decisetiperegte
variabilein 2.
t La iesireadinprocdurd, a (dinstlvd)so pierde- adicdnu malare
variabila
spatiualocat.Prinurmare, 2 stepiorduta,
valoarea
t in programul
princlpal
setiperegte
continutul
variabilel
n, adicd1.
paramelrll
efeotlvlsuntvalollsauexpreall,caremailnteisovalueaze.
Exemplu:
Droc.alufe ros! (nr lntegE),
Larualde informaticA ntru clasaa Xl-a
3',Mr Ea+bt
dtil..a -b,
b.sln
$!tt.('s.' )t radlh(s),
clte ('y.' ), leadJ . n( y ) ,
Eile1 n(Dlo dl(d L! ( x , y ) , luna ( x , y ) ) ) ,
parametrllorprln referinte
2,2.5.6.Transmiterea
Paramehii prinreferintd
sunl transmigi atuncicandne intoreseazi ca, la
revenirea
dinsubprogram,variabila
transmisasd retindvaloara
stabllna
in timpul
executeril
subprogram
ulul.
I prinreferlntd,
in cazullransmitorii patametrii
efectivitrebuie
seli6 variabfle.
I in cazulsubprogramelordo lip procedurS,tfansmitoroa prinrelerintdeste
mecanismulclasicprincareacestoa intorcvaloricetrebloculapelant,
t Pentruca un parametru sd fie transmisprin relerinlaeste ncesarca
parametrul
tormalsdlie precedatdecuvenlulcheie "var".
) prinreferinle,
in cazultransmilerii subprogramut
relinein stivdadresa
va abilei.
I in acestcaz,ne putomirtrebacareestemecanismul princare,degipentruo
v variabildlransmisase relinoadresasa, in subprogamputemadrcsa
vaiabilanomal (nu indirecl)?La compitare, orice referintdla variabila
respectivd,esle'tradus5"
caadresareindireclS.
36 Capitolul
2. Subprograqe
Exemplu.Programul o procedure
urmdtorutilizeazE care interschimba
vabrile
relinute
dedoudvariabilo.
Acesleasunthansmiseprinreferinld.
var x,yrt [tegrt
Dlocedu lnterscbirb(var s.yrtrcs.r),
war !4:urgr,
@:.x; f lE r Y! { s ;
a !-2r y r ! 3t
intolschhb (r,y) ;
Mtt (x, . , , y ) ,
2. 2. 6.Var ia b i l el o c a l eg i g l o b a l e
+ Variabilelelocalesuntvizibiledoarla nivelulsubprogramului
in careau fost
declarate9i la nivelulsubprogramelor
definilein acesla.
Programul aldturattipdregtede doudori 2,
continutulvariabileilocalex. Dace am li
incercatsd tipdrimx din cadrulprogramului
principal,programular fi dat eroare de
comprlare.
E lt aln( x )
2.2,7.Creqeli
frecvente
1. Gregelioareapar la trangmltereatlpu lor nestandard
Beamintimfaptulca un tip esle standarddacaestecunoscutde mbaj(de
exomplu,l!tgr). In caz conlrartipuloste nestandard(de exemplu,tipulcare
descrieun vectorcu componentede tip !aal). lateo procedurascrisegregit:
Dloc . d l u r r (v a ! w ra rr.y tl ..9 9 t of r.al ),
ii'or'
Eroareaestedatddelaplulcetlpulnestandardal varlabilei
v estdEscris
Tn
listaparametrilor.
Programulva
daeroardeslntaxd.
Pntrua procedacorect,tlpulestEdscrisgeparat,ln cadrulprogramului
pflncipal,
printtE 6.
tlrE woctrlllqy 11. .99I o! !oal,
"i.:, ","..t,
!,!oo.dlu!. r {vat vrw.ol),
ii'cr'
.alcuLr 3,
ii'iiiii.r,.",
EroareaconstdIn laptulce in alribuirea"su'l!(n.1) r=Er,'au fost treculi
parametri.
Coreclste'
40 Capitolul2. SubprograBr
i't , in conlinuare,
vgmda un exemplupurdidacticde unitaiede prograrn
1x: numiE opER||tII. Aceastaconlinepalru proceduri:de adunare
scddere, inmuqire
9i impS4irods vadabilg
reale.Variabilele a 9i b surt
globalepenlruprogramulcare ulilizeazdaceastdunitate,iar variabilac poatefi
utilizal5numaiin cadrulunitSlii.In secvntade initializare
se citescvalorib
variabilelor.gib.
Unitateade programesteprezentat?t
ln continuarel
urllt drFlltl:tt
lqrldot.tLE
Drocodlur adur(a,brro.l),
Droc(trrl. scad(a,br!.al] I
wllt oln (6 r ! r2 ),
r ll! . Ln (c t3 !2 ) r
b.c!.t
c r.r/b ,
v rt!.l ! (o r !: I ),
cadt
{ r t r 61! ( rb !t ),
pentruclasaa Xl-a
Yanualde informatlce 39
2.2.8.Unitilide program
practicese lac aplicatiicuun numdrmafede programecarede
in activitatea
"rulteori suntde maridimensiuni. O preocupare constanida informaticienilor
esle
ae a pune la dispoziliaprogramatorilor instrumenleeficientede programare.In
acestsens, limbajulPascal olerd posibililaiealucruluic! unitali de program
unlt-uri).
lor ( 1r 0, t < r , t+ + )
( c dr < < r et ' < < j .+ 1 < < i I ri ,
c in> > v r I rl ;
,
)
v olal lor t 6r ( lrt v tt1 0 l ,l l c n)
( int !'aBlt.l,'l!n,
r or (i = 0 rt< Eri + + )
c@t<<vt Iit <<ndut
!
( ir r v [to ].D ,
c @ t < < tn _ f,
c ln> > n ,
c it 6 rc (v ,n ) t
aor t 6 r(e ,n t t
. c r t u (w ,a ) t
)
Programul
continotrejfunclii:clreEc, sorroz gi ttDareBc.
a La apel, cqtrclul ptognmulut estetansfent ta pima instrudiune a fundiei.
Dupe executarca funqiei, se rcvine ln prognmul prinbipal Ia pina
instuqluno carc urnoa2d celei de apel - ln cazuldo t4a se intelnegtoo al5
nstruqtune oe apet.
3 Cele trcifunqii au pul vort adice nu au vatoarcde rotut. Elerctumeaze
rczuftatul nlnternediulparametilot.
2.3.2.Structura
uneifunctii
in esenle,
o funcliesteatcdtuna
dinl
t Antot . acesta conline nal multo intormatiiimportantenocesare
compilalarulul
numelefunqiel, stapanmelrlbt fomati,tipulrczultatului.
Structura
antetulul
ste:
ttD aur.(l1,!t. Dr!.'l trltor lorflrIt)
Lislaparamelrllor
formallest
deforma:
Darr$t!rr1, Drrdrtrur, ..., Dar.rntnr!
Existdgi posibilitatea
ca lista parametrilor
formalise lie vlde. Fiecare
parametru
arelorma:
tlD rume.
t O.lnstrucllqnecompual- aceasta
cuprindo
declarEiile
variabllolor
tocalo,
propriu-zise.
9iinstructiunile
Poateli tipal uneilunctii
ortcetipdedatacuexceplia
masivelor.
de informatici ntruclasaa Xl-a
ple de anlete:
j,ut Eurna ( iat .. h! b) - funcliaSe numeqteBuna, returnoaziun
'ezultatde tip tnr 9i arodoi parametrlformalide tip tur!, numitia 9i b.
?ota r(i!r u, floar vl20l) - tunctiase numegter, estede tip void
(nureturneazd rezultalprinnume),are doiparametri formali,primulnumitn, de
:rp int, al doileanuniitv, de tip floatr (un tip care felineadresede vectori
cu elementede tipulfloat).
Trebuio
catipulexpresisi
sdcoincide
cutipulfunctiel.
LalntAhirea instructiunii
r6ru!|l, dupdatribuirea
valorii,
executiafunclioise
)ie 9i se revinela luncliacarea apelat-o.in absenlainstruqiunii
r.tunr,
ulrafunctieise incheiedupdexeculia uttimeiinstrucliuni.
in acestcaznu se
rceniclo valoare,
O luncliepoateli apelatitdg sinstegtor(prlnnume9i listaparanetrilor
darpoatefi incluse
efectivi), 9iln cadrulexpresillor,
caz?ncare,la evaluarea
expresiei
esteaplatd. Aceastd ultimeformddgapolnuestevalabiEin cazul
funqlibrdelipvold.
*lacrudto<tosr!ar.hr in programul
algturatesteapehteo
tunce car calculeazd produsula
lnt rlod (1n! x, tu! y) doui numefeTntrogi.
( !6trn xty,
Apelulluncllels-argalizat
dlnIntoriorul ,'1+9rod(rr,y),.
expreslgi:
Oboervalll
in cadrulexprosiei,
apelulestsun operand.
El intrdln calculcu valoarea
returnate
delunctjo.
Dupaapelulfunclieisecontlnud
evaluarea
expresiei.
La apel,ordlneade evaluarea paiamtrllornu elte dfinlte,Deexemplu,
daceapeldmfunqiar6sr asdel:
cBt(2-3,2+31,
2.3.3.Declararea
variabilelor
+ program
Fiecerui i se alocatreizonodistincte
in memoria
internein carese
gAsescmemorale programuluil
variabilels
Figula2.5.Clotrstzon6inmmorlatnte.ne
Oe asemenea, exlstdposibltitata
ca variabilele
s5 fie memoraleink.un
anumltregistrual microprocsorulul.
in acestcaz mpulde accesla astfelde
variabile
estefoartemic,decis6potobtineprogrameoptimlzate.
) in general,
o variabila pfln4 atrlbute.Acesta
secaracterizeaze sunt:
. claaade memorarci
. vtztb ltatei
. duralad vlall;
. tlpulvarlabllel,
singurul
pecareI,amstudiat
peni Tnprezenl.
r) Varlablleglobale
tnt !o
( rF3 ,
c4 t<<4,
)
cou!<<a<<nal1r
!(),
l
pot
a Si b suni globale.ln astleldo cazuri,variabiblorespective
Variabilele
i utilizale de loale funcljib carc urnead ln lextul surse declaftliei vaddbilei
?spectlve,Dinacestmotiv,astlelde varlabilese numscglobale.
t
Jr La declarare, globalosuntinilializale
variabilele cu 0.
a
Alributele globalesunt
variabilelor
B) Variabile locale
l; Variabilelo
declaratein corpulfunclieitt'!tn( ) sunt tot tocale.in programul
y urmdtor,variabilelo
a 9ib sunttocal.
Exemplui
( lnc a.3,
)
D!1n ( )
( ltlt D.at
'
1. Clas. de mmoraroa variabllelorlocalesle tnplibitsegmentulde gitue.
Exlsleposibilitatea
ca acesteasAlie alocatE
ln registrele
micropiocesorului,
cazin
caredeclaratia
lortrebuleprecedatil
decuvantulcheie"iostBrer'.
Exomplui
r.slrt.! lar b'4,
Variabllele
localenu suntinlliallzat
lmpllclt
cu o. in lpoteza
ln careacestea
nu suntinlllallzate
expllcltd ptogramator,
rellno valoareoarecare,numila
valoarerzlduall,
2. Vl?lbllltatea
varlabilelor
localestela nlvelul
bloculul
in careaulosldeclarate.
ln funcliaurmeloare am declaratdoudvariabile de tip j.rr, numitob 9l c,
Variablla
b est6vlzlbiHla nivelul
lunqioi,darvariablla
c estevlzibild doarla nivelul
blocului
ln carea lostdeclaratd.
Exmplu:
cout<<a<<ddll;
I
c4t<<a < < er dlt
,
Inprogram,
seali9eaza
continutulluturor
aceslor (3,{. s).
variabile
I
t Observatii
/ (se potaccesa)
in cazulin care,inlr-unanumilblocsuntvizibile maimulte
variabile,toatecu acela$inume,dar au domeniide vizibilitate
dilerite,se
acceseazvariabilacu vizibililatea cea mai mic5,De exemplu,dacAin
programul anterior
se tipdrsgto a dincadrulsubblocului
variabila funcliei,
so
tipdregte 3, pentruct acestaeste conlinutul
variabllei
cu cea mai micd
(ceadeclaraie
vizibilitate in subblocul
respectiv).
/ Existdposibilitatea
ca,unciclufo! sdconlind
declar4la
ungivariabile
locale.
ln secvenlaumdioarese calcubaasumapimelor{ numerenaturalo.
j. estodeclarata
Variabila (9iinconsecintd bloculror:
vlzlblE)doarfn
t nt t . 4, s -Ot
t or ( t nc t-l rt< .n r li+) s r.t,
2.3.4.Transmiterea
Darametrilor
Agacumamaralat,parametrii carese gdsescin antelullunclieise numesc
parametJl
formall,iar cei carese gdsescln inslrucliunea
de apelse numesc
paramelri
electivi.
. PrivitiprogramulurmAtor.Acestacontineo tunctiecarecalculeaz6
suma
L. a dou: numerenaturale.
#irclude <ioEt!s.h> Parametriiformali sunt a 9i b.
in! rl:M ( lEl a, in b) Funolia este apelaid de mai
mulleori. Parametrii
eJeclivi
s!nl,
l pe rand:
) 2, 3;
( 2, 3 ) < < 6nd1;
) 2+1, 3-L*2;
co ut< < Bl: M
co ut< < s uM ( 2+ 7, 3- 1* 2 ) < < eDar l i )c,d;
cout<<s\:M (c, il) < <enitl,
co ut< < ellG ( 1. 9, 3. 3) < < 6ndl1,
l
6lID(2,3) - paramelrii
lormalisuntexpresiiconslanlede lip inlreg;
, parametrii
In cadrutsubprogmului, lransmi$iqi memoraliln stivdsunt
vafiabile.
Numeleloresteceldinlislaparametrilor
formali.
t Variabilele
obtinute parametrilor
in urmamemorerii lransmisi
suntvariabile
tocate.
latd,doexomplu, in stiveparametrii
cumsuntmemorati in caarlprimului
apeli
,"'-.-----*Ef1]
& Observa!il
La revenireafn bloculapelant,
continutul
variabibbrmemoraie In stiv6se
pierde- dupecum9tim,duratadeviataa variabilelor
localeestelocala.
Memorareain slivd are qi alteconsecinte,
dar acosloavor fi lratatela
polrivt.
momentul
Existddoudmecanisme a paramotrilor,
de transmitere ttanamltereaprln
valoale9l lhnamltereaprlnrefrlnld,
Acstea
vorfi lratalein conlinuare.
cdt<<n<<ndl,
l
( tn! n.lt
t es t ( n) t
cdt <<D<<ndt ;
)
t in rrtn( ), avemdeclarate
variabilan, careesle initializaucu 1.
t in lunclie,variabila
n esteincrementald(adicala vechiulcontinutse adaug51).
Evidenl, estevorbade variabilareze atain cadrulei.
t Tipdrimconlinutulvariabilei
r (ceadinstive),decise tiperegto2.
{ t 6s t (3 ),
l6sl (3 + { i 5 ),
I
tE^-, ln progtamul
urmator{un4|avactor inilializeaz6veclorullransmlsca
(-^.. patameku,iatin natE( ) seafiseaze
rezultatul:
f,Irctuale <toslr6e.ht
v o: lal v e c to r (tn t x t1 0 1 )
( lor { tn t I= 0 ri < l o rt+ + ) r1 1 l .l ,
l
{ t nr Al to l ,
t in cazultransmiterii
prinreferinla,parametrii
efectivitrebuiesd lie referinlela
variabile.
Programulurmdtorutilizeaza
o functiecare interschimbevalorileretinute
ax: de douevariabile.
Acesieasuntlransmiseprinreferinld.
*include <tostrd.r!>
void intrEc(lnt &ar irr &b)
2.3.5.Definirea
gi declararea
unuisubprogram
Degiaparentasemanetoare, coledouenollunidlford.Bunainlelegore a lor
-e ajulesa evildmanumiteerori.I\,,laj
muli,aceslonotiunisuntutilizate
de orice
knbajdeprogramafe,nunumaiin c++.
Definilia
unuisubprogram
linelocSidedeclar4iel
#itrclual <iogtrea.h>
votdl s1o
( cout<<"Eu aunt al'<<endtt
)
r c i (l s 2 ()
{ s1 () r c o t< < " Eu s u a r.2 !< <endl l ;
)
( 3 1 (),
a2ll ,
)
{ rt0 t
)
{ !1 O ,
l
r c Id s 1 ( )
{ .2 O, c o u r< < " a u .s t s l t' < < 6ndt1r
!
woial 32 ( )
( sloi c o u r< < ' Eu E s r a 2i < < n(l l ,
I
vanual de informaticdpentrti clasaa Xl-a
2.4.Aplicatiicarefolosesc
subprograme-
Z Rezolvare.Programul
esleprezentat
in continuarel
ll (:.<-1) !6tum y,
! f a<-1 lhe n f:ry 6116 it (Dr) r.tuh 6/y,
116 it x>l lh n ! r ! 6/ y l.e retuft y / {l +x *a ) ;
r.G f r ryl (1+x*:.) ,
'' Varlanta
iisbal Ci+ , '
i' , iit , _veitanir :
va! n,n:rEEcg.r, *tn.lual6 <iost!u,h>
lsctiotr @!tlc (!, n: intgor ) lnt (tudc ( tDt D, tnt
!lrretft
i.! (a>nl rl-=rt
6l!. n-4,
it !>n thn D!4-n
o 16 n: - E- b, )
co!1!<<rr,, ci!>>!,
El!. ('h=' ) r r . aun( n) t c o u t <<n r r , , o t n r >n ,
Ei!6 ('a=' ) r r adln( n) t ca=(@dc (!, a) t
Ette1tr(dntlc (n,n) ) t c@t<<c!<<i n<<drn/c[,
Elteln(Dh altw cMatc (&.n) ), l
/ exerctlit
l. Ges(idoudmotivepentrucareparametrii crrrlalc
funcliei trebuiesafietransmigi
prinvaloare9inuprinreferintd.
2. Scrietiun subprogramcIltmnccarcsa returneze cel maimicmultiplu comuna
doudnumerenaturale. Stabilili
loculundetrebuieintegrat acestaln programuldat
programul
9amodificati principal
astfellncetsdseutilizezesubprogramll cerut.
3. Cale exprsiidiforitecare au ca rzullalcel mai mare divizorcomunal
numerelornaluralenenula, b 9i c existd?Tnoriceexpresie
se utilLeazenumai
apeluriale a, b 9ic, Deexemplu,
funclieicrudc aivariabilele trelexprosil
sunt:
cenilc ( crmdc (a,b) , c),
c m ld c (c l ' u d c (b ..), c) 9i
c r d c (c ,c n l c { a ,b ) ).
D Apllcatla2.3.Secitegte
unveclorcur componente numerelntregi.Seceresd
setipareascd comunalvaloilorrelinute
celmaimaredivizor devector.
EI Rezolvare,Dispunem dejade o funcliecarecalculeaze cel maimaredivizor
gi
comuna douenumere am testat-o in programul anierior.Penhuvarietate,de
dataaceastaimplementdm o funcliecu algoritmullui Euclidpentrucalcululcelui
mai maredivizorcomun,algoratm prinimpe4iri,nu prin scederirepetate. Cu
ajutorul cel maimaredivizorcomunpentruvalorilerelinutede primele
ei calculem
doudcomponente 9i memordm aceast5 valoare c. Apoi,penhufiecare
in variabila
dinhecomponentele urmetoare,se calculeazdcel maimaredivizorcomuninke
valoareacurentdmemoratain c ai cea rqinutade componenta curenula
Colmaimaredivizorcomunvafirelinutdinnoudec.
veclorului.
Manuqlde informaticd
pentruclasaa Xt-a
) f!ll6 ( r t =o )
cout<<narn, cta>>[,
E t ('D-.), ! ait t n( r ) , cd!< < nc6D6nte wcto!r
E.t( rcoqronoat6 wodto!! ') t f o a ( I - 1 ; t <- n r l . ++)
fo ! lr.1 ro E do ! s d( v [ t ] ) ,
c ' r c & dc ( v t u, wI 2 t ), clcurdc (vIlt,wlzl ),
tor l!- ! to s (to l o r {L E 3 r I <. a r l ++)
c r - c eii. ( c . v I tI )t c.ce.rc{c,wttl ),
/ exetctltu
h loculsecvenlei
c < - c @dc (w l l t,v t:: )
tEntlu i!3,n eacutl
c + c e d 6 { a ,| ' ttt }
rfA.tlt pnts
dorimse utilizem,
maicompact,
seavental
p.ntru ill rn xe4ttr
c cmatc(c,vtr.l )
.ftrrlt pentlu
Careestovaloarea
pecartrebuie
sdo aibavariabila
c inaintea
acestei
secrrerjla?
u Apllcalla2.4.T unghlspsclal. S citsscdouenumerenaturatem 9i ! Inal
micldocat10.Se cereca programuldvs.sa afigeze
un triunghi,
dupdregutilepe
crelededucgti
dinexemplele
urmdtoare:
I 9
456 311 5
tB9 t 5 7 I9
2 !a 5 6 12345
7 4 9 123 67891:
34567a9 Junior Division
58 Capitolul
2. Subprograme
)
l
? exerctlri
1. DupAapelulttpar(n,n) din programul principal,
dacase adaugdo instruc-
liunecare afigeazd valoarea lui r, ce valoareestimalicd se va tiperi?
2. Cum kebuie si arate definiliasubprogramului suc, dace in subprogramul
ttDar, in loc de nCsuc (n), se ulilizeazd instructiuneasuc (n) ?
3, Cum putem delini subprogramulsuo astfel incat secventade afigafedin
subprogramul rigar sa fie:
pentlu i-l,re rocuti
D nt 4 j= 1, i 6x dt i
Ec r i Euc lr )
6cr16 EOI/IT
vanualde informaticA
Dentluclasaa Xl-a 59
3 exetcitil
1. Modificaliantetulfuncliei lnvrg, transformandparamehuln in parametru
transmisprinrcferinFSiurmdritiefectelemodificerii
efectuale.
2. ModificatiantetulfunclieilDvrs, transformandparametrulr in parametru
kansmis prin referinF 9i testali proprietatea de palindrcmfolosindcompararea
s=inw.!s(a) in loc de llrverE(n)=n. ExDlicatide ce aceastemodificarenu
reprezintd
o corecliea eroriiapdrute la cerinla1?
3. Un numdr naturaleste auperpallndlomdacd este palindromatat el cat 9
pdtratulsdu. Scrieli,pe baza programuluidat, un programcare listeazdtoate
numerele cu aceaste proprietate
aflateintredoilntregia9ib (a<b<32000).
Exemplu:pentrur-25, se afigeaze
seria
Junlor Dlvlslon
EI Rezolvare.Sumacuburilorcifrelorunuinumdfnaturalestecalculatdde functa
Eurn!.Numeruln (citit)va i memofatde primacomponentd a vectorului6e!i..
Apoi,sumacuburilor sale,de componenta a doua,sumacuburilor
numdrului relinut
de a douacomponentd va fi relinutede a treiacomponentd,
S.a.md. Dupi ce este
memoratdo valoare,ea estecompafate,pe rand,cu cele obUnuteanterior.Daca
este regdsitd,se tipdregtenumarulde termeniai seriei Si seria propriu,zisd
FunctiaEuinacalculeaz6 sumacuburilorcifrelorunuinumer.Functiaesr verifice
dacevaloarean existddejain Siruls ,omat din IE componente.
vanual de informaticdpentru clasaa Xt-a
cttn rcd 1 0,
)
!!=. illw 10
,
rrc E t (tons E /i nt st100l ,
itrt 16)
lucttod 6st(E:loglnlrw.E .:vect
k!htalor) rb61.n, fo r(tE0; i < kr I+ + )
l f (s ti 1E .n) rtu:! o.
l
lor t lil to Is a to
I f 6ttl.a tn on at , . ! . ls ( c d t< < ,n rr, c:Ln> > n,
12 311
9 138
62 Capitolul
2. Subprograme
)
c t l6s c ( r,l tD tt, c o l o rn e ) , )
for {t. 1 lo t:Llll alo
propuse
Probleme
a) G(x)= 5ln(xFcos(x),|ooe(2*x);
b) H(x)= 10*{x}(amnolatprin(x} partea
fractionare
a luix).
{|anualdeinformatice
Dentruclasaa Xl-a 63
3 Indicalie.Utilizalisubprogramele
predefinite
Rardon SiRddonize.
Exemplu:
r!3i x1511;x,'4; x3=3.Programul
tipdreqiei
(r+d)' =I.,f,
11. 55 se tipdreascbtoatenumereleprimeaflateintre doi intregicitili.Programul
daceun numaresteprimsau nu.
va folosiofunctiecaretesteazS
12.Scrieliun programcaretipdregtenumereleintregig6siteintredouavaloricitite,
numerecare se divid cu suma cifrelorlor. Programulva utilizao funclie care
returneazdsumacifrelorunuinumir inhegprimitca parametru.
13. se se scrieo procedurd
carepermutddoudliniidateale uneimatricepehatce.
'14.Scnel o procedurdcare Interclaseazd
doi vectoflsortaliqtiindca ace$tiasunt
ordonafldescrescatot
15.Se citescdouepolinoame fiecdruipolinomse citesc
de gradelrl9i r (coeflcienlii
inlr-unvectoo.Se se afigezecoeficienliipolinomului sum5 9i cei ai polinomului
produs.ln ambelecazurisevof utilizaproceduride 6itire,adunare,inmullire.
16. Se citesca valoria, b, n (a 9i b reale,r intreg).Se ceresd se calculeze
valorile
uneifunclii!, definitepe intervalulta.bl in n+1 puncterezultatedin lmpedkea
inlervaluluita,bl in n pddi egale9i sd se afiqezecea mai mare d ntre aceste
valori.Funcliar va fi datt subformaunuisubprogram de tip functie.
17. Un numil ralionalesterelinutprin utilizaaea
unuivectorcu douecomponente.
Scfieli subprogramelecare adund, scad, inmullesc ai impart doua numere
ralionale.Subprogrameletrebuiesd returneze numarulsimplificat.
18. DeolEn tdunghlular. Triunghiulde mai jos esle generatde un algorilm.
Descoperitiacest algoritm9i folosili-lpentrua scrie un programcare citeqte
numirulnde liniisigenereazetriunghiulcu n liniicorespunzdtor.
1
232
34543
4567654
56?898765
679901098 7 6
?89012321 0 9 8 7
JuniorDivision
nsrLalde informatic{ pentru clasaa Xl-a 65
'Itf.Je afigeazdprogramulurmetor?
r 5 5r b) 5 5; c) 6 6t
F- Ce afigeazdprogramulurmdtor?
plocdtur t (B:tntecqr) i
a !=a+ 1, wr t r lD( a ),
r{r(f( f ( 1) ) ) )
b) {t c) 5, dl) eroaredesintaxe.
programul
21.Ceafiseazd urmdtori
FagcalI ,, ll l
vartanlq
#lnclua!. <lortro.t!. h>
fsctloD frlnt!'elr
tD l !o
'
a) 233, b) 23i ct 32r d) 232.
66 Capltolul2. Subprograme
VariantaPaacal
v ar a, b, t , J , t t tn t s t, *tlcluat <tostre.h>
DrccaluEq inc!@sl (waE x.Irts6r);
votal ticroenr(itrr& a)
( a++t )
r r dln( a) ; r a d l 1 n (b ),
)
lor i .-1 to a d o fot (i = 1r I< = a;t+ + )
f ot j != 1 !o b a l o for(Jrt, J< = brl + + )
tncrdnt (t) ; tncrmnl (t) t
lor l! . 1 to I do !o! (I= 1, i < -arL+ + )
fo ! J!=1 !o b- l t lo for(J11, J < br j + + )
fo! I:.1 ! o I do
tncrdlgnt (!),
de limbajpfeterate,
23. Pentruvarianta stabililicaredintreurmrtoarele
antetede
subprogram suntcorocto:
Drocdu! D(nrlnt69er, var vol d D (Inr n, t4t& v1101)
wt a rl a y t1 ..1 0 1 o f i D !.s e r),
b) !wc!r.oD D(n3lnl6g!rvar
24. Penlrufunctiiledefinitemaijos,caredintreafirma(ii
estefalse?
1) l
' C++ l
Vailanta
t unc t ion f (x rr6 a l ,) r! a l , f!,oat t(fl oat x)
( i f (a< 3) rerurn 3.x-1,
1f *< 3 t h 6 n !..3 ' s + 1 .1s reluE a-1t
6 1 a 6 fr.x -1 )
rtrl] i
Cac (n1, 12 ! Inlegr)
i longiDl,
elr n za tlnhec ! ,
27. Se consideradeciararile
urmabare:
in care:
r C o l cEt ( x , Y . a. b, ? ,,9 ),
El i h i n ( z . D) t
I El i n i n (x , a) , E lir d n (Y .b ) t
co a ca t ( X . Y . a, b. z .D ) t
c EL i n tr ( Conc lt ( t ( ,r, a ,b ,z ,9 ),9 1 ,
d El i xn i s ( x ,
a) t E lin i n (Y ,b ),
R a (x, Y . a. b. z . 9) ,
?8. Se considerdsubprogramulurmdtor:
k, !2 rn_1r I r - 1,
(fo r( J E tr J< t l k-2.t+ r) /2, J+ + )
A. Dacdr=8, catecaractere
"*" se afiseazdpe ultimulrandtipdrit?
a) 8t b) 15t c) 1 5 r a) L7.
C.Dacar=20,catespaliisescriuinaintea
primului ".",pepenultimul
caracter rand?
.) 10t b, 20, c) 19, d) 1.
29.Seconsiderd
subprogfamul
urmator:
A. Careesteconlinutul
luiv dupdapel,dacalnainte
estev. ( 1,2,3,4 ) ?
a , v- 11 ,,2,3,4rt b't vc ({,3,2,1., I
c) v= ( 0.1,5,10), iU vs(0,{,5,9).
B. Caretrebuie
sefieinilial luiv,dac5dupdapelestev- (1,6,10, O) ?
continutul
a) v=t2,4,6,4) t b) v= (1,6,10,0),
c) v= (0,10.5,1), it) v=(1,9,3,2).
30.Se consideresubp.ogramul
urmetor:
funcliaapelatepenhufiecaredinkecazurileurmatoaG?
A Ce valoarereturneaze
.) h E 3, n- 3, A - ( 1 ,2 ,3 ), B -(1 ,2 r3 );
b) n = 2, n= 3, B = (L ,2 ,3 1 i
c) n !2, nr 3, ^=
A - (( 1
L ,3
,2 ),
), B -(1 ,2 ,3 );
d) n :1, nr l, Lg( 1 ), B E(1 ).
.) 3; b) 5:
c) nu existeo astfelde valoafe; d) 2
a) 2 9irespectiv3: b) 2 Sirespectiv 5;
c) nu existdastfeldevalorii d) 3 9i respectiv5.
31,Scrietisubprograme
pentru:
A. Calcufuf
valorilor o sfera(afieji votumlpe Itazavalortirczei
ce catacler|zeazl
saler.
B, Calculul
valorilor
caracteristice
aleunuicon (razabazei,generatoarea
g indltimea)
pebazavaloriivolumului
conului9ia arieisale
laterale.
C,Oblinerea descompuneriiin factoriprimiaunuinumernaturat n.
D- Ordonrea componentelor pozitiveale unui gir de valori,valorilenegative
rdmanand pepozitiilelorinitiale.
E, Determinarea uneisubsecvente palindromice a unuigjrde numerenaturale de
celmultdouacifre.
F. Verificarearespectariilimiteide vitezdpe un sectorde drumpentruun vehicul
carelltcarcurge 9i careestetnregistrat la diferitemomente de timpde o camerd
vidoo,Setransmitvilezamaxime admisd v, numdrul decamerevideo& distantele
fatade punctulde inceputal sectorului de drumundesuntamplasate camerele:
dr,arr,...,d,
ii momentele la cares-a lnrogistrat prin dreptul
ttecereamobilului
fiecdrei
camererr,t.,...,t".
Rispunsuri
1 9 . d) ;20 . c );21. a);22.bt;23. c);24 , d l)i2 5 . b ), c ): 2 5 . a ):
30. Indlcalle:func,tiareallzeaza
compararealexicograftc5 a doi vectoricare retin
numeronaturale. A"a) 0:b) -1:d) 1i d) o; B. c); C. b); O.d).
Capitolul3
$iruride caractere
. 1 .C e neralitati
din plin 9irurilede
Prografielenu lucreazenumaicu numere.Ele utilizeaza
se poateciti
lorar ti loartegreuca,de exemplu,unprogram
. In absenta
afiganumeleuneipersoanesau numeleuneilocalite$.Ne putemimaginaun
ce caractereca unvectorin careliecarecomponenle re$noun caracler.
Dupd
seStie,tiecarecaracter
estememorat prinutilizarea asctr. 9irurilede
codului
pot fi citile,afigategi prelucratecu aiulorulunor subprograme
puse la
ziliede limbai.
de caraclere
Sirurile auaplicalia
uriage
ln viatareal5.St vedemcatevadintre
3.2.$iruride caractere
in Pascal
3.2.1.Noliuniintrod
uctive
Poaieati observatcd, paneln acestmoment,nu am msmoratcuvinte.
Acestea au fostdoaratigate.
in Pascalse poatelucracu ugurintd
cu ele,datofitd
fapluluicilimbaiul
esleinzestratcuunlip dedatespecial,
numit6tri.ns.
Detlnllla 3"1. O succesiunede caracterecupfihselntre doud caractere
apostlof se nume9te9rr de caractere.
7 I p u r a s
tlol rtll rt2l tt3l tt41 ttsl tt6l tI7) tt8 1- - - - ' tt2 ssl
t r!rIel[ra sr,
lor t t. 1 ! o n alo M t l6( t lt ) ) t
t t r ' t oDu ra a | ,
t 16l t r t I t,
r lt (t) ,
! tr rr4Nra s r t
r ir ( z) ,
1 11 6( r ) ,
iii 'o*"oro*',
ln astfeld cazurise ttin numaiprlmelcaractere,
atateacate pot li
memorate.
Inexemplu,variabila ,DANS,.
r relinecuvantul
am lnvelat,caracterul
. _ Qypa_c.um blankse memoreaze ca oricarealtut,pin
codulsdu.Prinurmare,o variabibde tip strtns poateretinemaimultecuvl;ie.
pdnunulsaumaimulteblank-uri.
separate
ExemDlu:
vrf nt,et rrrlns,
i',-r. 'ron z"r,"rra,r
in concluzie,
prinutilizarea
variabilolor
de tip srrlns avemavantaiul
ci
putemadrosagkulde caractere prinuflltzarea
atetln ansamblu, numelur
varlabllei,
cat9ipecaractore,
prinutilizarea
parantezelor
drepte.
Acoslanuestesingurulavantaj.Limbajuleste cu procecturisi
inzestral lunct,i
careugureazemultlucrulcugiruri16
docaraclere.
3.2.2.Concatenarea
lirurilor
Pentrua concatenadoue girurlde caraclerese tolosesteoperalorul,+,.
Operatorul'+ , estebinar(adic5are doi operanzi)9i poateaclio;a a;upradaltor
de lip sking. Ce intefegen:'prin concdtenarc?
pentruclasaa xl-a
tB.ual de informatice 77
! .='aceElri
z .- t a q91u, ;
E t- r+zi
dit6 1n (t),
r programul doudgiruridecaraclere(t:-t+zr):
Et5 se concaleneazd
. t relineqirul'acst,;
variabila
. variabilaz retinegirul' xengru';
. prinoperatia(t+zr) se oblinegirul,acBt 'rlq)1u';
. giniloblinutesteatribuilvariabilei
r.
I Observalll
3.2"3. Compararea
lirurilor
Oricatar pdreade curios,shurilede caraclgrepotfi comparate.
Astfel,doud
Siruride caractere(nolatea 9ib), se potgdsiin unadin relatiilo:
. a=b - celedouegirurisunl
egale;
. a>b - girulaestemaimarodecatgirulb;
. a<b - girulaestemaimicdecai9irulb.
Capitolul3 - iruri de caractere
+ Dacen<a, 9i in urmacompardrii
primelorlll caracterea rezultategalilate,atunci
.<b (b ar maimuliecatactere).
+ Dacdn>n, gi in urma compareriiprlmolorn caracterea rezultategalltate,
atunciarb (a are mai multecafactore).
+ Dacen-n li ln urmacomparddituturorcaraclerelor
a rozultalegalitate,atunci
celodoudqirurisuntegalo(a.b).
ExmDlel
. ar'abc,, bE,bacrft. Aluncia<b, pentruce alll estea 9i are codulmai
mic decetb t1l careestob.
. aE'abc', bc'aba'. Atuncia>b,codultuialll esteogalcu codulluibllt,
codullul at2l esteegalcu codutlui bt2l,iarcodullui a[3t estemaimare
decetcodulluirrI3l.
. ar t abc . , br ' alrca' . Aicirn=3,n-4. Aluncia<b, codullui!t1l eslo eqalcu
codul bt1l, codullui at2l esteegatcu coduttui btzt, coduttui;t3l
'ui cu codulluib I31 9i n>Ill(girulb are maimullecaractere).
esleegal
fo!i!=ltoDa lo
rc.dlln (v Iil ) ,
lnw != f als E;
lor I t. I to D-l alo
tt v lt l > wI I + 11 ! h*
b6sln
! . v t t l,
v' ! lt
El : . v lt + 11,
v t l+ 11 ! = ! ' ! nt
r 4v r i r dt
eDd
Dofinitia3.3,Prinlunglmeaunui9irde caraciere
Tnlelegem
numerdde
cafdctefeoe carcaceslale contin6.
Ei(emple:
. Sirul,tt|!M' are lungimea{;
. Firul 'n'In! ' are lungimea5 (9i blank-ulestecaracte4.
renlruaflarealungimii
unuigiravemdoudposibilitdlil
lunctieiLengrh, carearelormageneralil
1. Prinulilizarea
f un c tl o r l e n g th { S ! Stl i n r) r Integ!,
e Exemplede ulllizare
a) vera: atrlngt
c! lnteger,
5 :- 's ler t , t
c :- 1n9! h( a) ;
!cl! o( r a= r o. d1n{ ! ) ,
').
{rt!61n( rLqql@. shulur. a st6 ',
rELteh ( ! lursd.ed slrulut a 63re ,, ordl (atol )),
3.2.5.Subgiruri
Dellnitla3.4.Fiinddatun9kdo caractere,
prinsubglral seusoinleleg
un Slrde cancterccorsecutyecarese rogesescln girulinilial.
Exmple:
. girul ' harnLc ' are ca subgirgirul
'!nt ' . Acestaincepein poziliaa treiadin
girulinilial(3 caraclere);
. $irul .n $a' are ca subgirgirul ,IIA'. Observemlaptulce subgirulaparede
doudori- lncepend 1Si 3. prnurmare,in cadrulunuiSir,
cu poziliile r.rnsubsk
poateapergade mai multeori.
. 9irul 'hahic, nu are ca subgirgirul ,rnLt', chiar dacd primetetre
caraclere(rnt) se regesescin girulinitial.
vanual de informatici pentru clasaa Xl-a 8l
Eunctii
ceaclioneaziasupragirurilorde caractere_
Exisid mai mulle procedurigi functiicare aclioneaz asupra girurilorde
Acesteasuntprezentate
:aractere. in continuare.
> Funcliacopy arc rolulde a extrageun subgirdin cadrulunuigirdatl
fuction copy ( E: strlnsr inceDut, lusfin t irt6ger) : Etlins,
-n0e:
. variabilaB (detip srfins) - contineSifuldincarese lace extragerea;
. i.ncelNt - relinepoziliade inceputa sub9iruluicarese extrage;
. lunsin - relinenumaruldecaractere carese extrag,
Se scriu,in ordine,urmdtoriipafamelril
. Eubstr " sub9irulceutat;
. sl! - girulincarese lace ceularea.
Funcliareturneazd:
. 0, dacanu a fostgas subgirulceruti
. poziliade inceputa subQirului,
in cazulin careacesiaa fosl gesit.
> Procedura
dbl.r. are rolulde a gtergsun subgirdin cadrulunui9ir dat.
Pentru eaarecaparamlri,
aceasta, in ordins:
tloo.dlur. tt l.t.(vrr rr.!: .trhgr tlillc6, n!_crr ! lntgr),
unde:
. sl! - variabila giruldincareselacegtergerea;
carecontine
. primului
rnattc. - indicele caracter alsubgirului
carese9lerge;
lrerual de informatic{ pentru clasaa Xl-a 83
E efiolu:
Programulurmeto.citogleun 9ir de caractere intr-ovariabiEde tip srrisgf,
rLrniiea. $iruluicitil i se glergesubgirulcareincepoin pozilia3 9i are tungimea2
rsui caractere).De exemplu,dacevariabilaa retlnegirul 'abcd6,, se afiseaz6
de la qirurila valorinumerice
3.2.6.Conversia Siinvers
Fiegirul,123'. Evident, acesta estodiforitd numerul
123.Dupdcum9tim,
qirulocupd{ octeli(nu uitali,primuloctetrlinlungimoa). Numdrul123,dacS
estememorat de o variabilS delip hrs6!, ocupddoiocleligiesterollnutin cod
complomentar. Limbajul dispunededou, proceduricare realizeazS
conversiade la
valorinumerice la girurigiinvers.
> Procedura
str areroluldea transforma
o valoare Tngir.
numoric5
pr oc d u r Str(x Ir IJ g tt zec ,1, va! grB tl hg),
unde:
. girulceurmsazA
. - oonling a ficonvertlt;
. vrlhbth-nun llor - variabila
de lip intregsau real careva
retlnerezultatul (valoarea
convrsll numerice),
. co4-.r - variabllid tipInlreg,Dupeconvrsle, aceasta
va retine0
dacl convergla
a ruglt
sauo valoare de 0, ln cazcontrar.
dlforltd
programul
Sdanallz6m urmdtor:
vrr rr rerl.ag,
x , . !r h !.r.!,
Programul
citegteun 9ir d caractere
carestoretinulln variablla
de iip
.trlat r, Seincearca conversia girului
cStreo variabile
dotiptnrogor. in cazd
Tncaretentativa
a reusit,se aligeazA corespunzdtor
mesajul 9icontinutul
variabilei,
numaiunmesajprincarseanunldfaptulcAtntativa
altfelseaflgeaza a e9uat.
l|rral de informaticd
pentruclasaa Xt-a
a
Observalii
t
. Dacd girul de caracterecilre este precedatde un num6r de blank_uri.
conversiareusegte.
Exemplutgirul ' t2 3 ' so poaleconverticdtrevaloarea123.
*trll.rn( j. slnt
' lntroauc.r ' ),
eal (rtr. v.torro, .!oar.) r
vA! f : t . at i
a: dr r lng12l,
b: gt r dr gt
aa al9m ( ! , t ! l, alalt ) t
rB 6t ( f ) t
ra dt ( f , r ) ,
wrtrtn(a);
!A at ( ! , b) ;
EIt. lr ( b) t
clo s . ( l) ,
3.3.giruride caractere
in C++
3.3.1
. Ceneralititi
Am invStatfaptulcd o constantd de tip 9irde caracterese decbrelntredoue
caractere", de exemplu:'calculato!'. Dar cum se relineln memoriainterna?
Aceastaeste retinutdsub foma uoui vectotde caracterc.Primulelement,cel de
ndice 0, retanecodulagcrr al caracterului 'c', al doilearetinecodul Ascu al
caracterului'.', ..., 9.a.m.d.Convenliaeste ca ultimuloctet sd relin5 o (codul
caracleruluinul). Prin urmaro,pontrua relineSirul"ca1cu1aror" trebuiese fie
.ezervatecel pulin11 elementede tip cba! (10 lilerepluscaracterulnul)- adicd
11octeli.l\4enliondm cd penkufiecarecaracteresterelinutcodulAscrr.
Etemple:
. cb ar v 6c t ( 111
-' c a l c u l a to !" .
. cb.r vect I I t icatculdto-n. in acest caz, compilatorul
lace calculul
numdrului
deoctetinecesad.
. cba! vat t100l :"calcu!..tor'. Am rezeNatmaimultioctetidecatera
necesar,
3.3.2.CitireaSiscrierea de caractere
5irurilor
Se propune urmetoarea probbme: sd se cifeascdgl sd so afisozo
cuvantul
'calculator'.
Penlruaceasta,ar trebuisd procedem astfell
. relinem unvectorcucelpullnu compononto
delipcha! - itl eremplu2o;
. citimcuvantul,
caracter
cucaracter;
. il afigAm.
Proglamul
umetorrealizeaze
toateacestea:
*tncludi <lo.troe.ht
( c r lr r [ 20l ,
f o! ( t . 0r 1< 1 0 r1 + + ) c ID > 6 l tl ,
t t 10I ' 0,
lor { I ' 0r t < 10 ;t+ } ) .d r< < a t1 t,
90 Caoltolul3 - Siruri de caractere
{
ch.r rI20t;
c iE > > .i
c dt < < a t
l
I
li Observatii
r' Caracterul
nulesteaddugat
automat.
"/ Procedandca maisus,putemcitioricecuventcu un numdrde pandb 19
caractere
- excluzand
caracterul
nul.
Putemsd rezervdm, pecareo arela dispozilie
in limitamemoriei programul
" unnumdrmaimaredeocteli.
Exempluichar !t1000:.
v' Un vectorpoatofi adresaipe componente.
Exm p lu:
. [0] -,c', a fll -'a', 9.a. m. d .
Din pdcate,prin metodade mai sus nu poatefi cititun gir carecontinemai
multecuvinteseparateprinspatii.De xemplu,dacela rulareaprogramului anterior
tastdmqirul" t n oI!",se va afi9a"Un".Aceastainseamndce citirease faceastfell
. Se sartoatecafacterelo
albe.in exgmplu,s-auseritblank-urile.
. Se cite9teSimlcare incepecu primulcaractercare nu este alb Si se
la intelnifeapfimuluicaracteralb(ln exemplu,blank).
sfergeqte
Din acestmotiv,pentrucitireagirurilorde caracterevom utilizao funciiede
unlip special,pe careo prezentamln continuare.
> Funclial
cin.gt (vdtor_al_calacter, int rr, cbrrr' \nt )
citegteun 9irde caracterep6nacandesteindeplinitd
unadintrecondiliile
de maijos:
. au losl citilenr-l caraclore;
. lransmis ca ultimparameiru(implicit,"\r').
a fostintelnitcaracierul
de informaticepentru clasaa Xl-a
Ohservalii
Suntcititegicaracterele
albe.
nul.
Esieinseratcaracterul
Caracterul nu esteinseratin 9k'
lransmisca ultimparametru
estetroculin modtacultativDacenu estetrecut'se
Al treileaparamehu
n e c ae ste'\n'|.
PflviliurmebareleexemPle:
3.3.3.Tipulchar*
Vectoriidecaractefeau o proprietate Priviliprogramulurmdtor:
deosebitd.
l+itrclualo <lost!6u,h>
t
c haa .Il l u u s a o '
c @!< < .+ 1 < < n
,
ln urmaexecutai, se tiperegte:
"asa Ea a".
urmdtorul
Considerdm exemplu:
*hcrud6 <io8tr6n.h>
)
cu un gir.
Am declaral un vectorde caracterenumita, pe careFaminilializat
de tip char*
asemenea,am declaratsi o variabilS numitdD. ln acesteconditii,
F-lem atirmacd:
. D-ar este o atribuirecorecta.VariabilaD va reline adresavectorulua de
caracterea, adicdadresaprimuluisdu octet.ln schimb,akibuireaa=Deste
penhuca . estoo constanlece reprezinte
incorectd, o adresd.
. dupeatribuire,putemutilizavariabilaD in aceleagicondiliica variabilaw. De
exemplu,putemafigagirulrelinutprin"cat<<D<<adll,t'
. dacd la continutulvariabileip se adaugd 1, aceastava reline adresa
vectoruluial cdruiorim octetcoincidecu al doileaoctetal vectoruluiv De
exemplu,daci tpdrescvectorulse va afita "ns!|[)ru".Notilveclorso poate
adresaii pe octeti.Exemplu: e(11.
. se pot face 9i sclderi lntre adrcse.ln aceslcaz, rezultaluleste intreg.De
exemplu,prin 9-. se obtineindiceleln v, al primuluioclet al vectorului
retinutde p. Testata
programull
unuiSirde caractere
3.3.4.Lungimea
Penkua puteafi folositefunctiilede prelucrare a girurilorde caractero,
febuie se fie inclusfigierulantet"6rrlns.h", tot ala cum includemfigierul
*lbcludlo <loalrod.h>
unde:
. Elz-t esteuntipintreg,ulilizal memoiei,delinitin "!trtEg.h"
in adresarea
(ilputemprivicapetipulunstsmsdint);
. argumentuleste detipcbar. (adicdo adresd
cdtreun9ir).
Capitolul3 - Siruride caractere
Programul un9ir9iafigeaze
de maijosciteFte numerul pecare
de caractere
leareqirulcitit(exclusiv nul):
caracterul
*i4c1uale <iot!d.h>
*include <strins.h>
{ c b. r 6 t1 0 0 1 t
c t ! , 9 (.,1 0 0 ) ,
c ou! < < ,,s i tu l c trtr l re r< < a tl L etr (a)< < " c.racri " ;
l
5l concatenarea
3.3.5.Copi erea sirurilorde caractere
> Functiasrrcpy areformageneraldl
c h .r * s trc D y (c h a r* d 6 6 t, char* E urs.),
Programul
urmdtortiparegte'r!r! Dcrs":
*itrc1qa!6 <iotre.!.h>
*inclual <6l.tng.h>
{
c her . 120I - ' ' l u " , b tl o o l ." s a s ." .
alt c at ( a. b ) t
cdt<<.,
l
3.3.6.Ciutareaunuicaracter
intr-unsir
{
c ha! a[ 20]rrAc e .t. .rt.n r
c out < < alr c h r (a , tt ' ),
)
de maijostipdresteindiceleprimeiaparitiia caracterului
Programul 'r', 9i anumea:
ilinclual <iosrred.h>
#inclual <ahlnt.h>
{
c har a{ 2 0 1 -rAc o s l a s l e i ;
c ou! < < 6 trc h ! (a r ' l ! )-e ;;
l
(
c har 6l l o o l , rr,c ;
c dt < < n l n Ero d l u c ti 6 l a 1 n ; c i r.ser(a.100),
cout<< rcalacttul cutat "i sln>>ct
t = . t lc hr (a .c );
if ( t ) c o u t< < i l trd i c 1 6 6 s c r< <r-at
6Is cout<<lstnl, nu conline aceat caractr t't
,
1,,'
Observafii
Variabila
t estedetipulchar,.
Testulde apartenenlaa caracteruluila gir s-a fecutprih a vedeadacd
variabihr retinesaunu 0 (adicao adresdnulddegir).
{
c hlE . t 1 o 0 l , rt, c ,
. dr < < n l trtro d u c tl s l ru t' , c l n.g6r(.,100),
cdl<< !'caracl6nl 4rat cln>>c,
"
t-.trchi (!, c ),
I ! ( t) c o u r< < rl n d l c 6 1 a t6 ' < < t-a< < eD i tl ;
) wh11 6 (t);
1
$irurilor
1.3.7.Compararea
. Functiastldtnp are formagenerala:
llt s trc r@ (c o n a t chat rEl , conat cl rarr62);
r ioluldea comparadoudgirufidecaractereValoareareturnatieste:
<0, daca r1<62;
=0, dacd s1-E2;
>0, dacAa1>82.
Pe scurt,un gir s1 este mai mic ca allul 62, daoeln diclionars1 ar figura
inainlealui s2.
Exem p le :.so are">g,
98 Capitolul3 - 5iruri de caractere
{
c hE E EI1 0 0 l ,rrl 1 o 0 l ;
FunctiaErrlcrur areformagenerali:
int 6 trtc rn p (c h a r * s1,cbar rE 2)t
(
chlr cuvln!6t1ol 1251, tlE1251t
ial i. a ,q e s l l ,
f or ( 1 .0 ; t< n ri + + )
( cou!<<"cuvanl "
c in > tc u w tn t.ttl ,
de informatic5pentru clasaa Xl-a
f or ( i- 0, t< n -1 ri r+ )
ir ( s t r d r, ( c u v i n t [l .l ,c u v tn t ti + 1]) > 0)
( st!c!,L (mn, cuwtnr tit );
trcty(cuwint [tl , cuvitrre ti+1] ) t
s lac D y (c u w l n te l i + 1 1 ,:!u ) ;
)
l
3.3.8.Sub5iruri
, FuncliaEtrstr are formageneraldl
c ha! *6t ra tr(c o l s t char *s1, ooagt char rE 2),
9 arerolulde a identifica
dacdSirul62 estesubgir(caractere
succesive)al girului
rr. Dacdacestaesteidentificat,funcliarelurneaze adresade lnceputln cadrul
pruluist, altfelretutneazdadresanuld(o). Cdutarea se face de la stangala
Ceapta. In cazulincareE2aparedo maimulleorifn cadrullul s1, se returneazd
adresadelnceput a primeiaparitii.
Eremplu: lie cha! sltl.'xyzr", 62firtryzn, atunci Errsrr(81.s2),
turneazd 61+1 (adresacaracieruluiy in s1).
(
c h. r s ir t 10 0 0 l ,6 u b s tr I2 5 1 , rt,
cout << trlrrlloducll tstut n,
c in. s t ( E i r,1 0 o 0 ),
'
100 Capltolul3 - Siruride caraJllI!
( c ha! at 2ol ,
cd!<<" hlroducll cuvantul u, cltr>>.,
. dt < < alr uD r{ a ) t
1
$ aclioneazd in felulurmatori
. Cautdpdmulcaracteral giruluiEllns2 Dacdestegdsit'returneaze adresa
altfeltrcce
sa din cadrulgiruluis1 9i execlliase termine, la pasul
urm5tor.
. Cauteal doileacaracteral girului61 ln s2 Dacaestegesit'returneazaadresa
sa dincadrulgirului
s1 9i execulia se lermind, la
altfeltrece pasul
urmltor.
( c h! ! @ v e tl I1 0 l , c u e a E te tl ol , rD i
cout<<'ratloahcotl Dli&ul cuwet ! ; cin>>cuvstlt
cout<<'titrodluctl a1 atoilea cuvel cl4>>cuvut:;
D-lragbrk (cuvrntl, dw&12 ) , "
whil6 (D )
( cout<<Dlol <<e!all,
D=alrtbrk ( D, cuv&t2 ),
t
)
Caraqlerele primului
cuvant,tncepandde la primul,suntcdutateln al doilea
Aceastase facepornindde la adresa
cuvant.Oricecaractergesitse tipdregte.
girului,returnatd
de 6rrDb!k. Apoi,variabilacare conlineaceastdadresese
incrementeaz5. Aceastapenkuca, la urmetoarea c6utare,sd nu fie returnali
aceealiadresdde9ir.
3.3.10,Conversia in valorinumerice
Sirurilor li invers
Umetoarelefunctiiau prototipulln 'sttlllb.h' 9i folosescpentru
conversia
valorilor In 9irgiinvers.
numerico
> Funcliaarof convertegteun qircdtretipulalouble.Daceconversiaequeaze
(setntalnegte
un caracternenumeric) valoarealntoarsdeste0. Dacdprimele
caractere
alegiruluisunt
albe, acesteasunt ignorate.
tloubl ltof (corEt cbar rB),
Obsorvatiile $ipentruurmdtoarele
suntvalabile 3 funclii:
> Funclia ungircStretipullong dloublo:
_atold convertegte
1o!g alodrla cbar rE),
-atoltl(coE6t
> un $ircltre tipultst:
Functiaatol convertegte
Lnt a to i (c o l d t cbar rs)t
> un 9ircdtretipulrongl
Funqiaarol converte9te
Io rs a to X (c o n g t chl r ,3),
fli!6'ma:(i Pntru claSaa xl-a
( aloubl !!lmr,
> Funclialtoa are rolulde a converllo valoarede iip tnr Tntr-ungir,a c5rui
adresdestememoratd ln variabila
slr. Valoargabaza retinebazadenumeratie
cdfe caresa sefacdconvefsia(deobiceibazaeste10).In cazulbazei 10,grul
oblinut
retine eventual,
Fi, somnul"-". lntoarce
Funclia adresa qirului
obiinut.
c har * l l o r(l n t v a l o a r , c h ar * E l r, l nt baza)t
se maipot utilizaurmatoafele
Penlruconversii, funcliil
vanual de informatici pentru clasa
a Xl-a 't07
. |'uncla
1o trs 5 t!to1 (c ons t c har .s, c h. ! r * eD d D t r , int baza),
=Je-'olul-de_a.
conve(i un grrcatre lonE. ln afara gjrutuicare trebuie
-.lncrapnme9teca parametrude Intrare convertit,
adresaunei;arjabtlede tip.i;;;. ;;;;
:pel, adeastdvariabildva retinepoziliaDr
:.rverr,t.Deexemi;d;;il'iJ.?[J#Y,:ffi
;"$""1i,':.,il;?!'.:r"x",'"""!
g"
:.:llfl:1:9acesteiinformalti?
t""metru rerine
adresa ,n, . Dar
caracterutu;
careesterost!l
:v,stenlet Cu ajutorulei se pot depistaeventualeb;rori uoa-r-ri"
::unci cand se inkoducdatele.priviti sirr
e clar ca
-x,zatorut
a dorir
saIntroou"a
unnuri..du/rindffifi:i:;:
lpticalia S.te. programul
""L"lH'y
urmdtortesteaze daceo valoareintrodusd este
-3
-irmerice-
9i daceestecupfjnsd in intervalut
fro, zo:. i""iripiJpii;;; A;
1-Ti'-.96ndcompardmnumdrulcaracteretor
:garrtale-a convertitecu ,rld";-" -i'Jri
aresemnificaliacdinkeggirulestenumericVariabrta r"ai* trebliesJ
:orUnag, 10 sau15,adicabazain careesteconsideral numdful subformadesi;_-
*tlcLuat. <io6!ro.!,h>
#tnclult. <srdltb.h>
#lDcludL <srrtng.h>
( c h. r nt lM r tz o t, ra d tr s a ;
v = s r r t ot (n re r, & a d !6 s !, 1 o ),
if (adr66a-nlre!t !!tr16tr(n@r) )
cout<<nD!!a contln. caract6r
3.3.11.Citirea$i scrierea
lirurilorde c.aractere
din $iin
fifieretext
3 .3 .I L l . Op er atiade citir e
Pentru
a citio liniea unuifigiertext,sepoatefolosifuncliaurmdtoare:
stlllle(cba!. Aal.res._sl!, Int Nr_car, cha!=. \n' ).
Operatidae s c r ie r e
3.3,11.2.
Scrierease face prin comanda f<< ELrr. Prin aceasti instrucliunese
F intreg9irul,lncepandcu poziliacurentda pointerului,
inclusivcaraclorelo
albe.
exemplulurmdtor:
'Irdza!
*tncluate <latroe.h>
!<<,Dri@wBr at i,
!.cLo r6 ( ) ,
l
d e la Sirla a lt tip
l -3 . 12.O m od a l i t a t ed e c o n v e r s ie
Existi Si alteposibilitati
de conveEiede iiruri la altetipuride date.Un tip
lEecial,numitlErfsr!|tq pemitechiardeclararea (lluxurilor)
stream-urilor de
. tiruricetrevariabile.
"Citirea"
seefectueazd
cuajutoruloperatorului ">>" lalelca
tn fi9ier.
( . h! r *I l- ' 1 2 3{5i,
{3crrt!6re lN(x. dtr1.n(x) ),
lnl nrt
drt16 (trs>>!r) cout <<nr< <6l!all,
l
,
t Observati
cit desimplusedetecteaze girului.
sfargitul
Tota9a,se pot"citi"maimultecuvintedintr-ungir.Programul
urmdtor
citelte
qi le afigeaze.
cuvintele De aceastd datl se considedcA esteSirvalid9i cel de
lungime0, faptcareconducela o nouacitire9i decila ciclare.Pentruaceasta,
defiecaredatd,setesteazdca lungimea
Siruluicititsefienevida.
esle prezentatinconlinuafe:
Programul
*tlclude <to8lrn.h>
*tacluate <st!st!6.ht
*ln.Lui!6 <scrtas.b>
(
c h a ! x tl .' l Me s ra ra 4 buD i cai ,
char cuv.ll I201,
ls rrg tl e ! l n g (x , s trl n (x ) );
vhtlo ( lns>>cuwMt && Errletr(cuwMt) t
cout< <cuvBn! <<.ndl ;
propuse
Probleme
un text.Cuvlntele
de la tastature
L Se oitegte prinvirguE
se considertseparate
spatiusaupund Catecuvinte aretextulcitit?
2. Se cite9tede la tastaturd un text9i o succesiune de caractereOe cateod
intalnimaceastd succesiune ln cadrul
textului?
3. Secitegteun text.DouAcuvintepotfi separate printr-unul
saumaimultespalii
Secere sd se eliminespatiile
inutile.
4. Se citegteun figiertextcarecontlneo singurdpropozitie,pe o llnie.Programul
rcatanjeazeliterelein fiecarepropozilie, ln ordinealfabetice, pdstrandlocrll
cuvint;lor.Numailiterelede la'A la'z'sunl ateclate. Celelaltocalactere rdman
neschlmbate. legirea Numele
vafi totunfigiertext. estealesdedvs
figierelor
ExmDle:
|!AE PRTCE Ot BREIO rg s1.25 PIR lOttlID'
aac DDSEI l! tfit [o oP $1.25 Prl RRETU.
IIIC T]ICENEI PI.A'IE READ 0?6-243,
ala .DEIEEE oHtLtJ N"Rs r?6-Ez3'
Junlol Dlvlglon
5. Crestereautomati.Scrietiun program caresd mereascatoatenumerele care
aparlnh-undocument (cititdintr-un
figiertext)dupdun procent
citit
de la tastature
De exemplu, dacese introduce 12,procontul esle:12%.Toalenumerele trobuie
cudouAzecimale.
afigate Testali programul dvs Peiiaza:
Juniorolvl6lon
pentruclasaa xl-a
, r.ual de informaticd
+t;#trd$5,,:l;;''
''""'-*$puW "ourt*t 'txEor
.'t" r\qieru\
,jii""Jt$:il),::':'Jiji:*":tiall"' *qnJ" 'n Division
Structuride dateneomooene
Rdspunsulla primalntrbare
estedat de existenta
unorvariabile
speciale,
careauo structurd
neomogone. O astfeldevariabilS
esteimpe4i15,
la randulei,in
mai multesubvariabllo
numite,uneori,c6mpurl.Pentruexemplulconsiderat, o
variabill.s-o num)mPts, va conlineo subvarlabi\: numilbN6e, careesteun 9lr
de caractgre; o alla, numite v.rsta, penlru care se alegeun tip inlreg 9i o alta
numite gal!!tu, de un lip real Aslfel, observem cd variabilaPls es:e
neomogenS din punct de vodero al spre
slructurii, de exemplu'de u_
deosebire'
vectoriare aro toate componentele de acela$ilip Cum se declard9i cum s
utitizeazdo astfeldo vaiabild von invdfa in acest capitol
in ceeaco privesterdspunsulla a doualnlrebare,o posibilitale
de a reline-r
tabelestedatddo creareaunuifiglercu tlp,
t CreareaFi exploatareafiglerelorcu tlp nu lace parledin programadvs ct
,l esterecomandabilsd le studiatiinmodindivdual.
in Pascal
4.2.Structurineomogene
4. 2. 1. Tiou l n e c o r d l
dedaleinvdlatepanein pre?str
in practict,aparsitualiiin careioatetipurile
nunesuntdemarefolos.Sdanalizam unexemplu
t, Observatii
Penhua adresa
unanumit detlpEcoBD,se foloselte
campal variabilei
numele
ei,urmat
de',',apoide
numeb cempulul.
campulnr,mal variabilei
Exemplu:. numereprezinlS .
r' in cazulincareavemmaimultecempuriadiacente(careurmeaa unuldupa
altul)qi de acelaqitip, le putomdeclaradeodata,separanduleprinvirgulS.
Exemplu:campurile: gi "Notala fizicd" suntadiacente
"Notala malematice"
qidetip rea1, decideclaralia
este;
n_natr n_flz ! rsal,
4 Capitolul4. Structuride date neomogene llanual d informatici P.
4.2.2.Accesul
simplificat
la cAmpuri
Ala cuma fostprezentat, modulde accesla campurile unelvariabile
de tip
Rlcori.Deslodeosebit de groi- intotdeauna
punemnumelevariabileltn latd.in war ! lwt
roalitate,
accesulh campurileunelastlelde va abilese poatefacemultmaiusor,
prinulilizarea
instructiunii
wrtH,cuformagenerald: vlrh dlo
D.tLn
wlth v.!1, varz, ,.., va& cto instrucliun w! ll. ( 'E
wlth drtl
ii arerolulca,in cadrulinstructiunii
subordonate,
adrosarea
sa sefacesimplilicat, b.sl,
adlcaprinutilizarea
exclusivea numelul cempului. EII
rlll
programul
Reludm anterlor,
dardeaceastll
dateamutllizat
instructluneawtrb: tlat
olalt
t!4r. .1.v r t.coEdl
tr'rm! .rrtncl2o),
DLt'l|t' Lltrt r.!1,
vrr.ttr bdt., Pentruunelev,s
..xt chart lipulRtconD(lnclude 2
.rdr campurllor cargo aba[
w.t .r .l.vt fi putullace9l aia: ..
astfeldadresare esteI
b.sla
Putemaveaotic
b.srr arcoRD,careInc
l|rr.t.( In',m .I.v , ), !.a{h( trM),
EIt.(,tro!| rl|t.tlltlda '), r..(Ur (n_tr.ar) ,
nr lt. (' rc tr l j .rl c a ' ), !.rd ttD (n_!k)t 4.2.4.Vectoride
erlt. (,v.r.!r i), !..(U.n (va!!ta) ,
EIt. (,!.s 1 ' )r r.rc tn (..x )r Agacums-aar
v r ll .l n (' trs ..,n u n 6 ),
v r rl l .1 tr(' n o t.
detlp RrcorD,
n l t rl l tl c .' ,n :@!),
w! l r.h (' n o ta l l l l c a ' ,A-!tr), AdresareacAmp
r i. t.In (,v rts ta t,v a rl tr), paranlezedrepteintr
r it .h ( r3 e 1 ,,. x ), propriu-zisd
setacea9
t;, .: DacI v 6st\
X!# ' urmator), atu
prinv ltl .nu
-1-'
ryrual de Informaticipentruclasaa.Xl_a
1.2.3.
inregistririimbricate
in general,campurilecare abatuiescun tip FrcoRD pot avoa odce
. tio. O
ntrebaretdar REcoRD?
Respunsut en"fi.utiprdgr";rl ;r;itor, ' -
esleatirmativ.
Drot!s r3t
ttD. ld = Eocolat
! ! r m , . tl tn s t2 o t,
tl!!a_a: rcolat
zi, lsat h'r'tt
a[, 1E!oger,
.rlrdt,
n_rut, 4_t12. r.al,
v.rrtar !rj't,
6exr char,
.nal,
w .! 6 r t @r
2.4.Vectoride inregistriri
jlTlr s-aardtat,etemenlete
unuivctorpotti de odcetip,deciinctusiv
.,-
rp RtcoRD.
campurilor
,Adresarea se faceprinnumelveciorului,
urmatde perechea
de
?nteze inlre care este trecutindicelecomponentoi,
jpot
-drepte
priu'zise
selaceasacumaminvatat. "eieclii
*gtorut,irinregistrarea
eslede riperev (cain programul
l-
gC.' ,D_19.1.""f
urmalor),
atuncinumelese selecteazdprinwlt).nul, iar ziuariagterri
pr|nw lll .nuttl.!t_
| 4. Structurlde date neomooene
9i de aceastadatd,pentruselecliasjmplilicald,
se poateutilizacu succes
instrucliuneawlm, aqa cum rezultddin programulurmdlor,unde se citegleun
vectorcu E inregistreri
de tip etev:
ty!r6 td E rcoi(l
tru e 3 6 l ri n s [2 0 ],
data_a. rocord
z i ,1 s s .b l rr ;
e !a rE e g e rt
endt
nd;
wector_irregiatfarl t arraytl..9l ol rv;
war v: voclor-hrstgliaEit
tr, ir inttr;
r t t ( t q= ' ) ' ! a a u n (n )t
f or i. = 1r ot r a l o
wtth yttl alo
b6ritr
E l l e (' n u n .1 v ,), ! a a un(nl rre),
wlth dlatLn tlo
bgtn
E I! (,z tu ! n .i t6 !l l ' ), r.l autr(zt),
q !i !6 (' l ' ,s n ri t6 !{ I' ), r!drn(l un.),
*ailo ( '$u1 trrrl .ri i ' ), ro.al l n(rnl ,
ndl,
eadl
4.2,5.inregistrare
cu variante
Nu toaleTnreglstrErlleau o struclur,fixi (acelagl
numdrde cAmpurl)aga
cumau lostceleprezenlate. Sunlcazudcendun tlpinregiskareare o partsllxl
urmatidoo partevarlablll.
Si pregupunem ce ne lnlreaeaz! o altuallereferltoarela studlllunel
percoane. O astfelde inrogistrareare o paneflxddatdde campurlle carerelin
numele,varstaSitipulde studii.O persoand poatesenuaibestudii,cazin cargnu
maiesienecesar sa avemalt6inlotmalii,poatesd fllgcutcatevaclasede gcoald
genorald(ne-arputeainteresa liceul(cazin caredorlm
cateclase),sd fi terminat
s5 gtim anullermlneriigi otagul)sau sa abd studllsuperloare (ql atuncins
inlereseazd facultelii9i numerulde ani de studiuTn cadrulfaculetli
^numele
respective).
Inconcluzie,in iuncliedetipuldostudii,inrsgistrarea
arataa el.
Limbajulpermiteca inregistrdrile
sd aibd o slruclurdvariabild.
Cum so
realizeazd
aceasta?
in p mul 6nd, trcbulercltnd ce parteava ab e eateptaaaHln cadrul
inreglsttt l dupd parlea flxd. O parte va ablld ae dezvofte h cadrut
inrcglstdrii dupe vab le pe carele la un cemp sltudtln cd.lrulpdqll flxe.
pentruclasaa Xl-a
tlanualde Informatice lt7
I Observalii
Pentrufiecareinregislrare de acestlip compilalorulrezervdnumdrulde
octelinecesariceleimailungivariante.
Estepreferabilca cilireauneivariabile
de tip lnregislrarecu variantesd se
lacAprinutilizarea
instrucliunii
cAsE.
I 18 Capitolul4. Structurt
de dateneomogene
4.3.Structurineomogene
in C++
in practice,
aparsitualiiin caretoatetipurile
dodateinveFtepanain prezent
nunesuntd marefolos.Pentru a inlelege
aceasla, vompornid la unexemplu.
ggt- Pr""rpun"rnca dorimsa prelucrem dat6reforiloarg
la maimullielevi.
CX.' Astlel.pentrufiecareelevcunoagtem:
L Numele - ch!! l2ot i
2, Prenumelo - cha!t201,;
2. Notamalematice - florr;
3. Notainformatici - florr;
4. Versta- t!!,
Observatlfaptul
cd inlomatlllerteritoare
la unelevsunleterogene: qkurld6
caractere,numererealosaulnlregi,Cumamputearezolva problema ptinulilizarea
cunosiinlelorde caredispunem? Ar ll ncesari cateunulpentruflcar
5 vectori,
informalie.Aslfelam aveadoi vectoricu lmente de bazdFlruride caractre
pentrunume9l prenume, dolvectorlcuolsmente de baz5deflp froer pontrunole
9i unulcu lementede bazddetlp tnt pentruvArste. Fieceruielevt, ii corespund
componntele d alefleceruivector.
O agtlgldeabordare estegreoaie, nenalurala.
Ar ll cu multmaibinedact limbaiular dlspune de unmcanlsmprincarelbcerui
elevs5-icorespundd o singurdlnrggistrare.
in c++ exlsti un tip de date,numltrlruec, carn pemiteacesllucru.
FormageneraEste(ceesttrecutlntreparantezedrptestgconsidrat
lacultativ):
.trucl IEun rtruollrrrl
{
[<tiD> <nun w.lt.btrrL nul6 valLlbtta, ...1>l ,
I<!1r> <ntrm wrrt$lrAt. nus6 vrrr.ablla. ...t>l ,
t
cha! nur. 120l, Dr.nuD. I20l,
lloat rcr._$t., not!*r..!o,
1nl w.r3!a,
,,
9ls numeileGlv.
de Informace tru clasaa Xt-a
Eristddouaposibititiilidedeclarare
a vaflabiteto.
care,alcdtuiesc
structura.
1,A'a cumrozult.dinfoma generate, scriindtasfar'itnumele
variabiletor:
.Enrct ly
( c har a u e l 2 o l ,
D ! n l @ t2 o t;
rroaE notLn te,not._l[to;
1ur v.aata,
) inrl. tru2,
Definiiia
structurijpoatefiquraatatir
oupa
.
incruoerire
oeiijer;;;i;,:'i""::lill,,:I,J:iiH"J,.:,nT;nT:
Sepune
J"fo'
urrllaloarea
lntrebare:liind vanabila
esremodartata de un tip Erruct, care
de accesu camo.,rit" .irt1Y.o
deseleclie nitaic-ui.il#6:i;;,.",J'ii:,aceasla sfoJosegle
oirecta, operalorul
Fi" t!;' or"riabitSd6tiput616v.Atunci:
S;.
reprszintd
girutnu.e! atvariabei tnr;
] l.nr,nu.b
lll,"*. ,-_ _
' t0l reprezintE
prlmul
. Llr,rlora_llr _ reprezlnti caractsr al girului
nuri:
campulao"._r"". tr,..
Inprogramulurmetor, secil9te9lsetipdr9te "l-u"li"oit"t
o variabilg
d6tipul6r6vj
*trclude <to.l!.!,h>
Irrtot .tv
t c hlr N' l n l z o t, ,r.n u tn l 2 o t,
r106r ror.\_!!t.,nottLtnlo,
lnt vllrt.,
,,
Drln ( )
{ .l.v tn4
:a:..]!t-. ", crn>>in!.D!'n,
couE<<rpr(|tru!. n, ctn>>lar.DreDre,
cou!<<rltorr !.te!!tca n!
cln>>tnr.nora_n!t.,
oour<<'!ibt. latot[artca r,
cr!>>rrr.rota-h!o,
c out < < nv r E l t! i ,
clnr>ln!,va!!t.,
c out < < ' t ur c tt{ r,,< < .rd l
i<<inE.D!D|ls
<<.nau
< < r nr ,D o t. Mt.i < .n d I
<<inr.aot._tnfo <<!dl
< < inr .v a !a ta ,
.
r2 0 Capitolul4. Structuride dateneomogene
4.3.2.inregistririimbricate
sau un alt lip
continein interiorul
Existdsitualiicand un lip shucturat
structurat.
Privititaoul
urmatorl
ettuc! .le
( c har nu .1 2 0 1 , D re n l ,e 1 2 0 1 t
stsruc!
{ int cl.sa,
f lo q t n o t [2 0 ] t
ldit u s ti .;
lnt vr!at.,
),
{ Irr claaa,
t loa t ro t6 1 2 0 1 t
Isltuatl.-l, sllu!tl6-2i
iDt va!6t!i
tl
pe |angeafte tipuri,doud slrucluri
Tipul structuratc1.w1, subordoneazd,
sltuati_l 9i struarle_2. Formaste echivalenld cu cea in care cele doue
siructurisuntdescriseunadupdalta.
in praclicd,se lolosegtelermenul"lmbdcate" penlru una sau mai multe
slructuriincluseunain alta,ca maisus.
Vanualde informatlce ntru clasaa Xl-a
4.3.3.inregistriricu structurivariabili
Pentruinceput,vom sludiaun tip apartede datdslructurai;,numilunio!.
Analizaliprogramulumalor
#lacluat6 <iostEod.b>
slon teat
{
c har bI 10l,
aioubt ci
),
lain ( )
r6ar varrinr It
c!'D>>war.c; cdt<<var.c<<eaaD,,
cI!>>waE.b, cdt<<var.b;
I
t
1nt nr_c1.a6,
(tEl aD_rt
c b .r o rra [2 0 ] r
It
{ Dr6oaa! Dr.,
cout< <'!lte Doraolnr ., cln. t6t (D6!s,nllre, !0 ),
cout<<.8lualll !-lara s-cno!!l., l. - l loq1r s- suDelloals ) ",
ch> >Drs . 6lualtI ,
awlt c h (D r6 .rl u a l L l )
(
r1l@r c1.a. .,
cln>>Dr6. a!d.nr_c1as6,
brsrk,
c a. . ' 1 ' r c o u !< < o a !N t l 6 m1 !a !11 l l cq1ul " ,
c l n > > D 6 r.. l l d l ,tl c q .a!_1,
c d t< < n o l l a u l r,
c i n rrD o rs . a l l l .l i .c 6 u .orar,
brak,
crse ' Ei I c o u t< < i n l ,m l ta c u ttartt i ;cl !,st(),
cttr.sl (rerE..tal.lacullat,nl,s_!, 30 ) ,
cou!<<"nr rni tl6 arudliu n,
c l n > > D rs . rl d .l a c u l l l t.n._$1,
l
Manualde informaticepentru clasaa Xl-a 123
//afisz itrr9rirt!.!.
coqt<<Drs . su!< <nau ,
awtlch (!Er8. srudrtt)
{
c B s 6 ! f . : c o u !< < rn _ s rudl i i " , br..k;
!!l@r cta.e n<<96ra. sril.Dr-cx.a, br..k,
c a ' lt t c @ t< < ra t n l B t Ii c u l , h n
< < D e rs .a l d .1 1 c e u .u -t
< < " l n o r.s u t n < < D r..a!d.l i co.or.!, br..k;
1 flcult.tll "
<<D!4. stal. !tcult.!. !|lfu-t
<<' nr et al. rtudtu "
<< 9!.. ald.facult.t..nl-anir
l
propuse
Probleme
1.Cititiovariabile
cu urmdtoarea
structurd:
. nuns_etevt 30caracter;
. dlata_nastrll:
z1 r intreg;
Iun. t inlleg;
.ll t intreg;
. notr ltllttlrtlca - real;
. notr lnfolmatlca - real;
. nola 6ng16!a - teal;
. a.tllr - ral;
(mediasecalculeazi,
nusecitegl).
Tegtalldacddateleau fost introduse coreci.Cltlrease va verificaprlnafigarea
rezultatului.
2" Cititia inrglstreri Tnordlnaalfabotic5
de lipulcllde malsus9l afigali-le a
numelui,
3. Aceeagiprobbmeca ceaanterioard, se va laceln ordinea
numalcd aligarea
descroscatoare
a rnediilor.
4. Presupunend se referela un examende admltero
cd lnregistririle dd, se se
aligezein ordinodescresceloare In limilaunuinumdrde locurisaupane
a medlilor,
candseepuizeazd toateInregisvdrilo cu modiimaimarisauegalecu 5. In
elevllor
cazulin carepe ultimullocavemmaimullielevicu aceeagi modie,toliaceqtia
sunt
consideraliadmigi.
Programulva aliganumdrul delocurilnplus.
Capitolul5
Structuride date
5.1.Conceptul
de structurdde date
Orice algoritmprime9tedate de intrare,le prelucreazd9i obtinedate de
iegire.ln fiecarecaz, datelede intrare,dateleintermediare- cele createin timpul
pfelucrdrii- 9i datelede ie9iresuntstructurate(organizate)
intr-unanumittel care
coresp!ndeintrerii,necesitdtilorde prelucrare
saua celorde utilizareulterioard.
Penlrua veni in sp jinul programatorilor,
limbajelede programareevoluate
(de exemplu,c++ sau EaEcal) pun la dispoziliaacestoraposibilitatea organizarii
datelorin anumite"gabloane", numitetipuri de date. l\4aiprecis,prin tlp de date
se inlelege:
multimede valori;
reguldde codificare
a acestorai'
multimede operaliidefinitepe mullimeadatelor.
dedatepotfi:
Larandullor,tipurile
. elmple - descriudate care apa(in unor mullimicafe nu sunt
caproduscartezian
rezultate alaltormultimi.
Exemplu:lnt.
. atruoturate- descriudatecareaparlinunormullimirezultate
ca
produsoanezianalaltormullimi.
; l. Privitidectaratia
demaijos:
tl l' vCrtbnta
iidbcat' Varhhtai++
tyDe latlotr.t'lecodl
D, qt 1t r t 6g6! ,
eDd ,t
i VarianlaPacal VarianiaC++
ltDe veclor-aEry l1..1OOl of ral, al oubl a[1OO],
r' Tipulvariabilei
careabetuie$tenodulnu caracterizeazd
structurade date.
5.2.Structura
de tip listi liniari
5.2.1
. Prezentarea
structurii
Deflnllla5.2, O listd liniad esteo colecliede n>0 noduri,x1, xz, ..., x.
allat intr.o relalie de ordine. Astlel,x1 este primulnod al listoi,x,
esleal doileanodal listei,...,x" esteultimulnod.
permise
Operatiile suntl
. accesulla oricarenodal listeiin scoDul
citifiisaumodificerii
informatiei
conlinute
deacesta:
. addugarea unuinod,inditerentdepozitiapecareo ocupaln liste;
. dpoziliapecareo ocupeln liste.
unuinod,indiferent
9tergerea
. pozitiei
schimbarea unuinodin cadrullistei.
Exgmplo
do apllcalllcaroutilizazd
listeliniare:
t, Evidenla sftualiel
scolarea elevllotunelclase,Flen numdrul
elevilor.Aicl,un
nodretinenumeleunuielevqi noteleladivergel Vomaveadocl,n noduri,
materii.
Nodurilevor fi memoratetn ordineaalfabetice a numelorelevilor,ln clasa
respectivdpotfi transferali
elevidinalteclase,cazTncar6se adaugdnodurl.Din
clasd,uniielevipotplecaln alteclase,cazIn caresegtergnoduri.
b) Se doreltese se relindun 9irde numorenaturale,
ln ordinealn careau fost
cilitede latastature.
Aici,unnodrelineunnumernatural,
Nutoateaplicatiile
utilizeaze
listeliniare.Exemple
de structuri
carenu sunt
listeliniare:
. sedau! oragegiSoselele careunescuneledintreacesteorase:
. gonealogic
arborele al uneipersoane.
I
t
Manualde informaticd clasaa Xl-a
5. 2. 2.Lis t ea l o c a t es e c v e lni a l
Din acest momentne punempfoblemasd vedemmodulin 6are se poate
implementao listeliniare.
Fielistaalocatesecvenliall
Elimindm 3 (gtergem
nod- continut
aldoilea conlinutul
nodului2):
9i pentrua nu pierdeinformatii,
Pentrua pestrastructura ca
esteobligatoriu
informatiile
retinute
de nodurilecareurmeaze noduluigtersse fie deplasate
cdtre
stAnga:
Fielistaalocatdsecvenlial:
r28 Capitolul5. Structuride date
Acumse completeaze
valoarearelinutede nodul2:
tl Observalii
ln concluzie,la alocareasecvenliald,
accesulla nod esle foarlerapid,dar
adAugareasau qtergereaunui nod se fac cu efort de calcul, pentrucd
necesitddeplasdrialeconlinuturilornodurilor.
5.2.3.Listealocate
inlentuit
Existedouefeluride alocareInldnluitdi
alocaresimplu inlAnluit{ 9i alocare
dublu inldnfuita.ln acestparagrafprezentdm
pincipiilealociriiinlenluite,
urmandca
in paragraful
urmdtorsd aretemmodulincareimplementdm listelealocateinldntuit.
iecarenodfelineadreselepredecesorului
9i succesorului
sdu,a9acum se vedein
igura urmAtoarei
5.2.4.lmplementarea inlintuiteprinutilizarea
alocarii
vectorilor
ASacum am lnvdtat,listaliniardestealc5tuitddin maimultenoduriinhecare
exlstdo relaliede ordine.ln cazul alocdriiinEntuite,informatiamemoratdde
''ecarenod va cuprindeSi un cempde adresd-in cazulalocdritsimpluInlenluita-
sau doue campuride adresd-in cazulaloce i dubluinl5ntuitd.In acesl paragral
vomstudiaimplementarea alocbriisimpluinldnluitA.
info: j.nt9er,
{alr_un r Adrsa, ldbos! adb_urs,
tt
Vartdnta
C++ il
Li. E la- . r r ay 11 ..1 0 0 0 1 of Noal, n odl IJ[10001t
Dacefacemabstractie
de implementare,
listaestel
trE\Er\E\,Err
,i Ce observam?
ocupat 0 0
ocupat 1 0 0
r 23a56
ocupat 0
ocupar 1 0
r2
adrssanodululnou Introdus,
d) Al treileanodva retineca adresaurmdtoare,
cdacestas-aintrodus
Dentru dupdel:
ocupat 1 'I 1 0
listava fll
0updaceastdmodificare,
.8..m.".q,,trq,E
t3 2 Capitolul5. Structuride date
ocupal--+ olllrlllo
ocupat 0l0lrlllo
Listava devnii
Fr'1....[8.=ror
t Dezavantalelalocdriitnldntuitesunl
1. Accesulla un nodal listeise faceprlnparcurgerea
nodurilor
careil
preced.
Aceasta necesitSunefortdecalcul.
2. Informaliile prezente
deadresd, ln cadrulfiecdrui
nodocupememorie.
t Avanlalelealocdriiinldnluite
suntdatede faptulc6 operatiile
de adeugare
sauellminar
a unuinodsetacrapid.
Exemplelesuntdatepentrulistaliniaresimplulnlanluite,
dar bjneIntelese.
ne permitse deducem singurimodulde efectuare
a operatiilor
respective;enhu
listedublulnHnluite.
taanualde informaticdpentru clasaa Xl-a t33
t, Observatii
Exemple
-.
1. FuncliaManna-Pnuell.
Se citeqtex2. So ceroprogramul
pentrucalculul
funcliei:
(-.
,
_. = x -1, x>12
r{x
'' ) {
+2 ) ) , x< 1 2
l F(F(x
Vomlncepoprina studiamoduldecalculalfunctieipentru
x!15 Fix!g:
f(1 5) r t { t
Pentru dat,prezengmschematic
exemplul funclionarea
sa:
'I Pbgcat i
tlVartantb
"
va ! at r . ! ! ay ll..l o 0 l of lltncludle <todtroas.b>
ttr! s tt100l ,t.k,
n, k r I nt 6t . r ,
t, Se poatedemonstra
valoarea
ugorce pentruvalorimai micidecAt12, functiaia
11.Observatia multprogramul,
simplificd darexemplul
a fostdatin
a[ scop.
pe produsulcartezian
2. Functialui Ackermann.Se dd funcliade maijos,definit?i
N)4{.Secitoscn9in. Se se calculeze
Ack(n, n).
m= 0
=)
ln+l,
A ck(m,n n=0
i A ck(m-1 ,1 ),
IAck(m-1,Ack(m,nl)),altlel
Pentru
a elabora
algoritmul,
studiem
unexemplu
numeric:
e ck(2 . 1) a c k (2 ,0 ) ) &c k (1 ,1 ) )= ack(1, ack(0. ack(1,0) ) )
. a ct ( l, ac- k. c( k0,( L
E c k (o .1 ) -a c k (1 ,
)).a c k (1 ,a c k (0 .2 ) ):.ct(1.3)-E ck(0,ack(1.2) - )
ac t (r,1 ) ) )= Ec t(0 ..c k (0 .a c k (0 . ac!r(1,0) ) ) ) = -
-a
a ach
ct((0,
0, !6c
kk{(0, 0,. c t ( 0r
a c t(0 ,1 ) } ) ) !a c k (0 ra c l . {0,ach(0,2) ) ):
.ck{0, . ac |c ( 0, 3) }= .c t(o , a ) 1 5 .
't0 01
20 11 11 11
21 21 21 21 21
10
11 '1 1
02 12 12
21 13 12 13 13
0 't
11 02
12 12
t3 13 13 04 ack(2,1)=5.
137
pentruclasaa Xl-a
ranualde informatice
cout<<nFr; cj'n>>b,
a. n r k!l,nl6gt,
cout<<ra:r i ctnt>lrt
s t t k l t 0 l =i ,
s l lhl I 1 l =E t
ebil6 (k>0)
lr (srtkl tol & & stl kl lll )
kt.k-tt
r! k>0
bgtD
tlIk, t l t r r t lk , ll- 1,
sttk,2l r e6t t k + 1, 21+ 1
pentruvalorimiciale lui!r gi
Functialui Ackeinann ia valorioxtremde mari
I r. De exemplu,nu veli reu9isdcalculaliAck({, {).
lncercali.
r3 8 Capitolul
5. Structuride
date
5.4.Structura
de tip coadi
(-s_-.. Deflnllia5.4.O coadees{eo listdpentrucaretoateinse|5rilesuntfacute
k'F) la unul din capete,toate Stergerile
(consultdrile.
modific5rite)
ta celdlal
- capet.
Coada funclioneazape principiulFrFo (FlrE! In rirsr our) -
" pimul intratpimul ieFit".
Este cu totul nerecomandabild alocareasecventialda cozii, deoareceln
aceastAsitualie, are loc un fenomen de migratie a datelor cetre ultimele
componente (celede indicemare).
ale vectorului
Scoatemdincoaddpe 2 9i inkoducempe s:
I
I Se ob6erudacestfenomende "migralie".
propuse
Probleme
1. Caredintrestructurile
demaijosnuesteliniard?
trEr'E tr tr{l
E*E
13
E* E
E l:I
a) d) d)
.emplu:k=3;v=(L,2,31,p=2. Numarul
cititeste5. Duparutarekebuiese
em:
!a ; v= { 1 , 5 ,2 , 3 ) .
Risounsuri
1. d) 4, b) 11. b) 14, d)
Capitolul6
in recursivitate
Introducere
generald
6.1. Prezentare
Detinilia6.1,Reculslvllatea
esleun mecanlsmgeneralde elaborare
a
programelor.Ea cong6 in posibililateaca un suwrogrcm se se
autoapeleze.
Recurclvllatea practice
a aperddinneceslteti daledetranscierea directda
matemalice
'ormulelor Intlmp,aceslmecanism
recursive. a fostextins,liindutilizat
'n elaboraroa
multoralgoritmi.
6.2.1.Realizarea in limbajulPascal
autoapelului
Dupdcum 9tim,Tn limbajulPascalsubprogramelo sunt de doudfelurir
acostase poateautoapela,
procedurl9ifun4ll. Oricaroar li tipulsubprogramului,
insemodulincareserealizeazaulotransferul dilgrd.
t in cazul prcceduillor,autoapelul se rcalizoazA Win apelulprocodurii
respectivo, ei.Apelulsefacelatelcaln cazulin careprocedura
dininloriorul
esleapelal5dinexterior.
prezentata
Procedura in continuare
esterecursive pe randuri
9i afi9eazd,
.' separale, 7, 6, .,.,1:
numerele
142 Capitolul6. Introducere
in recursivitate
E t t ln (n ),
ex lq )l u (n -1 ),
!aFn+surnl(n-1) r
r llaln( r { r !! (7 ) ),
6.2.2.Realizarea
autoapelului
in limbajulC++
polli delipulvotdsaude unahtlp.in acst
Dupacumltim,tn C++funcliile
din urmdcaz,funcllllerelurnaz5
o anumltdvaloar. Orlcarear fj tipulfuncllei,
aceastasepoaleautoapela, lns5modulln care6erealizeazd
auloiransletul,dlletd.
t in cazulluncliilorde lip votd, autoapelul se ralizeaAprinaplulfuncllel
respeclive,
dln interlorul el, Apelulse lacla fel ca Tncazulln carefunctia
steapolatddlnexterlor.
Funcliado mai jos ost6 recursive.
Ea aligeazi,ps randurlseparate,
numerele?, 5,...,1i
*trclud. <lostr.lrn,h>
vord dtq,lu(int n)
( r ! ( n r .0)
{ cou!<<n<<sndlr
air)lu (n-1),
l
'
)
pentruclasa
uanualdeinformaticA axl-a 143
( co ut<<6 llc(? ) ;
)
I recursivitdtii
6.3.Mecanismu
f Probbme.Sd se calculeze
recursiv
n!.
fl ^ -^
n t- fact(n) ".-: c , ?n c N
' ' - l"
ln
.
lacl(n-1), alllel
varlantaP;scal vartanta
ci+ i .
S1ncludo <i.o6lBln.ht
c dt < < f a c t ( D ) t
l
cit ln(!sc!{.) )
144 Capitqlul6. Introducere
in recursivitate
E
Funclia se autoapeleazd.De aceastd date
paramelru'n ia valoarea2. ln stivdse creeazaun
nounivel,carc rejineD cu valoarea2.
H
1. ln stivdse creeazaun nou nivel,care relinen
cu valoarea1.
Yanualde informaticepentru clasaa Xl-a 145
" F-l*+
"tr
rdcF2 Pe nivelul2 se efectueaze
calculul2*1=2.
5e revtneaporpe n|vgtut1,
Aicisoaliseazd6, adicds-acalculat3 t.
a) lvlaipulineficient,
nr se poatecalculaglprlntr-ofunclieca in exgmplut
urmdtor:
Varianta
Pascal l VadantrC++
war vaL ,n,D. inc6g ! , #Includ <lost!u,h>
Drocedure lact (w!1,, n t Intg!, rcldl laot (r.!t valrlnt n,lnt&
wa! Drodrlnbsr),
{ itr! val,n.D.lf
c dt < < r n r , , c t n >>n ,
E it e (,n - ' ), re adlt r ( n) ,
)
r46 Capitolul6. Introducerein recursivitate
EEE 1 | 3 | ReferinFc6tree
2 ReferinldcdtreD
E 1 ReferinldcdtreI)
3 3 Referinta
ceker)
2 catrep
Referinle
T--1 1 3 ReferinldcatreI)
l"l
,l Observrtli
,t. exisldposibililatea
in cazulunuinum5rmarede auloapelSri, ca segmenlul
alocat, ln careprogramul
spa(iul
de slivesd depeseasce caz se va termina
cueroare.
presupune
Recursivitatea in comparalie
memorie
maimult5 cuiterativitatea.
6.4.Cumgandimun algoritmrecursiv
?
Pontrua ne familiariza
cu rationamentul vom pomide la caleva
recursiv,
intuilive.
exemple
6.5. Aplicatiirecursive
6.5.1.Aplicatii
la caresetranscrie
o formuldrecursivi
cdr<<!|lEr(a) t
edtern(|!'a6ll(x) ) l
f in comparalio
cu abordarea
lleratlvd,
abordarea prezinle
recurslve avantajul
S scrieriiconcentrate.
fn +]. m=0
=
t" ' '
A ck(m.n ) n=0
l A ck(m-1 .1) .
IAcktnr- l. Ack(m,n- l)), altfel
U,,
f!.Dcluate <tostre.lr.h>
I un p@gramcarc calculeazd
in aceastasituatie.estecoted se se foloseasce
a, U" ilentiv.SA neimaginer'r
cun lunclioneazd aceastafunclie.
,,vtir!;ita:'b";Pb
: r,.,;,ill[.1 1"i.'
wa. E , f 0, f I , f2 , t !tl t c r, {Itrclual <lo8tr.r.h>
fa, a=b
= - b.b).a> b
"rm6q12,51 lcmmdc{a
Icmm dc( a.b- a)<.ab
Manualde informatice
Dentruclasaa Xl-a 151
Aceast5detinitieestetranscrise
in lunctiarecursive
crEl.tc:
probleme
Bezolvimaceeagi (utilizand
iterativ demaisus):
dlinitia
rl t ( t ! r t ) , r a a l tn (a ) |
c o u l < < rar,, ctn> > r,
tttr.to( t br t ) r r d l rn (b ), o o u r< < rb.,, ctn> rb,
i!
. > b lhn. r . . -b l l (!> b) ...-b,
6l! . brrb -a , b.lr-a,
( , c'l[dc: t , a) r1..
wrtl.ln 6out<<'cfindcrn<<er
)
ptobleme,
Peniruaceaste 6steIndiferont
cevariantlderozolvaro
soalege.
pnvua calcula
D Apllcalla6.5.Sdsescrleo funclierecurstue sumacifrelor
unui
numafnalural.
tnltlal,prezenlam
EI Rozolvare. varianta
iteralivat
n= 0
=
s(n)
n=0 =
rol, altfel
{l'.oaro+stnaru ',', {l'u,,*r",,0,,altfel
sumaulilizandrelatiaprezentatd:
de maijos calculeazd
Programul
*lucluat6 <iortleu'h>
6,5.2.Aplicatii de o formuli de
la carenu dispunem
recurenta
( tnw( ) I
3 exerct1tu. Moditicatiprogramut
astfolincat caraclerulo - care marcheazi
sfargitul
Sirului- sa nu tio tiparit.
154 Caoitolul6. Introducere
in recurslvltate
penlrua transforma
D Aplicatia6.8.Sd se scrieo tunctierecursivd un numdr
naturaln,din baza10 in bazal! (1<k<10).
)
t h. n lr r aat o m(tr a l i v b ,b ),
( c d t< < .r." , cl tr> > n,
c o u!< < ,brrari , cLn> > b,
tal ssfor& (E ,b),
E it o( ' n! , ) , re a d l x !(n ), )
w r l! 6( ' baz a! ' ), re a d U n (b ) |
l! . f o' ln( u, b ),
{1,2,...,r)9isecertoatepermulerib
D Apllcalla6.9,S6dd multim6a acesteia,
pentrunr3 avomi
Exomplu:
l 3 , L , 2 r, t2 ,3 ,7 ', {2 ,1 ,3}, (3 ,2, 1} , 11,,3,2rtt, ,2,3r .
EI Rozolvare.
in vederoa problomi,
rezoNerli urmebarele:
obserydm
. cu unsingurolmsnt(1) areo slngurS
multimea permutare:
{1};
. permulare
dinfiocare (1,2, .. .,n-1' ({ar,a:, . . .,!.-r}), so
a mullimii
permulerl
oblinurmetoarele alemultimii(1,2. . . . , r) i
{r, a,, a!, . . . . a! - 1, a1} ;
t!!,n ,a!,..,,!"- 1, a, I ;
(a l, a,, ar , . . , , a"- 1. r ) .
tsrual de informaticipentruclasaa Xl-a
( D l hl ' kt
!o! (tr1rt..krt+ + )
{ crrl l : t
D fl l rtIH ,
Dlk t t r t ,
! o! Lt r l !o k dlo D.flnut (k+l,n.D) ,
crD :,
D 11l rD l k: ,
DI ll r : elk l ,
( k + 1 ,[,D ) l
Det ut )
'
l
DI ll t . Dah l ,
D g fi ut (1, !,D ) t
l
v!t ! e( ' nq' ) , l e a ttl n (tr) t
r5 6 Capitolul6. Introducerein recursivitate
^[i
ll
00
11
.0 0
11
"lr
^ll 11
It
00
t, Algoritmul
se dovedegte
extremde ulilin colorarea
atuncicandsuntcunosculecoordonatele
uneisupralete lnchise
unuipunclsituatin interiorul
ei.
Acestalgoritm gisubdenumirea
eslgcunoscut dealgoritmul
Frr,L.
. in cazconlrar,se iesedinfunctie.
)
l
!o ! i: - 1 E o r a to
for J , - 1 t o ! d o
E it e ( u I i, jl ) t
!
r58 6. Introducere
CaDitolul in recurslvitate
doueobiecte:
$xi' in malriceaurmdtoaresunlreprezentate
l; ; ::l
^=lr
rJ
un gingurobiocl:
iarin malriceade maijos estereprezenlal
rt000r 0r 0I Il
'=lor, tl
lr000J
Ca 9i in problemele anlerioare,pontrua evitatestuliegirildin matric,
aceasta avendvaloarea
estebordaltcu linii9i coloan "0".Algoritmul estetot cel
dinproblema selacep8 dire4li.
(Flll),daraicicSutafa
anlorioard
in programul se cilegtemalricea9i s oautdprimulelment"1'
princlpal
prinlreelemenlele acesteia.
Soaplaze apoifuncllacoq)act ( ) carearerolulde
a marcacu o loaleelemenlele apa4inacesiuiprimobleclidentitical.
matriceicare
La revenlre, se lesleazedact maiexistdglomente cu valoaroa "1" in malllc6.In
caz alhmaliv,s poatelrageconcluzia ce fn fologlatleaveaminitlalmai multe
obiecte (altfel,
lotografia
contineaunslngurobiecl).
{ y ++ , }
rh l l (yr.n & & .Ixl l yl t-1) t
)
unlll (y.n) o ! ( at x , y ) El) w h tl 6 ( (xl a) & & .Ial tyl I E 1),
urt ll (s.b) o a (.t s , y ] ! 1) t c d u ra ct (* ,y,.) t
co4)rct(x.y,r),
to r (t= 1;t< .nrt+ + )
lor t:!1 lo ! alo fo ! (j .1,J< -nrJ+ + )
,.! (al tl IJl ..1) sastc.1,
If !I1,lj=1 th.n i f (rl ai t)
gaal.t trtn6t c o u t< < ' uI aul r. obt.ct6n,
1! !'a6r.t Lre cotrt<<"un obl.cl',
th6n ritola( ,
elao wrtteln(
propuse
Probleme
1, Calculali
recursiv
sumaa n numere
naturale
cilite.
2, Calculali
rocursiv
expresiile:
a) 1x2+2x3+,.,+nx(n+1);
b) 1+1/2+...+1/r;
c) 1/(2x3)+2/ (3r{)+,..+n/( (!+1) (r+2) )
t60 Capitolul6, Introducere
in recursiviratE
5. Calculalirecursiv(; prinutihzarea
lormulei:
[1. t= o ;
cI =1"-l+rc;. ortt"r.
L /{
cu cel necesarpentrurezolvarea
Comparalitimpulde rezolvare problemei
4.
6. Scrieliun subprogram
recursivprincarecalculatorul
ghicesleun numarnatura
ascunsde dumneavoaslra (numarul esle cuprinsintre 1gi 3oooo).Atur.
propuneun numdri, se va respundeprin:
candcalculalorul
1, dacenumdruleslepreamare;
2, dacdnumarulestepreamic;
0, dacdnumdrulaloslghicit.
7. Scrietiun subprogramrecursivcare calculeazacele cuvintedislinctecu 2E
caracterese potformacu n caraclerer 9i tr caraclereB,
8. Calculaliconlormformuleiurmeloafevaloareamaximbrelinutdde un vectoro
numerenaturalecu n componeniel
fvn l n - l:
m a x{v l .vl2l....vlnll < "trl'
' - vI l. V l2 l. . . . V ln
- | lr.V ln l, J t rt c t .
lmax(mnx,
9, Se citegtsun numernaluraln. Se cere sd se scrieo funclierecursivdca'.
relumeazicea mai micdbazain carese poaieconsidera n.
10. Scrietio lunclierecursivdcarolosteaz daceun numdrnaturala>1 eslepr n
'11.Scriglio lunctie recursivecare relurneazesuma olementelorpare ae u.r
vectorcitil.
Exemplu: n-{ gi v.{2.2,5.5),seretufneazd10.
Pehtru
12. Scrielio fun4ie recursivaprin care se testeazddacd un num5rnaluralx s
regesegleintrecomponenlele unuivectorv cu n numerenaturale.
'13.Scrietio lunclie recursivdcare primeSteca parametridoud numorenalura
l<J 9i un numdrrealxIi,jl Siretumeazd txt (parteintreaga
din x). Nu s+
vorlolosifuncliile
spocializate
ale limbajului.
de informatici pentru clasaa Xl-a r 6t
k> n
ke { l,n}
1<kcn
Comparalieficientacelordouamoduride
calcul.
L
t62 Capitolul6. Introducerein recursivitate
27.Ce se afigeaze
lat irrltxn(r(12))r /cout<<t(12)r ?
cl L2i
b) 21i
c) eroare dl6 e:(cuta!6;
d) 0,
nhl
( tr (n)
rl um (atr-ro),n + t{!-1),
elB rtun 0,
a) sumaprimelorn numerenaluraleimparo;
b) sumaprimelorn numerenaluraleparei
c) sumanumerolornaturaleparestict mai micidecatE;
d) sumanumerolornaturaleparemaimicisauegalecu n.
ualdeInformaticentru clasaa xl-a
I s e dt leh (n );
.) 295;
5) 1021t;
:) 1000;
1) 10000.
w! 1t 6 ( v 1[ I ] . ' ' ), l
)
ll vL s! \1 cotrlln ata!.
// tDc.geil d Ltaltc.l 1
wrtt. (v2 tl1, .),
r (n, j., I ) ,
la
30, Dacdn esle egal cu 3, va=o,,2,31 9i v2r(4,s.1) ce se afi9eaza
apelulr (n, 1, 1) ?
a)123;
b ) 1 4 2 531 ;
c) cerinlanu estecorect6;
d){5 1 .
itolul6. Introducere
in recursivitata
a)123; b)r.23{55;
c){55; d) nici o valoare.
l or ({r1rt< !arI+ + )
b(1,a) t
loa llE l ro n d o r a d rr(v ttt );
leadln( r ) rb (1 ,u ) ;
)4; b) d)].
VarlantaPascal VarlantaC++
lunctlotr s(E!lnleser) ! inlosort
(
l
,
a) rturr *(a-2);
b ) x: =n (n nod 2) ; b) retur! x(n%z) i
c) return x(n-1);
d ) x: =x(n dt v 2) , d) roturn !r(E/2).
VarlantaPasoai
tuacllon !n(at r.nb6cr) t in!lr;
{
It n.0 th ! 6 n3 .1 lf (n-.0) rlurn 1,
els.n r63 rBn(n _1 ) + 7 e1s rtul4 !*e{n-1)+7,
)
a) o; b) -1; c) 1; de maisus
d) niciunadinlrevalorile
itolul6. lntroducere
in recursivitat
40. Pentruprogramul
de maijos,do cateori se autoapeleaztunctiad?
Indicaliii Rezolviri
1 , S " = 1+ 2+ . . . ,r-l + n ; S.+ S !-r+ s ;
^ '' f0 , dacan= o
[S- 1+n, atflel
7. Existl (2n)t pormutSri
ale literelor.
intrucatpenhutrecarepermutare
conteazddacds-a inversat
A cu L, (2n)t s impartela nt. pentrucd NU
conloaza
daces-ainvorsat
B cuB (2n)t, selmpartedinnoulant.seobline:
.-''"_ c;
17, I
tll.nl
8.
hl Matn(lat E)
M!*lD(n!lnleser) !lat6gr,
ur rua.l.ntger; Ir (!.E t) rl uh vl 1l ,
Il a=l lhn udrls3=vt1l ( !q-ua* l r(a-l );
t! (rux<vlrl ) rerun vltrl;
|! wrrl t x i b (n _ 1 ), .la rtuh na,
i! w<vlnl rh n )
id * h r.v l n l ,
ls M.xLsr.rnlx,
oentruclasaa Xl-a
de informaticA 167
!r1s(n,2) .
lunc$ade maiios se ape\eaz6
tO De exemp\u,
, ' VarlantdPascal ct i
i"iliiiI VqildntA '' I
tnr aDartt!(tnl n, tat x)
aDartlno (tr,3rlacsger) !booLolnt ( Mr-.o) roturn 0,
:L ! (v[!]-E x) retuE r,
lhe! 4Dartln6!
-tso
aDartl.e 3 ( tr- 1, x ) t
-ADarcln
168 CapitolLrl6. Introducerein recursivitate
VarlantaC++
tac Palttrdbd(tnr I,
(
lf (t>.J ) r6tur! !.,
15 .
: VarlanlaC++
(tr<10) r6tun 1,
l6e reruft rEci! {a/ro} +L,.
)
de informatici pentru clasaa Xl-a 169
ir;l
tnt DLsttscto(i'Dc I.lnt n)
Di.6tlact (I, nrr.4!etor) | b@!.ean,
var gaaltrbooleln, Ir (l-.n) return r,
22,Esteineficient
sdcalculam
recursiv.
23.Sdpresupunem
ceavemdocalculat
a (a.5 ). MaiTnEicalcutdm:
8( L ,1) - 1 . g(L,2l-0, S (1,3).0, ... , g (1 , 8 )ro . Urme a z A .
)
I
for lr-1 !o t - k do
a:.a +P (n-k , { ) t
27. ari 2a. d); 29. b); 30. r)i 31. a)' b); 32. r)i 33' d);
6 2 Exmplu
Flgura
Metoda DIVIDE
ETIMPERA
generali
7.I. Prezentare
7.2.A plicatii
7.2.1.Valoarea
maximidintr-unvector
Rezolvare, Trebuietipdritdvaloareamaximddintrenumerele
relinutoin veclorde
: la j (initial
i=1Si j=r).
Pentruaceasta,procedemaslfel:
. daca l=j, valoarea
maxim5
va tiv lll
. contrar,vom lmp54i vectorulin doi veclori (primul veclor va contine
componentele de la I la (i+j ) aliw 2, al doiba va conlinecomponentele
do la (i+j) dtiv 2 + 1la J, rezolvdm subproblemele (afldmmaximul
penlrufiecaredin ele) iar solutiaproblemeiva fi data de valoareamaximd
celordouesubproblemo.
dinlrerezultatele
o'ogmulesteurmdtorull
a t.Mx ( i. . ( t + l) a l l v 2 ), )
b ..ux ( ( t + J ) dltv 2 + 1 ,J ),
t
c o u r< < ,! w _n< < rq (1, n),
)
to r l t.l t o n dlo
EI! h ( 'mx-',Mx(1, n) )
prininterclasare
7.2.2.Sortarea
rl D t-.aqt t
tf alDl > a t q l
,
)
)
i !.D, l. - r + 1, k ; . 1;
wh tl ( i< = d) . nd (j<=q) dlo t b tk l .atj l ;
tl e l i l < = elJ I t lF n I _ j +1;
b tkl: - at il; l
i : = i+ 1; k ! . k + 1
!o ' (i = 1 rJ< ati ' + )
{ b tk l =atJl ,
j != l+ 1, k.=k+1 l
b l k l ! - aljl; k ! .k + 1 l
fo r (l = D ; i < ..I; l + + )
!o ! t!=j r o c a to { !ttl E b tkl ,
t lk l t = aI il; k :.k + 1 l
)
{0,. n=1;
=lzrll
T(n) l* n. aru"r.
I 12,]
7.2.3.Sortarea
raoide
va;ta;rta
c++ .
! ! r D v 6c t or larra y I1 ,.1 0 0 1 o r *lncrudo <Iost!M.h>
l n ! atl ool .n,k,
rcr.d Dor (tst U.l.nt lr,ht&
war l, t r , k r inls r;
k ,tl r 41100! )
{ l nl i 11l , Jrl s,c, i rE 0,.rrE -1,
Dr oc edur Do z (1 i ,L s :i n te g 6 .; v h l r (t< J)
rar ktitrt96i, ( tf (ati l > atJl )
v E i a rv c Eo rl t { cratj l t.tl l E A tl l ,
al l l E c, c-i l ,
wB r i, j, c , 11, j 1 :i n r e e r, i 1= -J1; l 1E -cr
,
j :J + l 1r
j 1t = - 1, )
i:
- t it
)
178 Capitolul 7. Metoda DMDEETIMPER^
t l! = _ j 1 , ( Int l,
l1! . -c coqt<<nn=n, clr>>n,
to ! (Irl rI< tnr1+ + )
i! = l+ : 11 , ( coul < < i a Ii < < t< < i t r,,
j
'-J+J1
)
l or (t.1rt< -!rl + + )
Droc.dur. CuLck(lt, lr:ltrr.g.!), cdt< < A Ii l < < udl l ,
,
t! r i< r .
Dor ( r t r r r,k , a ),
quic k ( 1r . ,k -1 ),
c qt c k ( k + l, l ,i )
! o! trrl t o n (l o
c ulc k ( 1, a) , _
lor t t r L t o r (!0
t E Lt . la( . t t l )
RefinelltSortarea
rapiddefectueazl
In medlel!.log2n operalii.
frr
! Demonstralla
necesne
cunogtinle pe carenu lo avelila nivelul
de matematic5
acstui
andestudiu...
pentruclasaa Xl-a
rlanualde informatictr 179
;.2.4"Turnuriledin Hanoi
M Rezolvare.
Daci n=1, se facemuiarearb, adicdse mutddisculde pe tija a pe tija b.
Dacdr=2, se fac mularile!c, !b, cb.
in cazulin carer>2, problema se complicS. Notdmcu II(n,a,b.c) 9lru1
celorn discuride pelija s
muterilor pe lija b, ulilizandca lije intermediara,
tija c.
exemple:
.' Priviliurmdtoarele
'l) penlrun=2, avem:rI( 2. a.b. c).rl (1. a, c, b) . ab, s ( 1, c, b, a) =ac, ab. cb;
2)pentru
n=3,avem:
!t(3 ,a ,b, c ) . I r ( 2, a, c , b ),a b ,s (2 ,d ,rr,a )= E (1 .a ,b ,c ),ac,B (1,b,c,t),
a b ,n {1 . c . a, b) . c b,fl (1 .a ,b ,c ) = a b , a c ,b c ,ab,ca, cb, ab
180 Capitolul 7. ldetoda DMDEETIMPEM
VariantaPascal
{iDcluale <ioElred.h>
Drocduro he (n:in!sert
e. b, c : c ha! ) t
voi(l h6n (int n,cha! a,
{ hd(n-1, a.ctb),
h atr ( a- 1, a, c , b) , c o u l <<. <<b <<e a d 1 t
Gite lt r ( a, b) t hsn (n-1, c, b, a),
h an ( n- 1, c , b, a) )
l
{ c o u t <<" N =n ; c l n >>n ;
vltre ( tlc= ), r 6adln( n) ; a-ta|, b r 'b t , c ='c r
'
ar-ta ', b :Erb' ; d! : ' c i,
)
7.2.5.Problema
tiieturilor
cu o gaurS:
Fiedreptunghiul
h . xv(i),yv(i)
x,y
gauratrebuiesA indeplineascd
Pentrua se afla in interioruldreptunghiului,
s multanconditiile:
1) w{ i) > x ;
2) x w( i) < * + 1 ;
3) w{ i ) > y ;
4) lr y ( i) < y + h .
ve{icaldprinaceaste
Dacdlacemo tdietura gaura,oblinem
douddreptunghiuri:
1) x , y , x v (i )-x , h;
2) x v ( t ) , y , 1 + x -x v (i ), h.
Programul
esteurmdtorul
VarlantaPascal
t ype vect=a lrdy I L". 9l of *Inc1udl6 <tostr6M,lD
lnt l, h , l , n , a ! , y ! , 1 ! ,
hl,r d l 1 0 l , ! r y l 1 0 l ,
{ a l i ntr)(a,y,w Ii l -x,h,xf ,
y{,1f ,hf ,F,]ry) ;
while (i<En) anal (nol saalt) d l nr)(w l tl ,y,1+ x-w l i l ,
h,af.yf,1l ,hf,w ,try),
t!(wtll>* )a I(wlil< 1)
a ti nE )(x,y.1,!ry1i 1 -y,xf ,
an d (w(il >y) and yf,,Lf,,b!,w ,!ry),
(rrytil <ylh)
a ttu[)(atrryIi l , 1.h+ y-rry[i ],
then tasit !=tae xf ,yl ,l t,hl ,F,rry) ,
el5 e i ! =i+1;
)
142 Capltolul7, lretoda DvtDEErlMpERA
rr (1.h>1frhf)
d lqr(x,y,w I il -s,
n,xf , r . f . ll, ht . w, ! r y )
d La r(xt'tl t , y . r + s - pI t l,
!,:. ! . ! { . r t , hl, s , ! : r ) )
dhD (a. !., 1, yv I I I -r, )
Br, y f , Lt , \ t , w, ! a) t
altq ) (x,tr y t ll, 1, h+ y - w I t l,
xl,yf . lf , hf , R, ! r y ) { c 4 t <<'. r n , c l n >t a t
lor ( t n t l '1 r l <t n r t ++)
( c o u t <<'x t " <<I <<" 1 =i t
r! (1 * h)>(1t * b! )
c o u t <<n y [ . <<t << n 1 - n ,
7.3. Fractali
de qrafici
7.3,1.Elemente
(varianta
7.3.1.l . Ceneralltiti Pascal)
Primiidoi pamehisunttfansmigi
prinreferinld.
Initializarea graficse poatefaceln douefeluri:
sistemului
1) prina solicitasd se identificeautomatplacagraficd$i corespunzebrei sd
se incarceun anumitdriver9i sa se selectezemodulde lucru- cel mai bun din
punctde vedereal performantelor:
Dlocctur inits;
qdriver 3= detectt
initgEaDh ( 9diiv6r. !tr@dl, ,c: \tt\bst, ),
if srEDhresult<>o rh6n
(varianta
7.3.1.2. Ceneraliteti C++)
Primiidoiparametri prinreferintd
sunttransmigi
Initializarea graficsepoatefaceln doudfeluri:
sistemului
1) prina solicita
se se identifice placagrafice9i corespunzdtor
automat ei sd
se lncarceun anumitdriverqi sd se solectezemodulde lucru- col maibundin
punctdevedereal perfomantolor:
voIC tltt ( )
( cdrr.vs! r DEM|,
lnltgrcDh ( &g<blvo!, &trcde, iEt \ \BoErrA$Dc\\Bor') t
1! (srarhresutr() )
{ cout<<"t.ntatlw. $!.ualt6. r,
cout<<iA!'.sa o c!!la Derllru A hchiale,..rt
slch( ) ,
4t t { r ) '
)
l
Tentat;va
de inilializare
graficdpoatee$uadindiversemotivecum ar fit lipsa
. .
unrlal GRApErcs.calea Indicatagregit etc. Testarease realizeazacu fun;tia
intfeagdglal)hreBult ( ) care retumeazdo in caz afirmativgi o valoaredjferitd
de 0, in cazconlrar.
7 .3 .1 ,3Se
, tarea
c ul ori l or
l i proc es udle d e s e n a r(ep a s c aiil C+ + )
.L Ob8ervalii
Schimbareaculorii nu afecteazece am desenatanterior,ci doar ce este scris
dupaapelulacesteirutane.
C++,numelesimbolical culoriiso scrieobligatoriu
in cazullimbajului cu
maluscul9.
Ooeratiade desenare
Oricarear fi modulde lucruales,un punctse reprezintd printr-unpixelde
coordonalex (linia)9iy (coloana), ambelovalorilntreglPunctuldinstanga-sus are
coordonatele(0, o). Pentrua ne mutsla pozilia(r,v), vomlolosiprocedura (in
Pascal)saufunctia(ln C++)Dovsto(*,v). Psnlrua trasao liniede la punctul
curent,determinat anterior,panela o noudpozitle,vom utilizaprocedura (in
Pascal)sau functia(in C++)1lrto(!.1,v1). Astfel,vom oblineo lanieIntre
puncteledecoordonale (x.y) 9i (x1,yl).
Exemplu.Maijos,esteprezenlal un progrance deseneazd o liniepe diagonala
principald (de
a ecranului lacollul dinstanga-sus la collul
dindreaptajos)l
7.3.2.Cutba
lui Kochpentruun triunghiechilateral
Se considereun kiunghiechilateral_
Fiecarelaturea sa se transformda$a
cum se vede in figura urmitoare(se impartein trei segmentecongruente,se
elirnindsegmentul
din mijlocAise conshuie$te
deasupraun tfiunghiechilateral):
Figua7.1.Exempu de kanstomafe
.. .tr-k \
rt=-;-' tt=_. rt-;-l.
- t:
Demonstrali
singuriacesteformulel
s la bazaprocedurii
Se prezentamalgoritmulcare Enerator:
. se porne9tede la segmentul AB;
. se determindcoordonatele punctuluicare constituievarfultriunghiului
echilateral(sd-lnotemcu V)i
. in cazulin caresegmenlulnu a fosttransformatde 1E ori, se apeleaz;
generatorpenhusegmentele AC, CV,VD 9i DBI
. conkar,se apeleazeprocedura caretraseazeliniafrentdACVDB
in programulprincipalau fost alese punctelecare determindtriunghiul
echilateralinilial * plasat in cenlrulecranului- Si penku fiecare segmentce
o laturda acestuias-a aDelatprocedura
constituie senerator. Odatatrasdcurba,
se coloreazd interiorulacesteia.
Programul
esleurmdtorul:
VarlantaC++
* ls c luale' lr r aphtc s . h "
var Lr gdrtwer, srcdo, #inc1ud6 <i,oerEd,b>
1E rinteg6!t #includ6 <alallib.h>
:nEa! l@a ! r[r69ef ; #includle <co!ro.rr>
*ltrcludo <Eth.!t>
Dlocdture tlltst int gdrlwr,srodle, 14, t t
r (!< r6)
fo rD16 ( (2* x 1r x 2) aliv 3, { s arato!(xl ,y1,al i v( (2* al ,+ a2),
(2 * y1 ry2 ) alir 3, ( x 1+ 2r a2) div 3) .quot,tl i w ( (2* y1+ y2) ,
a , lyt"+ztyz} dt v 3, x , y / Fi/ 3) t 3).quot,tr+ l t1a);
se!rator(al i v( (2* xt+ x2),
3) .quot,dtw ( (2ry1+ y2) ,
c'n era tor ( x 11y 1/ ( 2* x 1+ * 2) 3) . quot,a,y,r+ t,l a) ,
a liv 3r (2* y 1+ y 2) div 3r gnorator(* ry, dl l w ( (* 1+ 2rx2),
3) .quot.dl i v( (y1+ 2ry2) r
gneralor ( (2*x1+x2) div 3, 3) ,quol ,D + 1t La) ;
(2* y1+y2 ) dllv 3, gnorator(attv( (x1+ 2* x2),
x,y, a +1 ,13) i 3) .quol ,dl i v( (y1+ 2* y2) r
G'4ei.ror (a,y, (a1+2ix2) div 3).quo!ta2,y2.tr+ 1, 1a),
3, (y1 +2 * y 2) dt iv 3, nr 1. ls ) ;
tnnlor( (xlr2*x2) diw 3, e 136
' des6n6z(* t,y1,x2,y2,a.vt,
(y1 +2 ry2 ) dt w 3,
x2,y2,n +t" , ! a) t
rr = gl[l*( ) -320;
, ) r leBt llE{ 18) ;
ril6(,1 8: sotreaqro! ( l50r !'6tut {)-150,
16 O+IJr sotu:<y ( ) - 15 0, 1. 1s ) ,
gnelator ( 160+r/, ggt!u:<r' ( ) -
rr!.g elms-32 0t l 5o, 160+ ' j l l v(L,2),quot.
96nrdtor ( 160. golr!:.rr-150, srMr.y()-150-
16 0+!, g .tda : ! lf - 150, 1r t d) , ci l (E * (8ql t ( 3) /2) ),1r 1,6),
qe!rator { 16Ort ,96lm:iy-150, getrrrtor (16oral tw (!r 2),quol ,
160+tr dlr 2,gte!|.!r-tso - c6l trl r.y()-150-
I]* a ou ail { sqr t ( ! ) / 2 ) , 1, r s ) , c6t1(tJ, ( sqrt ( 3) /2) ) / 160,
g.!rator{160+tr dtlv 2/ gelnddr- sl MY y ( ) ' 1s0, 1,16)
150-r* round( sqrt (3) /2) , r60, 5 r!1116ry1 (1,4) '
!'6cl!6:r]r- 15 0 , t, 1a ) , f l ooal ttl L (dIw (q6tuB ' { ), 2)
. . r ! l11ar y l{ l ,b l u 6 ), . quor/ div ( sorndor ( ) ,
fXoodfitl (Cstrls dliv 2,
gotGrqr' aliv 2 r rdl) ,
Privitimaijosrezultatele ponhuditerito
obtinute valorlaloluils:
! a- 2 1 s :3 Is-{
Figua7.2.Exemplo
de fractaLi curbsilu Koch(triunshl
formatic! alutorul echilateEl)
9anualde informatici pentru clasaa Xl-a t9l
unpakat.Fiecare
Seconsidere dupacumsevede
laturea sasetransfofmi
-r ligura
demaijos:
- --t-L-r-
Figura7.S.Exmplu
de lransromare
ril
. ,tI r,rll, Varldma
Pascal. ,
*ircludt 'rr.Dhtc.,h'
vrr gdrlw!, g!od6,I! !iDtse!, *Lacludt <to.tr.u,h>
*lncluaL <.tdltlb.h>
DlocealuEo lalls, *tncrud. <conto.h>
*includt <d!h.h>
Droc6alur rolDls(ac,yc.x1. Lal sal!lv.!.!|!odl., 1.. t ,
vaE a,yrlnt.gert
l
itolul DtvtDEETIMPEM
Drocalure atean(x1,yl,s2,
y 2, n. 13. int s e !); v o i a t rotD l & (i ns xc" i nr yc,
v ar x 3. a4, *5, x 6 ,x 7 ,* 8 ,x c , i D! x1,l nt yl ,i nr & x,i nc dy,
y 3. y 4, y 5, y 6.y 7 ,y 6 ,y c ! i n to g 6 r;
{ ...
,
v o l d d66r(i nr x1, i rr y1,i nt
x l! = { 3*x 1+ x 2 ) tl i w 4 , x2,i nt y2, i nt n.i D t l s)
y 3. = ( 3*y 1+ y 2 ) d i w 4 ; ( i nr x3, x4,x5, x6?x7,y3,
! o! D1d( x ! , y 3 , x l ,y 1 .x 4 ,y 4 , xc,y3, y4 ty5,y6 ty7 t!8,yci
- D i /2 ) t ( x3= al i v(3* x1+ x2,4) .cuort
*c: = (xt+*2 ) dliw 2,
y c : = ( y 1+ y 2) a l i w 2 , y3= al i v(3ry1+ y2, 4).quor;
r ot Dlan( *c ,y c ,x 3 ,y 3 , x 5 ,y 5 , rorD r.s (x!,y3, a1,y1, x4,y4,
-vt P r/2t i
- D !/2 1 t xc-di v(x1+ x2t2) .quort
r ot Dld ( x c ,y c , x 3 ,y 3 t
yc:di v(y1+ y2,2).quor,
a6 .y 6 ,' ti /2 ) i
rorpf an(xc,yc,a3,y3,x5,y5,
x B ! = ( a1+ 3r* 2 ) a ti v tt
y 8 ! = ( y l+ 3r y 2 ) a u v 4 , -r{_pt/2) r
rotpl an (xc, yc, * 3.y3r x6,y6,
r ot DI aD( x 8,y S,x c ,y c , x 7 , tr7 .
M P t/2),
Di/2 ) t agrdl v(x1+ 3* x2, 4).quor;
ygE di v(y1+ 3* y2, 4).quor;
l otsD fq4(x8,ya,xc,yc,x7,y?,
NL,PIl2l i
desen(x1,yl ,x3,y3,n+ 1, 1s),
.1os6n(x3,y3,x4,y4.n+ 1r 16) ;
dE en(x4, y4.x5,y5, r+ 1,Is);
al eFn(* s,y5, xc,l .c, n+ 1,Is) ;
al 56n(* .,yc, * 6,y6, n+ 1,1s) ;
ddan{a6?y6,x?ry7rnrl , 1s) ;
al eaor(17,y7,x3,y8,n41, 1s),
d6gen(x3,y3, x2r y2, n+ 1,1s) r
)i
( tuvro (x1,Y1) t
Li ato(x3,1,' 3);
); l i nel o(* 4,y4);
lj
1i n6to (* 5,ys );
),
)
sllte ( tlsr, ) ; t eadlln( 1s ) ;
lDl.ls; stcolor (ral) t ( c o ut< < ' 1a= " ,. cl n> > ts;
d.a n(1 00 , 1 0O, 300, 100, 1r t s ) , tD i t ( ); sstcol or(6);
d.s n(3 00 , 1 00 , 300, 300, 1, 1s ) t d e sen(100,100, 300, 100r1, 16) ;
al66 D( 3 00 ,30 0, 100, 300, 1t 1s ) ; a t eseh(300,100,300? 300, t,1s);
ara a(1 00 / 3 00 t 100, 100, 1, 1g) , d lB n(300,300, 100, 3Oo,1,Is),
s6 rf illstyxo ( 1t blu) , d B .n (100,300r 100,10or 1,1g ) ,
floodlliU (getjtla* allv 2, 8 etf,i 11sry1{ 1,!),
q6t!Er.l' div 2, !6al) f,loodl l t1 (di v(s6@ s( ), 2)
.quot, alj.v( !rtm:rr' ( ) ,2 ) .quot,6) ;
s rcho; cl osgl aD h ( );
vanualde informaticipentruclasaa Xl-a 193
pentru
oblinutein urmaruldriiprcgramului,
Suntprezentatemaijos imaginite
:lieritevaloriale lui 16:
7 .3 .4.Ar borele
I
I
Figura7.5.Exemplud
hanstomar
in
)
vanualdeinformaticA ntruclasaa xl-a
Pentrudiversevaloriale parametruluide
intrare16, vom oblinearborii:
Figura7.6.Exemple
delraclalido tipalborc
t. Observa!ii
Exemplglograficeprezentateau tosl generatepentruvalorimici alo lui 16
deoarecela tiperire,detaliilesuntgreude observatpesteo anumitelimitd.
cenerareafractalilorrepfezinteo aplicatiea recursivitdlii,
tehnicaaplicate
fiind DN|DEEr h,rpEFA.Penlruvalorimari ale lui 18, timpulde efoctuareal
oalculelorpoate fi 9i de ordinul zecilor de secunde,ceea ce poate fi
considoratun inconvenientmaior.
propuse
Probleme
L Se citegtea>1, numdrreal.Se ceresa se scrieo functiecarecalculeazeh(a)
cu 3 zecimaleexacte.Nu estepermisdutilizarea a limbajului.
funclieilogaritmice
2, Scrielio funcliecarecalculeaz5prlnmeiodaDlvlDEETlrrPEaasumanumerelor
retinutedink-unvector.
3, Referitorla problemaanterioard: algoritmului
care este complexitatea folosit?
Seva consideraca ooeratiede bazdadunarea.
4. Se citegteun numdrreal xe(-10000, 10000). Sa se afigezepartea
Exempl:pentrun-1.23, se va afi9a:0.23; pentrux=-12.7, se va
fraclionarS.
specializate
afigao.?. Nuse vorfolosifunctii alelimbajului.
5. Se qtiecd ecualiax3+x-1=oare o singurdrdddcine (0.1).
realdtn intoryalul
Scrieliun program,careo afigeazd
cu I zecimaleexacte.
lvletoda OMDEETIM'ERA
Rispunsuri
1. In(a)=x <+ a=er 1+ e"-!-0. Dacdnotdmcu f(x).e"_a, atuncitrebuie
rezolvatd ecualiaf(x)-0. Avemf(o)Eo-a=l-a<o 9i f(a)-e.-r>o. De aici,
rezultdcd f(x) are o rdddcinein inteNalul(0,a). Cum f{x) este strici
crescttoare(ca diferenidlntre funclia strict crescdtoare* 9i o constantd),
riddcina Algoritmulpe care Il fotosimse numeglein matematica
"este-unicd.
nleNalulul'.dat, din punctde vedereintormalic,corespunde
!1:.to11!!!u!jE(!ii
MCIOdEiDIVIDE ET IMPEhA.
Fie 11.0 Si 1s'., rn.(a+b)/2. DacAf(]"t)xf(n)<0, rddecina se gesegteIn
(It,'n), altfel rddecina este tn tn,tE). Conditia de terminarJ
este ca
lli-lsl< 0.0001, pentrucd trebuiesd avem3 zecimaleexacto.
:l-_
varldhta,Paecal
*i.actual <loscr.u.h>
lurctlon r.og[t ( a, 1I, 1a r aloubt ) ! *ircludle <n!!h . h>
esteprezentatmaiios:
2. Programul
n, i !lnt g rt
lor i:=1 lo n d o
!6aa t1n (wIil ),
w ! l.l61 n (sum (1, n ) ) ;
fo . . n=1;
r ( n ) = ] z r f 1 ] + r . r tr e r .
5. VedeliproblemaL.
Secvenlaeste:
Doz ( lt , t B , k , a ), { D or(!t,16.k,a),
I t t < k t h. D l s r.k -l , I! (l < | r) l !:k-1t
I t t > k t h. a 1 l rrk + l , tr (!)t) rt.k+ 1t
de la problema
7. Dupdaplicareaalgoritmului anterioard,
elementul
din mijloc
trebuie
sdfiemajoritar.
8
Capitolul
Metoda BACKTMCKING
metodei
8..l.Prezentarea
caresti la bazametodeibacktracking
8.L2. Principiul
Principiulcare sE la baza metodeibackirackingva fi prezentalprintr'un
exemplu,acela al generirii permuterilor. Cum se poate rezolva aceastE
oroblemd?
produsului
O prim6soluliear fi sAgenerdmtoateelementele carlezian:
Princloiulmelodi
Treoem la exemplificarea
atgoritmuluipenku generareapermuteribr,tn
cazulTncaron-3,
r Compononta1 va memora numdrul f. intrucel existd
permutericare incep cu I, lrecem la elementul2 - tacem
pasulinalnte.
EITI
.
.
Componenta
2 va memo numdrul1. rfiT-t
Nu existd permutericare incep cu 1,1, motiv penhu care,
pentruaceeagicomponenld, vom relinevaloareaurmatoare. FFTI
adicd2. Intruc6texistSpermutericareincepcu 1,2. vom trecela olementul
3 {inainte).
. Componenta
3 va memoranumdrult EFFI
. Nu existdpermutericare sunt de forha 1,2,1,motiv penlru
careaceeaiicomponentd va relinenumdrulurmdtor,2. FFEI
. Nu existapermutdricare sunt de forma 1,2,2, moliv pentru
careaceea9icomponentd va memoranumdrulurmetol.adice FI;T.I
3. Am oblinutdejao primdsolulieqio afigdm.
Manualde informatici ntruclasaa xl-a
a metodeibacktracking
8.1.3.O modalitatede implmentare
VarlantaC++
Dloc6dlure bsck(kr lnt6te!) ; votdl back(Int k)
t
i r (6 o 1utte (k) ) ttD a!(),
( In tt(k)t
v h txe(succ6or(k) )
l f (w al i d(E ) ) back(k+ 1),
vhil aucc6or(k) do )
tt wBlid(k) thea back(k+1)
'
2O2 Capitolul8. t etoda backrrackinq
Pentrupermutdri,
initializarea
se facecu o.
de generarea permutdrilor
Programul esteprezentat
in continuafe.
vanualde informaticipentruclasaa xl-a 203
*inclual <ioEtlea,h>
60l ! a!!Ey I1..1 01 of , *tnctude <iostteu.h>
l
succao! ttrt succso!(ttrl k)
funcllo!
(krinlosor) .bo o1 6e , { tr (s o l l kl < n)
{ 3 o 1tkl + + ,
l! ol llll <n lhn frun 1r I
.lao ratun 0;
sol Ikl !:soL tkl + 1, I
tn! waltdt(tnl k)
613e su .c6 .or.=f41 6 fo ! (t.1rt< = k-1r!.+ + )
1 f (sol l kl = = sor Ii .l ) 6v= 0t
{krlDt!'.r) rlFolat I
ta r .o 1 u tt(Irl k)
( r.tum k=.n+l,
)
f oE I!=1 co k-1 dlo
t! r ol lIl 1 60 l lkl t llen
wa ltd!-fa 13 o { fo r (1tr! l .1r t< .n;t+ + )
c c u t< < sol II] t
funcllon solulle ,
(krr.Dt6sr) :boole.nt
votd back(ttrt k)
so1ulr.6 r (k.n+1) ( ,.! (!o 1ul d6(k) ) ti 9& O;
-
{ i n l t (k) ,
Dfocduro !IDa', whr.1(.uccosor (k) )
I! (vr1l dl (k) ) bl ck(k+ 1),
)
tor lt.l to h do
ffitt6 (sol til ) t '
( cd l< < intn, ctn>>D ,
tnlt (k) ;
qbiL succEo! (k) do
4r vaLiat(k) rhn
'b.ck(k+1)
itolul 8. L4etodabacktrackinc
8.l 4. Problema
celorn dame i:
g I
UU g
g g
g
g g g
g g
\llt
g \ll// lllt
E SU TU
g g
$li1
Figura8.1 Eremplupenlru.-{
vanualde informaticipentruclasaa Xl-a 205
Aliturat,putetiobsetuamodulin careestereprezentatd 1
solutiacuajutorul sol.
vectorului
Eo1(1) - 1 1'1
so1(3) ' 3 j=3
lsol(1) - 601(3)l = l1 - 3l :2
l i - Jl = l1 - 31 = 2
Flguta8.2.
2OO Capitolul8. Metodabacktackinq
b)
ii ;; g iilir. sol(l) = 3
soLt3) = 1
i=
j=
lsol(r) - sol(j) | - 1l = 2
l i - jl - l1 - 3l
g i".',
,',j' Figura8,3
I VarlantdPascal
lutrction wal j.d(k!1nt6sr) ! in! w.ltd(ttrt k)
boo1e.tr, {
for (r.Dr I=1r 1<li,t++)
1! (!o1rhl..sor rlt | |
ab6 (60I Ikl -601ttl ) =. ! b s (k-I) )
fo . l!i1 to k - l alo
l! (a ol lkt r s ox t t l ) or
,
(als (so r l k l - lol lt l ) ( k - l) )
' abs
wa ud lrr!ats o
/ exercttri
1. Desenali configuralia
tableicorespunzatoare vectorului
solF(3,1.{,2,5) si
verificalidaca
aceastareprezinta
o solutiea problemei
damelor.
Dentruclasaa Xl-a
vanualde informaticd 2o7
2. Explicati
de ce configuralia vecorului
corespunzdtoare Eol=(3,1.3,{,5) nu
esteo solutiea prcblemeidamelor.Carcestepozitiadin Eo1 la carenu s-a fecut
alegereacorectda uneivalorivalide?
de ce nu oricepermutare
3. Explicali a mullimii{1.2, ..., n} esteo soluliea
prcblemeidamelorpe o tablScu n linii9i n coloane.
folosindmetodabacktracking,
4. Determinati, o soluliecarese oblinepe o tabldcu
gaselinii9i Sasecoloane,gtiindci damaplasatepe ultimalinietrebuiesd se afle
pe a doua coloand.Consideralicd mai este util sa compbtamvectorul!o1
pornindde la pozitia1? Dacapornimde la pozilia1, ce adaptdritrebuie
fecute?
Maipulineliniiin programul
sursa
Panain prczent,am rezolvatdoudproblemeprin metodabacktracking:
generarea
permutdrilor celorn dame.In ambelecazuri,am utilizal
Fi problema
subprogramul
standard.
PutetiobseNain coniinuareprogramul
oblinut.Estecu mult mai sclrtl
Oticum,ideeade rezolvare
temaneaceeaqi.Subprogramele prezenlate
au iost
numaiincorporale,
nus-arenuntat
la ele.
2O8 Capitotut
8. Merodabackr.ackino
r Va anta Pasca
w.! so l3a Eay [ 1. *hcluale <iostred.h>
fincludte <Eth,h>
in r D , E o l I 1 0 l t
i! k-n+1 (solutto)
shi l e (E ol Ikl < n)
ll E\cc.ao,
( t lDA ! ) { 60l tkI+ + ,
t or lt r l lo n alo tf {w ul td(k) )back(k+ l )
E t ! (.o l H .l ) , ,
l
3or t k l r.s o l tk l + 1 ,
1! v a L l (t(k )
ba c k (k + l )
b. c k { t )
Ungoriveliintelni9i o rezolvarc
ptecumurmttoaaea, carc in subprogaamul
bactr,penhuBucc6of se folosegteo instrucliune
repetitivddelip for:
{anual de informatici pentru clasaa Xl_a
VariantaPascal
Drocearure back (k r inEegr) ,
fo r i: = 1 t o n a to
E it 6 ( aol lil ) ,
!o ! i: = 1 lo n alo
to1lk l: - ir
l f walid{ k )
t heD bac k ( k + 1 )
a
l/ Exercilii
l- Testalisubprogramul genereriipermuterilor'
anteriorpentruproblema
Adaptatirezolvafeapfoblemeipermuterilor astfel lncat s, se afigezenumai
permutirilein careorcafe doudnumereconsecutive nu aunt aldturate
observalicd ordineade afigarea solutiilordepindede ordjneain care se
consideri elementelemultimilor41, A2, . Ce modificdritrcbuie aduse
procedurii recursiveback astfellncatpermutailede 4 elemenGse fie afigatein
ordinea: 4321,4312,423L,42L3,4L32,4!23, 3l2L, 34!2 ... 1-243, L23l?
Renurlalila utilizareasubprogramului valid,utilizandun vectorrolo6lt' in
carefolosl! Iil are valoarea0 dacanumdlult nu estedejafolositin solulie
Si are valoarea1 in caz contrar.Asltel,plasareavaloriit ln vectorulsolulie
(sollkli) trebuie insotitd de memorareafaptului cd I este utilizat
(folosit lll 1), la revenireadin recufsie(candse tnldturevaloareade pe
poziliacurente)fiind necesardrnemorarea faptuluicd t nu mai este utilizatin
solule (forosit Iil <o). Conditia de validarose redlce in acestcaz la:
D a c e fo l o s i t ti I = 0 a tu n cl ...
. In ambelecazuri,secvenlacare determind
oprireafo4ateeste trecuta
irnediat
dupdce primasoluliea fostafigate.
/ programul
exerct1tu.l\4odificali probtema
carerezotua celorn dam6,asde
lncetacestasd afigezeo singur5solutie.
f Estedemonstratfaptulcasunlsuftciente
numai{ cutoripentruca onceharta
a" sd poaEficoloraia.
? exercitti
l Soluliaafiqata estegisolutia careutilizeazd
unnumdr
minimdeculori?
2. Daceldriledincentrul figuriialaturate
suntnumerotate
cu1, 2, 3, {, iarcelede laexteriorcu5 gi 5,careeste
solutia
afrgate de programuldat?Esteaceslanumerul
minimdeculorinecesare?
Cateculorisuntsuficiente pentru colorareauneih5(i
partacularein careoricetardseinvecineaza cucel Flgu 8.5.
multdoudtAri?
4. Dali exemplude particulatate pe care poatese o aibd o hartdpentrua li
suficiente
douaculoripentrucolorafeatuturortdrilor?
8.4.Aplicaliialemetodeibacktracking
In
combinatoricd
8.4.1,O generalizare
utili
Acum,cd am lnvelatsd generdm permuldrilemullimii{1,2...n}, se pune
problemasd vedemde ce esteutilacestalgoritm.La ce folosegtefaptulcd putem
aranjanumerelo{1,2. , .n} in toatemodurileposibile?
Sd observim cA acest algodtmpoatefi folositpentrua aranjaorlcare r
elementedistincteln toalemoduriloDosiblle.
fi;|. exencte
1. Se dd o mlllime alcdtuitedin n literedistincto.Se cer toate cuvintelecarese
pot forma cu ele, astfel lnc8t fiecarecuvantsA confinan tilere distincte.De
exemplu,dacd mullimeaeste {a,b,c}, vom avea cuvinlele:arrc, acb, bac,
lntr-unvectorv,
In astfelde cazuri,celer elementedistinctese memoreazd
2Sacumvedetimaijosl
ro a n a l c o gtel l Mi haeh
,a
y'' Exerciliu.Scrietiprogra'y\ulcare
rezolvaexemplul2.
us cartezian
8.4.2.Prod
O Enunt, Se dau n multimi:Ar, Ar,...4", unde &!{1,2,.'.,kr}, penlru
k=1, ?, .. ..n. Se cereprodusulcarlozian
alcelorn mullimi.
{
$ ltll..otlk t < . I k t dlo cour << nNrjsrrul dl. NlrlDlr' ,
!
s!lt.('lll,unt dl. bultlllri ),
,I, Obsorvatii
DeSjalgoritmuleste exponenlial,
existdapticaliiutile,evident,atuncicand
fiecaremultimear poateluanumaiceteva valori9i unden esiesuficientde mic.
? exercilii
1. Tabelareaanumitorfunctii. Se db functia
f :A!XA2X. . . y.A"JR,
8.4.3.Cenerarea
tuturorsubmultimilor
uneimultimi
ln contrnuare,putelrobse.vaprogra.rul
caregelereazatoalevao.,e pe
le poaterelrnevectotulcaracterisiic
-re
Metodabacktrackin
*inclua!6 <ioatioa.b>
i nr n, torI10l .t,
voial back(iat h)
{ il (k==n+l)
( !o! (t-l ri < = nri + + )
c@ l < < sol Ii l t
cout<<6ndl,
'
{ sol tkl ' -1,
lrhtlo ( Bor tkl <1)
t 3o1l hl + + ,
back(k+ 1),
)
)
)
? exerctltt
1. Problemanu esterezolvatdin totalitateProgramulafigeazenumaitoatevalonb
astfellncat programur
oe care le poatelua vectorulcaraclerisllcComplotati-l sit
afigezetoatesubmullimilemultimli( 1,2 . . . n' I
multimiicelor5 elevi'
2. Se citescnumelea 6 etevi Afigatitoatesubmulllmile
3, Se se afigezetoatenumerelescriseln baza10 a cerorreprezentare ln bazaI
ars n cilro,dinhe care exactk sunt egalecu l Valorilen 9i k s citescde t
tastaturd(n<12,h<r) De exemplu'penlrun'3 9ik'2, se oblin valorilel
59i 5
Observalli
denon
4.4.Cenerarea
combindrilor
Fiinddati mullimear8t1,2,.,.,n1, se cer toatesubmultimile
ei cu I)
mente.Problemaeste cunoscutisub numelede "qenerareacombindrilor
de
uatecaleD".So gtiecg numdruisolulrilor
acesteiprob'leme
este
(n- p)!p!
exemplu,dacSnE4 9iI'.3, solutiilesunturmdtoarele:
tL,2,3', ( L,2, r', (1,3,4) si {2,3, { } .
60l lk + 11 > n -D + k + L ,
ao1[ Dl > r - D + D En .
t, Examinandrationamenulpropusputemobservac5, ln anumitecazuri.
condlce\auna\goi\$ c\mu\\ (na\ta$\$.
a- ana\zaune\Drob\efne
I
I
pentruclasaa Xl-a
de informaticA 219
liEr:ual
I^
a{ Exercilii
I
I i.4.5.Generarea
aranjamenteior
I s e d a u d o u dm ultimir=t1.2....,DI 9i B= (1 , 2 , . . . , n ] . s e c e rlo a t e
I '-ncliileinjectivedefinitepe a cu valoriin a. O astfelde problemdeste una de
I lenerarea aranjamentelor de r lualecaleD ( Al ).
I
Exemplu: p=2,n-3. Avem:12, 21, 13. 31, 23. 32. Do oxemplu,
21 estefunctia
I
: :A+B daE astfel:f (1) =2: (2
f ) =1.Avemrelatiile:
I
I
I l i = : n ! : := n ( n - 1 )(. n- P+ t)
I (n-o)l
I
I
I Enun1.So citescn ir D. Se se generezetoa!6aranjamentele
de n luatecalep.
I
I Sd observSmce dacd se cunoagtefiecarsubmultimede D elementoa
I -lultimiide n elemente.atunciaranjamentele se pot obline permutandin toate
I posibileelementeleunei astfel do multirhr.Pohind de la aceastd
I -odunle suntemtentati sd generdmtoate submultimilecu D elementeal
observatie
I iultimii cu n elemente9i. din fiecareastfeldEsubmullime. sd obtinempermutdrile
ei.Exerciliul
f
T
I Pe de alE parte.se poatelucramull mai eficient.O solutieestede fofma:
I *rx:...x,, undex1,x2, ...,x!8. In plus.xr. xr, ...,xe trebure se fie distincte
I Spredeoseb,re de algoritmulde generarea combinafiloraicine rntereseaz:toate
I oermutdrileuneisolutri(acesteasunt.la ranoullor.alle soluli).Aceastainseamna
ce nu marputempunein solulieelementele in ordinecrescdloare. Sd recapitulam:
I
| - o solutieafe I' numeredinB;
I - numerele
kebuiesAfiedistincte.
|
Rezutede aicicd algoritmul esteacelaside la permueiri,diferentafiinddald
de faptulce soluliaare D numere,nu tr ca in cazulpermuterilor.
' '^ S Metodabacktracking
CaDitolul
fo r i:-1 t o k _1 at o )
t! eol lkl =sol ltl thn
void back(int k)
va lidrE lalao ( int- i, j,
sol lk l t
' . i. lhr
tf vlltdl(k)
blck ( k r 1)
)
back ( 1)
3 exeragr
'1.Se citescn, p 9i apoin literedistincteAfilali toatecuvintelecarese pot forma
cu 9 dintreele.
8.4"6.Cenerarea
tuturorparti!iilor
mullimii{1, 2, ...,n}
Defin4la8.1. Fie mullimea AE(1.2,...,n1. Se numegtepa.tqi6a
multimiiA,un setdo k<Irmullimicareindeplinesc
conditiile
de maiiosl
.) AIU&U...vAr4;
b) Ar^aj=,, Vl*J (1,2.,.n).
Exemplu.Consider5m
multimea
r.(1,2,3), Avempartitiite:
{1,2} (3}
(1,3' (2)
(?,31 {1t
t1) {2} t3}
El.Rezolvare.Chiardacegtimsd generbmroatesubmutlimite
uneimutlimi.tot nu ne
alutilse generSm
toatepartitiile.
1._ Pentrua puteageneratoateparttiile,trebuiesa gesjmo
metoddorincaresa
putemretineo partilie.O primdideene conduceta fotli.ea
un,rluector,'"o:.,lJtJ
dc6so1[ atuncilementult se gdsegteln mutlimeak a partiti;i.Toiusj.
crc .rk, nu
$(m mugmi suntTnpartittarespectivd.
Exjsteo partitiecarecontine. mi,iri-i
atuncicandfiecare
otemont
esteinlr-o
muttrme
9iuna r"lri"rnrilriii",
mutlimea
A.Cuattecuvinte,
num;rut ""i" ""Ai"" 'p:rii,fiJ
mutlimrtoi
ii"tr_"
fl![.r,::T" "'Ji"
avea.oordinetn generarea
sotuliitor,
etemehtete
mutlimii
A trebuiesa
l:^j,-Tl::
apaqind desubmullimi
consecutive
alepartitier.
) Dinacestmoliv,Bol[tl valuavaloriintre
t Sl
1$nax(6ol I1l, Eort2t,..., Eol fi_lt ).
222 Capitolul8. Metodabacktracklng
Se exemplificam algortmuluipentrucazulr=3:
funclionarea
- sol=(1,1,1) - A1={1,2.3);
- sol-(1,1,2) - a1=t1.2) i,,=t3);
- so1=(1.2,1) - a1={1,3} r,={2};
- sol:(1,2,2) - A1=t1l A,-t2,3);
- sol=(1,2.3) - A1=t1) A1-{2} ar=(3}.
Analizaliprogramulastfeloblinutl
'
rcl.al b{ck(tnt k)
( tat t, J, na:<,re.,
Drocodlur. brck (k,Intg.r), Ir (krra+ 1) l i D A r( ),
var 1, J, !Er.D!c,14tsr,
? programul
exerctltu,Modificati precedent
pentruca acestasd afigeze
toate
partilile
careconlinexact3 submullimi.
8.5.Altetipuride probleme
carese rezolvdprin
utilizarea
metodeibacktracking
. Ceneraliteti
8.5.1
Toaleproblomole
pe caro le-amtntalnitpene acum admitsoluliicare
lndeplinesc
ufmdtoarele
caracteristici:
t suntsubformedevectof;
solutiile
t toate solutiileunei problemeau aceea9ilunglme,unde prin lungime
Tnlelegemnumdrulde componentealevectorului
solulie.
224 Capitolul8. Metodabacktrackinq
partitiilor
8.5.2.Generarea unuinumernatural
3. Avemsoluliealuncicend
6 0 1 t1 l + E o 1 I2 l + ...8o1 l kl = n.
ar fi ca ta fiecarepassd catcutdm
aceastdsume.Dar,se
-^_,- ? !ll.d.O9"ip"!ute
poate5lucra eiicient.Suma va fi relinutein permanentdintr_ovariabildglobale,
l\,,laijos,
esteprezentatd
funclionarea
algorilmului
pentrun=4:
1 0 0 0 1 I 0 0 1
I 7 0
1 2 0 0
ffii"#"
I
I
Observalimodulin carecalculjrnsumala fiecarepas.
De ceteori se hece
la componentaurm;toare(k+1), la s se adunaEot fkl, de cateori
pasulinapoi(setrecela componenla se lace
k_1), orns se scadeBo1[kl.
Programulesteprezentaiin continuafe:
( . or l k l - 0 ,
wh i l ( s o L t k t +s <n )
shtle sot lkt *E<r do ( s o l l k l ++r
E+E8ol tkl '
Eo ltkl:c.o1 lk l+ 1. b r c k ( k +l ) ;
a:=s+ao rlkl ; b6c k ( k + 1) ; ._rBoIIkl;
s:=5_ so ltkl
,
)
l
? exercilii
1. Cumtrebuieprocedatin cazulin carese cefe ca soluliilesd fie afigateo singu|i
date?Spreexempl!,dacSs-a afigatdescompunerea 1,1,2 sa nu se mai afiqeze
2 .L , ! S A U! , 2, ! ?
8,5.3.Platauneisumecu bancnote
devaloridate
1 ) 1t l 2, 1d 3 1 2 ) l d e 1 . 2 d 21 3) 2 dl ,e 1, l al e 3,
{) 3 ale 1. l tl e 2 1 5 ) 5 d l e 1 t
"":m
retinevaloareamonedeide tipul 1, alzl valoareamonedeido lipul 2, I.a.m.d.
Numlrulde monededin fiecaretip va fi retinutde vectorulsol. Astfel,so1t1t va
felinenumerulde monedede tipul 1, so1t2l va retine
num6rul de monedede tipul2, 9.a.m.d.
ln acestecondilii,
o
pentru
solulie exemplul
anteriorafatecaaidturat,
undesuma5
seformeazd cudoudmonede de1 9io monedade3.
a
1,, Ceobservemt
227
uanualdeinfor!g!!! ntru clasaa Xl-a
S:"i:,JlT:l,1"0'"'"i'H::;J"
;"ffn",lJ!'
i;"ilnilllf,.lii#ffi raun
obrinuta
suma
m:]ffi ":11";::;:t",:l,iill,?,"'l,l#""""1'
;..."":,1"1
+ at2l*EoLl21 + "' + atk-1]rgo1tk-1!
E = alll*60II11
dace:
{. Avemsolutie
+ at2l'6oxt21 + " + a tnl *sor ttrl = sutu
E = st1l'60It1l
anteoare'modul
? sdarabli'prindesenec la problema
exercillrt.lncercali
a tuturor
deobtinere solullilor suna=59in'3'
pentru
in continuare, programul:
esteprezentai
., G;\
.Vcrtadtaci+, rrll
{lncludl <tostr.rs'h>
var sol, a ! array l1" 1001 trt s o l tl Oot ' aI100l '
ot ltrtsg",
n, l, s. 91lu t inlgr,
votd !6ck(Itr! k)
(ktlnl6s!) t
Drccedure back ( tt (s-.surl)
i <<4ol ,
{ co u!<<i aol uC i
lt 6..rs! tha for(lr1r l<'k-1r l++)
( 'aotrulie' ) tr (sol III )
dlleln c4t< < so1 ttl < < ' !ond' !6
lor tr.l to t<-1 dto' < < att)< < ndr,
r f t ol( t l< > o tl E n
(sol lll tn66t!' coul<<endf,
wtt61!
d ,,a Irt),
" )
( cout<<i3u!!=i, citr)>guna;
c 4t <<u $ E i r c l 'n >>n i
tolrrl 8. I\retodabacktrackin
P'
.4
Exerciliu.Adaptaltrezolvarea
probtemei plaliiuneisumeicu bancnoledale
cunoscand,in plus,penlrufiecarevaloareai numdrullimite
b{ de bancnotec!
v alo _ a rreesp
a ectivA
dispontbite
A stfel.pen t ru B = 1 O O . a = (2 , 5 , 5 ; ). b = (1 0 , 5 . 3 )
vaflnalar-10x5+1x50 nu corespurdecerinteideoarecenu
avemla dtspoz:tte Lo
monede de 5, cidoar6.
8 . 5. 4. Pr o b l e m laa b i r i n t u l u i
EI Rezotvare
ei:rin (rinia)
l;3,'1,XT,1ii"l[J:li,"i;",,'iT,i'i?"::fli-"teresicor(corana
[1;':xiili;:t'21il'"rt:,11?:fl
""ffi"4:n:E;:T:'":
l\,4anual pentruclasaa Xl-a
de informadca 229
VarlantaC++
v ar s o1: ar . a y t1 ..1 0 0 ,1 ..2 1 of *include <iostr64.h>
i n l so1l 1o01 I2l r Ir01 I101,
'
1: af f ay I0 ..1 0 ,0 .,1 0 1 of s ,n, i , j ,Itn, col t
i n t vl zi tat(l nr k,l nr. Il a,
n, n, i, j, 1 i n , c o l r i n c 6 g o !, lnt cot )
f ur et j, on v lz i ra t { k ,ttn ,
col : iDteso! ) : l,ool6an; foi (l = 1t i < .k; i r+ )
i f (aol ti l [0]' = l tn &6
sol l tl tl : l qcor) vsl t
f or l: = 1 r o k -1 d o
if ( s ot t i, l l = ti n ) s d )
void lj.Dar(tnt k, tnt ltn,
lher wlz i ta t:F tru o , l nt cox)
{ cout < < ' sol uti o i << 6ndl r.,
l or (l = 1, i < .k-1ri + + )
L iDa! (k,1 in, c ol: t nr os s r ) ; cout< < sol ttl I0l < < " n
< < E ol Ii l t1l < < 6nau,
wllb etn {'solu t it ) ; i f (ri != = 0)
for i:=1 to k - 1 do cout<<nleEire Drin lordli
{rlt th (a o1 t i, 11, ' !, < <!atI;
3oI li121) r
il { 1tn..n+ 1)
vrlteln (tiesir Dlt r no. d ! ) cdt< < i i 6si r Dlin audn
<<6ndl1;
if lin=n+l thon
writ ln(ti 6ir e i r (cor--0)
cdt< < i i esi re Dlis v66tu
if co1 =0 Lhn <<nalt,
writln ( ! j"6sire
coub< < t,i ai l e D ri n e6!!'
tritln ('is i! 6 <<enall t
I
230 Captrolul
8. tdetodabackrrackinq
M lle( ' t t ' , i, tr' ,J ,' l :' ), < < l < <u l .u,
r e. dh ( r Ii , J I ) ci D > IIt] Hl;
l
cdt<<i trl 'ntri ;
f exercilii
1. Adaptatirezolvarcapentruun labirintin care flecarecdsuld relinevaloarea1
sau o (1 semnificand cdsuldplind,princarenu se poatetrece,iar 0 cdsulAlibere,
pe lnde se poatetrece).Ca 9i in problemaprezentate, deplasarease poateface
dintr-ocasutdin oricealtdcdsutealdturatd, orizontalsau vertical,cu condiliaca ea
sa existe9i sA fie libera.Validatipoziliainilialda omului(11n, col), astfelincdt
aceastasd corespund,unei cesutelibere.Estimalispaliulde memorieutilizat
in aceastavaraanta.
2. Realizatio variant5a rezolvdriide la 1, addugAndcete o linie sau coloane
suplimenlard pe fiecarcmaeine a labirintului,
astfellncatsd nu se mai testezeca
celula ln care se treoe sd existe. Plasareaintr"o celule de pe margineeste
echivalentdcu obtinereauneisolulii.
8. 5.5.Problema
bi l e i
? exercil;u.Ardtali,prin reprezentare
grafic5,modutde tunclionare
a
pe bazastructuriidedateDroous6.
algoritmulu;,
VarianlaC++
v B r s ol ! ar ra y It,.1 o O ,t,.3 l #ircluit <iostles"h>
of i!egr,
t . qE ay [0 ..1 0 .0 .,1 0 ] iEr Eortl0ol t3t,ttlol a1ot,
of iDtgeE, a,n, i. j, Lin, dolt
n. n, i. j ,1 l n .c o l : l n te s o rt
Droeedluro tiDer (k!iotesr) t woid tiDar(int k)
{ c o u t <<n s o X u l i e n <<e t l t
! 6it 1n( . so l u ti e !)' f o! ( j . =1 ; t <=k - 1 . 1 ++)
lor t : = 1 to k -t i l o c o u l <<s o r t t l I 1 l <<r "
<<d o l t I l t 2 t <<e n d t ,
E r t er n( s o l It,2 l , ' t,
s o r tt,3 t ) t l
voldl back(ln! k. 1!t! Itn,
{ tt (11n.=oll rrn==n*1
bac k ( i( , llt r,c o l !l D c e g e r), co1.= 0 l l co1= .n+ 1)
il ( 1t n. 0 ) o r (1 tn -n + 1 ) o !
( c or = o ) o ! { c o 1 .n + 1 ) ( eol l kl t0l = 0r
B or tk) I1I= 11n;
5oI Ikl I2l = co1r
3oI I k , l l != 0 t rhl l e (soIl kl l ot< 4)
6ot I k , ? l ! = rtn t {
3ol t k r 3 l !Ec o 1 , sol l kl t0l + + ,
whu. s o l l k .l l < 4 alo rw l tch(sol I,!l t0l )
(
s oL t kr l l :Es o l (k , 1 t+ 1 '
c a6 6 0 rtk ,1 l o f If (t Il tn-11 l col l < t tri .nl Icol l )
1, I f l l x l n -l ,c o l t< bE ck(k+ 1, l i n-1, co1), break;
tI1 l D ,c o tl !h 6 n
back (k + 1 , ti n -1 , c o l ); i r(ttrtul l cor+ 11< t trl at tcol j )
2 ! t ! ttti r,c o t+ 1 1 < back(k+ 1, tl n, cot+ 1) r br6ak,
ttti h rc o l l rb n
back (k + 1 ,1 i n , c o r+ 1 ), 1f(rIU n+ 11 Icol l < rIri .bl tcorl )
3: if t [1 1 D + 1 ,c o l ] < back(k+ 1, ti n+ l , cot); break,
I fliD, cot] rhtr
bac k (k + 1 ,1 { n + 1 , c o r), i f(!l 1i nl Icol -r1< rtl i nt Icorl )
4! if , ttti n ,c o l -1 t < back(k+ 1, l i a,.oI-1), brak,
t tl i n , c o l l th 6 n )
bac k (k + 1 .Ii r. c o t-1 );
l
,
fo r (i = 1 ; i < = ryi + + )
fo r { i = 1 r i < -nt i + + )
{ c o u r<< ' t (" < < i < < " , ' < < J< < nl -r '
d i n > >t Ii I Ii I t
l
leaalln{ r t i. il ) c d r< < " Itn -,, ci E > > ti nt
c o u t< < .c o t= ,; ci n> > coL;
i !i t6 ( ' I in= ' ) r r e a t[n (Ito ) ; b a c k (1 ,l i n ,col ) t
vl i re ( ' c or E t ) r r a d 1 n (c o l ) ;
b a c k ( 1, 1in, c ol)
6.5.b .i a n tu ra c aturuI
VarlantaPagcal
co n s c *, . r r ay l1. . 8 l of *lndludl <ioEttM.h>
1 n !6s er E ( - 1, 1, 2,2 . t, -L , -2 ' -1 1 , *tncludt6 <stdrtb.h>
y : B r r r y 11..8 1 of
l rt giE ( 2, 2r 1, -1 , -2 -2 ' -t' l t i cd6t i nt xIS l E (-r,1,2,2,L, -L,
'
b ack(1 ,1,1 ) ,
vanualde informatic; tru clasaa xl-a
propuse
Probleme
Avem la dispozitie6 culori:alb, galben,foiu, verde,albastru$i negru Sd se
precizezeloate drapeleletricolorecare se pot proiecta,gtiind cA trebuie
respectateregulile:
. oricedrapelare culoa'eadin mijlocgalbensauverde;
. celetreiculoride pe drapelsuntdistincte.
Exemplu:pentruN=4,permut,rilecu proprietatea
de maisussunt:
2!3 4 , 2 3 L 4 , 3 2 L 4 , 2 3 4 !, 3 2 4 1 ,342!, 432L.
a) Generarea
aranjamentelor; combindrilor;
b) Generarea
permuterilor;
c) Generarea tuturorpartiliilor.
at) Generarea
238 Capitoiul8. l etoda backtrackino
a) 3 2 1 ; b) 123; c) 213i d) 2 3 1 .
Indicatii
7. Dacevectorulcarefelinenumelepersoanelor
estev, ln loc sd se afigezeI, se
va afigavt .
23, b)
24. a)
25. d)
Expllcafle:primeledoue vafiantprezintdsolulii exponenliate,
a treia este ln
o(r'). Dar dacd sortdmnumerele,atunclle putemafigape cele distinctedintr,o
singurdparcurgere.Sortarease poateefectualn o(nxtos(n) ), iar parcurgefea
ln o (n), Prinurmaro, esteo (nxloE(n) ).
complexitatea
26.d)
Explicatieipe fiecarenivelal stiveise cautesuccesoriiinordinean, n-1, ...,r.
Capitolul9
tn teoriagrafurilor
lntroducere
9.1.Grafurineorientate
L l .l . I nt r oduc e r e
Uneori,algoritmiitrebuiesd prelucrozedate relelltoarc la anumite
urmetoare:
inlre careexisEanumiterelalll.Seanalizimexemplele
elemente
1. Se daun orase.Uneledinlreelesuntunilepringoselodirecte(carenu mai
trecprinallora$).
dinlren persoane,
deprietenio
2 . Secunoscrelatiile
3, Sedaur Fri 9isecunoagle lnlreele.
relatiadevecindlate
iarunele
{ , Sedaun triunghiuri, dinlre
elesuntasemenea.
o^*..
semnificatiaca lntreora$elet 9i J existao Fosea
difectd.in cazul ,., muchia (t,l) are
semniJicaliacd persoanele t SiJ suntprietene,Tn
cazul 3 , muchia (l,l ) are semnificatia
cd lerilet Si J sunl vecine.ia. in cazul4., c6
lriunghiurile1 9i J suntasemenea.
Procedand a9a,obtinemo doscrieregrafice
precumcea dinfigura9.19i convenimca o aslfel
6 @--.-o
s-o numimgraf neotlentat.
de reprezentare Flgura9.1.
dgnl neornlal
Exomplu
240 in teoriaqrafurilor
Capitolul9. Introducere
Teoriagralurilorestefundamentat:
Desigur,aceasti abordareesle intuitiva.
maiematicaiin celece urmeazdne propunems-o prezenmsistematic.
9.1.2.Definitiagrafuluineorientat
Delinilla9.1.1. Un graf neorieniatesteo perecheordonate c=(v.E).
un0e:
t v= {w1. v,,... w"} esteo muryime
linite9i nevidi.Elemenlele
v se numescnodu (varfuri).
multimii
t E esteo mullimelinitede perechineordonatede loma (wr. vl),
unde t+j, 9i vr.vJev Elementele mu\imiiE se numescmuchii.
Semnificalia
uneimuchiieste aceeacd unegtedoudnoduri.
Ungrafpoateli desenai
agacumseobserud
in exemplul
umalor(vezifigura
9.2.),unde
c= ( v , E ) !
v = IL ,2,3,4,5,6r t
E. ( ( 1,2 ) , ( 1,3 ), (L,s ), (2,31,13,4,,
( 4 ,s) )
t, Observ4il
'/ Doudnoduridistinctepotli unitepdn cel mull o muchie.in exemplulde
mai sus, (1.2) estemuchiacare lnegte nodul1 cu nodul2. Dacl scriem
(2,1), ne referimla aceoagimuchie(perecheaesteneordonate),
/ Nu existdo muchiecare unegleun nod cu el insusi(o muchieune9te
doudnodui dislincte).
a
y'/ Exerciliu
grafurilor
9.1.3. Memorarea
in acestparagraf,
prezeniem principalele
siructuride dateprincaregrafuribpot
fi memoratein vedereaprelucrdrii
lor.De la inceput,precizem laptulce vom alegeo
struclure
sauallain functiede':
a) algoritmul
careprelucreaze la graf;
datelereleritoare
b) memoiainternepecareprogramul
o arela dispozitie;
c) dacagrafulconline
multemuchiisaunu.
Pentrufiecareshucturade date pe care o vom folosi,vom avea cate o
procedure(funqie)care citegtedaiele respeclive. Toate acestesubprograme se
gdsesc gn/pato in unitateade programsraluli.DsE (penlru pascal) Si in
g'af,ult.cpD FentruC++).Vomli astlelscutilica, pentrufiecareprogrampo careil
realizEm,sd lim nevo4isaaddugim,iniile
de codnecesarecitiriigine pemitesa ne
concenlram exclusiVasupraalgorilmului.
Flgura9.3.
Exomplu do g|af norlnlat
A. Memorara\a
gratuluiprln matrlceade adlace4i
e",, - o malricepelraticd,
undeelementele
ei,ar,J au semnilicatja:
r. pentru{r.J) ts
''' |.0, pentru(i,j)e E
' l\,lodul
de alegerea slructurii
il veli inlelegepe parcurstrt
studiutui
acestuicapitot.
yanualde informatic5
pentruclasaa Xl-a 243
011010
101000
110100
001010
10010 0
000000
! ousew4ll
graful,
dinmodulincarea iosldefinit
r, lntrucat, cEnuexistemuchiidela un
rezultd
nodlaelinsugi,
rozulte
cdelementeledepedlagonalaprlncipalirelin0l
Evident,
deoarece (l,l) coincide
muchia (J,1).
cumuchia
3, Sumaelementelor depeliniat, 1(1, ?, . .., E), arecarezultat gradulnodului
i, a( t ), pentru
cdastlelseobtinesumanodurilor J, J {1,1, . .,,n}, penhucare
exidemuchie delaI laJ, adicdsumamuchlilor incidonte la t.
de pe linia1 este3,
pentrugraluldemaisus,sumaelementelor
Dexmplu,
gradul
adice nodului
1, tt(1).
J, I ( 1, 2. . . . , r) , aroca rozultat
d pe coloana
{. Totasa,sumaelomontelor
giadulnodulul
l, d(l ).
I Ralionamntul
estoasemendtor precedenld,
cuceldelaobserualia
5. Sumatuturorolementelormatrlcel este,de fapt,eumagradelor
de adiacentd
tuturornodudlor,adicddublulnumeruluide (2ln).
muchii
6. Dacdgraiulcititareunnumdrmicdemuchii, aluncimatricea
doadiacenF
esleo
formdinelicientd
dememorare a lui,penlrucdeavarelineo multime
de0.
Subprogramelepocarolevomutilizapentru modalitate
aceaste de memorare
suntprezentale
in continuare:
244 Capltolul9. Introducercin teoria orafurllor
{1 1 1 1 6 ( i >>i >>J )
.Aa6j.sa(frlrllle Fis), a t t l l j l =A t j t ttlrl;
R6a6t { f ) r Rai:l1D( !, D) t
rhil(not ea!(!) ) dlo l
reaaUr(!,t,J),
AIL, Jl t-1; AIJ.ll t-1,
{
CLtLrelt ( i(rcat . !*C i , A, n) ,
lor (!.nt t-lrI<'.rir1++)
( !o! (tn! J-1rJ< .nrJ+ + )
cotr!< < A II IJt < < . .,
cdt<<ndl,
)
gralululp n listedeadlacenld
B. Memorarca
Listelede adiacentd reprezintd
o analormede memorare a graturilor,
in ca
pentrufiecarenodse cunoaqte listanodurilor
adiacenle
cu el. De exemplu, pent
grafuldinfura9.4.,listele
deadiacenlasunt: -
1 -> 2.3,5
2 -> 1,3
3 -> L,2,4
lt -> 3,5
5 -> 1,4
6 ->
Vanualde informaticipentruclasaa Xl-a
5 7 9 1 1 L2 0
L 2 3 4 5 5 7 8 910 11 12
f (01 z I 3 1 5 I 3 3 5
r I1t 0 0 t- 0 0 2 8 0 10 5
t Exemblude utilizare
Vrriintab++
rclat citire_t4-Aatrt:Lc
I iar E = . r ! r y [ 0.. 1 . 1 ., 5 0 ] o ! i n t g r; (char lfthe_fj.BI20l,
rDnlro=arr.yl1.,50] of iat!'rt in r rt 2 l t s o t .
i trl 6tart[50], i D t& a)
Droo.dur. clrl!6 r,rLAar.tlc t
(!tui_f la ! alritrg;vai E !List.; Int i .j ,k= 0;
vEr Er.!t rrDnlr.rvEr n:iDt96r);
v ar I , l, k r Lnl.g .r, f (Nru_fts, tost ! in) t
ilhcludL "9Eafu!l.cDD"
va! sl.rl rrEhlE., tru.at., i . ! l 12l l 50l ,6t!rrI50l ,
r , I , ' ' E r I n! . g. r t
clrlr._r.A-a.rarl. t cIrfu_Lt-Aat.rtc
( , or at , t x t ' , ! , a ta rt,n ) t ( i oral .t* t' rr,atarE ,n),
t or lr . 1 t o n d o ror (tnl t.l rl < .nrt+ + )
(
Eltoltr ( 'Notluli rdtac. cu cou!< < nNoalurl .dLac . d r<<
Ii l ,
'wht1.
I e. - gr . r{tle<>o)
t alo
,
l
pentruclasaa Xl-a
Manualde informatictr 247
ri jlii c*1
119it"iiiq I
ItrD tuchi=!coldt
x , y r bEet r ,
oEd, 'tt
va r vrrlra ylI..5 01 o! Nc hlot
.a
l' Exerclllu. Realizaliun subprogramcare citeglo Si memoreaz6datole
la muchiileunuigrafmemoratp.inlistamuchiilor.
refritoare
Obsotvatle
f oarlelmportant,
Uneori,nodurllor unuigraf li se asociaz6 anumiteintormatii.
Ds exemplu,
dacenodurilunuigral reprozinle ora99,pentrufiocareasflelde nodse poate
memoranumdrulobleclivelor turistico. In astfelde cazurl,pe langduna dintre
metodel de memorare prezentale maisu6,vomasociagratuluiun veotorcu n
(numdrulde nodurlalogralului) component, undefiecarocomponenld va retine
informaliile
reteritoare
la nodulrespctiv. Pentruexempluldat,fiecarecomponenid
a grafului
retinenumdrulde obictlvE t!ristice.
9.1.4.Crafcomolet
Sd considerdm mullimeaelevllorunelclase.Teoretic,
oricaredoi elevidin
clasase cunosc,Penlrua hanspune Tnlimbajspecificteorieigrafurilor
acoastd
situalie,
vomconsideracdticareelevesteunnodal grafului.
Penlrucdoricare doi
elvise cunosc,lnseamnecd oricaredoudnodurisunt unitoprintf-omuchie,
Aslfel,amoblinulungralaparte,
pecare-lvomnumigratcompl6t,
Definllla9.4. Pringral completvom intelegeun graf neorientat
in care
oricaredoudnodurisuntadiacente.Vomnotaungralcompleiprinrq, unde
n estenumerulde nodurialegrafului.
248 Capitolul9. Introducerein teoria qrafurllor
aveliungratcomplet
AEturat, cu4 noduri(R.):
4x:
Figura
9.5.
degl compll
Exemplu
Relatiiutile:
f. intr-ungrafcomplet,graduloricarui
nodeste n-1. Evident,
dinfiecarenod,
pleacb(sosesc)n-1 muchii.
avemretalia:m = lq:-lf
z. intr-ungrafcomptel. . undeInestenumarut
de
2
muchii,iarn,numdrulde
noduri.
9.1.5.Grafpartial,
subgraf
Delinitia9.5.Un gral pa4ialal unuigrafneorjontat
date=(v,E) esteun
gralsl- (v,El), undeEcE.
Manualde informatici Dentruclasaa Xl-a 249
I Un grai pa4ial al unui gral dat, este el insugi sau se obline din G prin
suprimareaanumitormuchii.Priviliexemplulde maiios:
Figua 9-6.
o
c=(v,E ) Gr= (vr E 1)
e Exempledin vlatareaH
1. FiinddateD persoane, inlre uneledinlreeleexistdo relatiede prietenie.
Asociem
acesteisitualiiun gralc. Dupdun timp.unelcpersoane se cearla.in lcoriagralurilor,
aceaslainseamnecd in G se supimd anumitemuchii9i astfel,se obtineun gral
partialGl.
2. Fiinddale n orago,uneledintreele suntuniteprintr-oSoseadirecld(carenu mai
lrecepranalteorase).Asociemsitualieidatoun gralG. OatoiiSprecinilaliilor,
anumite
Soselese inundd9i nu mai pot li utilizate,
Aceaslainseamndcd ln c se supdmd
anumitemuchiigr se obtineungrarpa(ialc'.
H ExemDledin rcalllale
Asociem
1. Se daun lime. intreuneledinaceslease slabilescrelaliide colaborare.
situalieidateun grafc. intretimp,anumileiirmese desiiinloaz Aceastalnseamnd
ce in G vom eliminaanumitenoduri9i muchiibincidenlelof, oblinandun subgrafal
tutG,e!,
2. l\4aimulte calculatoare (r) sunllegatein releacu ajutorulunorcabluri.Asociem
situatieidate un grat c. inire timp,anumitecalculatoare se delecteaz Asttel,se
obtineunsubgraf alluic,c1.
grafurilorneorientate
9.I .6. Parcurgerea
in l5time(BF- Breadth
9.1.6.1. Parcurgerea First)
*,
Manualde informaticiDentruclasaa Xl-a 251
grafulaldturat
Pentru avem:
Nod pornire L'. ! 3 6 2 7 5 |
Nod pornire3i 3 7 612 5 |
Nod pornire 6: 5 317 2 5 {
Figura9.8.
Parcurgerea
BFsoofectueazd prinutilizarea
structurii coadl,avandgrije
numilS
caunnodsi tievizitat
o slngurd
datd.Aluncicandunnodafostintrodus ln coadi
senarcheazA cavizilat.
Coadavafialocatdprinutilizarea
unuivclor.
Algorltmul
eateulmetorul:
Noduldepomire steintrodusln coadeli estemarcat
cavlzilal.
CetlimpcoadaestenevidE
Pentru nodulaflatlalncgputulcozii:
I strecin coadetoatenodurileadiacgntecu 61,carenu aufostvizitatesi
semarcheazA cavizitate;
I safigeazd;
r sextrage dincoadd.
Vomutiliza
urmatoarele
notalii:
pdmelcomponente
l_o - Indlcele a cozll;
!-o - Indicele
ultlmelcomponente
a cozli;
oorda - vectorulcarememoreazE coadapropriu-zls:i
B - vectorc r4lne nodu lvizltat:
1. Programulurmitorparcurge
BEungrafmemoratprinliste de adiacentel
VariantaPascal VariantaC++
*inclual "srafuai. cDp"
va! Dr i,cr sf-c,9:lntgr; i nt n, coB dats0l , s t50l , i _c= 1,
co aa la,s : aEay [ 1. . s o] ol 3 f_c= l .TI2l t5Ol ,startt50l ,p,
void b! (i!t noau
stert:DoEirt ( coatla ti-cl
-nod;
9ioc':lure bl (@a!: int6g6r) t w hl l (i c< :E f_c)
{ p=gtalr lcoaalall cl l;
i._c : =1, st_c , E1,
coaala II cI:=nodl; ( it { 6 Ix' l 0l ID l l = = 0)
s!_c t raf-c+1, l
coaal! I8r_cl : =E I0, Dl t l
strt0,9l I :=1,
D: E [1 rD ] t {
ctlir_lrA-astatlc ( rGfa!. !x!o,E
ritln(colaL[{_cl );
bf{ 6) t
)
bt ( 3) t
2 . Programul
umdtorparcurge
BF ungrafmemoratprinmatriceade adiacenti:
*lnclual "qrafuri.cAD'
iD t n , c o a d a I 5 0 l , s l 5 0 l , i _ c r I ,
af_ . =1 , A t 5 0 1 t 5 0 l , i ,
widl bf ( int noal)
{
coadlatl cl
-rcd;
bnualde informatice
oentruclasaa Xl-a 253
)
a l -c:= s f _c + li, coul< <coaalaI i_cl <<e4dl,
co a d s ls f - c : . . t ,
)
l
C illa l c( t( t r at . t at ! , lr . n) ,
bf ( t )t
in addncime(DF* DepthFirst)
9.1"6.2.Parcurgerea
Figura9.9.
254 Capitolul9. Introducereln teoria grafurllq:
urmdtorparcurge
1 , Programul prinlistede adiacentAl
DFungralrnemorat
*iDcludle'graruri. cDr'
i nr s I50l ,nt
6: ar r aytl ..5 0 l o f i n te s e ., ! t2l I50l ,srai tt50l t
vold df (i4t Eoal)
E!.rt : Dornir,
{ in! D,
9rocsdur dlf ( nod r i!l.sGr) t cou!<<rrcat<<u i,
6l nodl = 1;
E ileln( nod, ' ' ), vtrrl (p)
{ t! (3Il t0I ID l l ..o)
dr(!I01 I9l ),
D = l l 1l ID l ,
l
tf r llt 0,D l l = 0 l
t h@ d t! (rIo .D l ) t
(
cilife*:,Ajat.tlc ('ora!, rxr".
dl (1)t
clrlr-r,A-aararlc (,or.t. txl! tt, l
g! lr ! , n) ,
dlr { 1) ,
Daungrafmemoral
umdtorparcurge
2 . Programul prinmatrlcea
deadlacentt:
!o! {k-lrE<-ark++)
cll! (!Pd. | | ), t!(A l roau l kl $1 & & tl k:..0)
al!_! (k),
lor kr.l co n do )
! . 1 ( A lnod ,k l .1 ) l n d (3 tk l .0 )
lhsn il!_!(k),
{ cMraN ( i ora!. txt n, a, n ) ,
dt!_r(1),
bsi,n l
c it lloN( ! o ra t. t* t t,a ,s ),
I
Manualde lnformaticeoentru clasaa Xl-a 255
timpuluinecesar
9.1.6.3.Estimarea grafurilor
parcurgerii
9.1.7.Lanluri
Reluarh delaparagraful
exemplele 9.1.1.
tlh>. Detlnllla9.7.Penirugratulneorientat
c-(v,E), un lanf !-tvr,v,...vJ
RYd\ dnoduncuproprieiatea
esleo succesrune ceoricare
doudnoduri vecln
't-" suntadiacente, adica(v1,vz)E, (vr,v!)E. .... (b-1,vr)E. De
un lanlpoatefidefinit
altfel, muchii(vr,v,)E, (v,.v!)r,.,.,
prinsuccsiunade
( v,-r, vD) e E.
t Varfurilevl 9i vD se numescextremltllllelanlulul.
t NumerulD-1 se numegtslunglmealanlulul.Acestaestedal de num6rulde
muchiiceunescnoduilelanlului.
2s6 ca!]lgl-49,]-l99!-!!sr9i!l99rE_srdgrlie!
Definilia9.8.Se numeglelan! elementarun lantcarecontinenumainoduri
distincle.
Exemple:pentrugrafuldinfiguraaldturate:
1. [1,2,51 esleunlantelementar
cu lungme2,
intrenodurile
1qi 5.
2. 1L,3,4,L,21 este un lanl (carenu este
elementar)
de lungime4, intrenodullel St2.
Figura9.10.
i
* l ncl udo' grafuri .c!,D .
wlr !,al,br:Lat.gr,
6, r r . E A y t1 ..5 0 l o ! i trte q !, 6 t s0l ,A t50l I50l ,n,E Is0l , a,b,
word r6lac (tnt nod)
Dro.odura refAc (nod ! ln!gr) t t
l! nod<>o rhn (
refac (! ID odl ),
rrac (!lnotu );
E lt ( E o d ,' ' )t )
)
oentruclasaa xl-a
Manualde rnformatica 257
lBino
be!'in I t
citile N(!Graf.r x r ! , A, D) ; I citirIll(rora!,lxlr,a,n),
vlite(!a =t);r .dun( al) ; I c d t <<" a =" r c t n >>A ,
dlf,-r(al) r dlf-!(a),
if ( B t bl< > o ) u ! r r fa c { b ), I il (tl bl l E 0) !!ac(b)t
6nd. | )
lu
t
Observatii foarte lmporlanle
while (i_c<-Ef_c)
coadati-cl :En<tdt
w h i L ( i <d )
whil i_c<=sf_c dio { tf (atcoaatatt cl I lil!81
& & s t i l ==0 )
l
Ef_c! = 6f _c + 1,
coadlatEf_cl !=i; I
atil:=1t l
rltl : = c oaat at i_c l t
(
i: =l+1, lCraf.
Cilirelt( tstr, A,n) t
br(a);
ctttrN( r o!!!. rxt , , a, a) ,
If (:!lbl l=0) relac{b),
)
b f(11 ),
t! ttb l <>0 t lEn t 6! ac ( b) ,
refeitoarela sitlaliiloprezonlalo
Matrlcealanfurllor.Inlrobdri la 9.1.li
a) pentruexemplul1, intrebarea
sle:cumputemafla,pentrufiocareoragin parte,
ofagolein careputemajungecu maqina?
b) pentruexemplul4, intrebaroaoste:cum putemafla,pentrufiecarelriunghiin
parte,caresunttriunghiurile
asemenea
cu el?
Revenindla grafulasocialacestorsilualii,problemaconslSln a alla penvu
liecarenod I, nodurileJ, pentrucareexistdun lantde la t la j. Evidenl,rezultatelo
pot Ii relinuteinv-o matricecu n linii 9i n coloane(makicepetratce).Aceastd
matricess numegte matrlcealanlurllor,iarelementele
eiau semnificalia:
v. | . d. Lra Tco n e x
Dacdla ambelelntreberi
rdspuhsul esloafirmativ, areel penlru
co semnilicatie
graluflle
asociaie?
Aceastainseamndcepenhuodceperche de nodud,exbteun
lanlcarcle areoa xtremitell.
Sau,in limbajul teorieigrafurilor,
specitic celedouS
grafurisunt
conexe.
Deflnlfla9.9.Ungrafneorienlat
C. (v,E) esteconex,dacepentruorice
perechodnoduri x.yv, existgunlanlln careexhemitatea
iniliald
estex
finalS
$iexlremilala y.
este
2. GrafulaEturatnu osteconex.Deexemplu,
intre Flgura
9.12.
nodurile
1 9ia nuexisleniciunlanl.
I@
Jr Ungtalcu unsingurnodeste,prindefinilie,corex Aceastapentrucd nuexiste
douenoduridiferitspenlrucaresd se pundproblenaexistentei unuilant.
260 Capitolut9. tntroducere
in teoriaqrafurilor
1. Grafulaldturatesiealcetuitdindout componente
conoxe.Pima esle alceluitedin nodurilo1, 2, 3 9l
muchiib care le unesc pe acestoa,a doua este
lormaledinnodurilg{ 9i 5 9i muchiacafele uneste.
Io
2. Grafuldin ligura 9.14. contjne3 componente
conexe.A9a cum un gral, cu un singurnod, este
conex,tot a9a un nod izolatalcaturegte
et singuro
o
componenta conexS.
o
i,4anual pentruclasaa Xl a
de informatice 26t
I Observatii
VarlantaC++
*inc1udl6 iqrafurl.cDD!
wa! n, i:in t!r !; inr Bt50l,at50t t501,n,r,
d: ar!6y[1..5 0]o f iDt qr ,
votd atf_!(tnt rctl)
f , ot ( k - lr k <4 r k ++)
writ (rcd,' '), Ir ( (Atrcall lkl E"1)&&
( s t k l'" 0 ) )
to! k:=1 to n d o df,!(k) t
if (Attu il,kl:1 ) andt ( s t k l s o)
th n d f !(k); '
{ c tri r i N ( rc,l aI.r* r" a, n),
fo f, (1 .1; i < -n, i + + )
citit N ( 'cra f .LxE',a, n) , tf (3 ttl 860)
fot i! =1 !o n a lo { cout <<ncoftE,
if 6[il =0 rh on c@e$"<<ddl,
df,r (i ) ;
uitln( 'conD conoxd' ) ' c@t<<dat1,
l
)
in teoriagrafurilo.
Capitolul9. Introduere
9.1.ld. cicluri
Revenimla exemplulcu oragelelegatepdngosele.intrebareaesteurmeloarea
exisHweun oragdin careputemfaceo excursiecu magina,se nu trecemdeca c
singurddatdpe o gosea,s6 vizildmmaimulteorago9i se ne intoarcemde undearr
plecal?
Problema se reducela a afladacagralulasociatare sau nu cel pulinun ciclu
Maiinlai,se delinimnoliunea.
Detlnitla9.t1. Un lanl L carecontinenumai muchil disllncte 9l pentru
care nodul lnltial colncidecu nodul final se numestecich.r.Dac6,cu
exceplraultimuiuinod. care coincidecu p4mul,lanlul este elemenlar
atunci ciclul este elementar(adici, cu excepliaultimuluinod, care
coincidecu primul,continenumainoduridislincte).
. Exemple:pentrugrafulneorlentat
din Figus.15.
. fiqura9.15.avem:
a. IL,2,3,r"1 esteclcluelementar.
i
b. lL,z,Ll nu esle clclu, penlrucd {1,2) Si
( 2,1) reprezintd
o aceeagimuchie,decinu conline
numaimuchiidistincle.
c. l'.,2,3,2,1"1 nuesteclclu,pentru
cd nuconlinenumaimuchii
dislincte.
FascatI -
; 1r."u,,] Yartanta .l. i; .: ." : i , ' Verlai*a
cl;;"' ,,i i. .
us gr.furi,rlncrE, { iDc lui! 6' t i. ! u r i . c t t , '
iat Isol ,aI5ot t5ot ,sasi!.n;
s:a r iay l1. . 50lot lnles6a;
rctdl dlf (tnt nod)
( i,nt k;
sa.it.booleet
Dlocatur alf (nodl: iDtegr); rot (h.1rk<=nrk++)
i f (Al n odl IkI = = r)
{
,i tk l Inodl .0,
for k!=1 !o n ato i f t attl " 61 61L"
t! Alrcit.kl=l lh6n Is6 !r.6itr1,
)
alkl Inodl rr0, l
t! lt k l= o r hd d f(k )
6lao 9a3l! !=!rue;
{
clt!.!N( "Clraf,.txtr.a,n),
d l ! (1 ) ,
l! (srar.l) cout<<"D4",
Cl t:L !6 !l( t O r ! ! . t at r , l, ! !), J.3 oou!<< Nu.,
a t!(1 ),
lf slstt thtl I'rlth{'D.' ) '
6I3e wll!In( 'Nl' )
$, o0"..4r"
Deglparcurgera
se facln tlmppollnomlal 9i cu loalecd programul est
sputeaproceda
simplu, lntr-unmodcumultmaiinteligent. l\4aimult,aproapo
ct nu
estecazulselacemunprogram. conx,
Grafulliind eslsuficient sdverificemrelalia
n o n -1 ,
9.1.11.Arbori
9.1,l l.l. Notiun e ad e a rb o re
Delinitla9,12,Senurnegte
arboreungraf
neodentat careesteconex9i nu oontine
clcluJl.
in figura9.17. aveti un exemplude abore cu 5
nooun.
for(kr1rk< !nrk+ + )
tl (.trl rcdl l kl .B l )
f,or k,cl to a ilo (
1! rltloal, kl ther! tnodl .o;
-l ^l
i f kl { s l kl rr0) dl (k),
a [L, noal: r.O, 6Io6 gaalr=lt
t t s lk l .o th d d t(k ) t
el.6 sEai! !-tm6, ,
yanualde informatice
oentruclasaa Xl_a
\ Demonstralle
9.1,l1.2. Noliunead e a rb o re p a rt ia l
Sd presupunem cd inlf-unjude!se impunerepararealuturorgoselelorcare
unescdiversele localitdli.
Peniruaceasias-a obtinutun crodilexlerncarepermiteca
toategoselelesd fie recondilionate.
Desigur,se doregieca repararea goselelof sd se
Iacdcet mai repede,dar,in acela9itimp,irebuieca in timputreparatiitor
se se poala
chcula,astfelincatsi nu r6mandlocatiletiinaccesibilepentruhaficr;trutier.Se cere
un numarminimde goselecare sd nu inlrein repar4iiin primafaze,astfellncat
conditiade maisussa poaleli respedate.
Da considerimgrafulin care nodudlesunt localitatile, iar muchiileslnt
goselele,va trebuisd pestem un num{r minlm de muchll, astfelincatqrafulsE
.dmanaconex.Careesteacel
-umer minimoe muchiicareconservacon;xitatea,
Evident,n-1. Cumgrafulrdmaneconex,in urmaelimindrii anumiiormuchiise obtine_
a$acumrezultadinleorema9.1.(datdin pa.agrdulanlerior). un albole.
0 Problema9.7. Se dd un gral conex,
c=(v,E). Se cereun gJafpa4lalat sdu,
caree6tearbore.O astfelde structurd se
nume9tearborc pa4lal. Evident,existd
posibilitatea
ca dintr-ungraf conexse se
poataoblinemaimulliarboripa(iali.
Aldtural, puteli observa un gral
conex(stanga) giun arborepa(ialatsdu.
EI Pentrua rezolvaproblema, vomtolosi, Fl gura
9.18.
din nou, o metodede parcurgere a unui
graf,mai prcisparcurgerea
Dr,,Vom aJi9anumaimuchiileselectatede alqorilm.
adic5celocarenu doiermin6
ciclun.ProgramulurTatorcltegtedatelerefenloar;la un
grafconexgiafigeazdmuchiileunuiaborepartial.
Vhdanta
C+i , ;.
ur6a slafurL.wlnclt, Slnclua!6 rsEf,urL. cDDn
Inr 6[5ol ,A I5o1 I5oLn, ",,1
. r llE r y l 1 ..5 0 l o t l n !.s r,
rclat dU_!(tnl nod)
Droc6ilur d!_r ( trod ! ln!sr) ;
for (kFl rk< .nrk+ + )
If (athoau tkl -s1 a& 6tkl ..o)
foi k3-1 !o n dlo ( cdt<<nod<<r " <<k<<endlt,
if ( alio d ,k Itl ) s d t (Bl k l z o ) dl f_r(k),
lh.n boqln !
Etl e rn (n o d ,. l
' .k ),
i tt_ !(k ),
{ C i l i rol r{ troE af.rrti ,A ,n),
dr_! ( 1) ,
l
c llir t N( ' e ra !. rx E ' ,A ,n ) -
al!-r (1) t
Manualde informaticipentruclasaa xl-a 267
9.2.Grafuriorientate
de graforientat
9.2.1. Noliunea
Nu intotdeaunagrafurileneorientalepot exprima"relatiile exislenteintre
anumiloelemenie.Pentrua ne da seamado acestfapt,vomdacatevaexemple.
1. Considerem un grup de n persoane,undefiecarepersoanddetineun lelefon
mobilal liecdroipersoane
mobil.In agendatolefonului se gesescnumerele de telefon
ale allor k>o persoanedin grup.Sd observimcd dacepersoanai are in agenda
leletonicanumSrulde telefonal persoanei ca persoanaj sa
J, nu esie obligaloriu
aibein agenddnumdfuldetelefonalpersoaneil.
2, Un aulordo cartedoregtesd prezinteanumilenotiuni.Pentrua oblineo lucrare
valoroasd, acestadore9teca oricenotiunepe careo inlroducesa fie precodate in
lucrarede noliunilspecarele presupune dejaprezontate.
3. tjn programeste alcituit din n instrucliuni, alribuiri,apelurido subprograme,
Aici sunt excluseinstrucliunite
afigari,citiri sau insirucliunidecizionalo, repetitive.
Acestearezultdin uffia inslruotiunilor decizionalegi a ordinii de executarea
instructiunilor. Pentrua prezentaordlneain care se executdinslrucliunile, unui
programi se poaleasociao schemtrloglcd.
Elementele intre care existdanumiterelatiise numescSi de acoastddatd
nodud sau vadurl. Doud vaduri pot li unile p ntr-un arc. Arcul (t,J) este
feprezentat ca o segeatade la t la J giare semnificatia
genoraEce exisl5o relatie
de la t la J (aientie,nuSidela J la t),
Pentruexemplul1, arcul (l,J) ar
somnificalja cd t are pe agendatelelonbe
numdrul lui I. Pentru exemplul ,, arcul(t,J)
are semnificatia ci estenecesare cunoaiterea
noliunlit pentrua puteainlelegenoliunoa I,
Pentruexemplul 3, arcul(t,J) aresemniJicatia
cddup5executarea I estoposibil
instructiunii sd
soefectueze jnstructiunea
J.
ProcedAndagacumamafSiat,oblinem
un Figu.a9.19.
Exsmplud6 gralo enlal
graforiontal
agacumestecelalSturat.
Definllla9.13.Se numegtegral orlentatperecheaordonalee-(v. a),
uhde:
t v-{vl, v,, ...,vn} esteo multimeiiniti de elemenlenumitevedurl sau
noduti.
t a esle o multimede arce.Vom notaun arc prinperecheaordonati
268 Capitolul in teoridqrdfuritor
9. Invoducere
%%
de grafuri orientale,mai precis acele graluri
orientalein caropentruoricearc (wr,wl) existS
arcul (vJ.vr). Abturat, puteliobseNaun graf
neorientat(stanga)reprezenlat
ca ungraforienlat
(dreapta).
Figwa9 20.
5. Gralurlle orientale se mai numesc 9i
dlgrafuri.
Dellnllla9.14.In gratulorientat
c={v,a), vaduriledistinctevr,vjc sunt
adlacentedaceexislacelpullnunarccarele unegte,
Aslfel,avemurmdtoarelo cazuri:
a) Existdnumaiarcul (vr, vj)eA - ln aceslcaz spunemcd arcul (vr. vl)eA
osteincident
sproexleriorcu vr 9i spreinteriorcuvj.
b) Existdnumaiarcul (wl, vr)A - in acestcaz spunemcd arcul (vj, wr)ea
esteIncldenl
spreinieriorcu vi Sispreexleriorcu wl.
c) Existdarcul (vi. vj)eA Flarcul(vl.vl)eA.
Deflnltla9"15,intr-ungraforiental,
pringradulexterioral unuivarfv vom
inlelegenumirul arcelorIncldentespre exterlorcu v. Gradulexterioral
unuinod va tinotatcu d+(v).
Delinllla9.16.inlr-ungralorientat,
pringradutinteriorat unuinod v vom
b inlelegenumirularceloi incidentespre interiorcu v.
Gradul inlerioral
unuinod vatinotatcud-(v).
d" (t) =3 qi
d- ( i)
-2 .
pentruclasaa xl-a
Manualde informatictr
rt:ll
O relatieufiE:avem3 'z graturi
complete.
Demonstralia
sefaceprininduqie!
Exerctiul
grafurilororientate
9.2.2.Memorarea
graturilororientalese tace la fel precummemorareagralurilor
lvlemorarea
neorientate.
Pentrutiecarestruclurdde date pe care o vom folosi,vom avea cate o
procedurA(funclie)care citogtedaiele respective.
Toate acestesubprograme se
gdsesc grupatein unitateade programslafuli.Dr (peniru Pascal)9i in
Elafuri . crE,(pentr C++).
pe carele utilizdm
Toalesubprogramelo cilescdatelodintr-uniigiortext,in care
pe primalinievomsc e numdruldenoduri(n),iar pe umStoaroleliniiceteo muchie
(1, J) ca Tnexmplulurmelor,ln careesteprezentatun gral gi liniilefigieruluitelt
careestecitilpentruel:
riEorur
*o,f5l
lr, I
113 |
l15l
123 |
13{ |
jo'l
Flgura9.22.
\,. - o matricepetratice,
undeelomentele
ei,ar,J au semnilicatia:
a , ={
[t, pentru
1i,1;e ,t
" (i,j)e A
10, pentru
0l r 010
9_, Penkugrafuldrn figura9.22..matrrceade adiacente
e^ esteprezenlalS
aldtural. 001 000
I 000 100
li Observalll 000 010
f. intrucet,dinmodulin carea tosldefinilgra{ul,rezuneca nu 000 000
exislearcede la un nod la el insugi,rezultdcb elemenlelede 000 000
Manualde informaticipentluclasaa Xl-a 271
pediagonalapdncipaE relinO(.r,1=0,oricare
arfi it1,2,....n]).
2, Matriceade adiacenlSnueslein modobligaloriu simetrice.
3. Sumaelemenielor de pe liniai, ! ea]-,2,...,nt are ca rezullatgradul
exterioral noduluii,d'(i ).
d. Tot a9a,sumaelementelor de pe coloanat, i e tI,2,,...n] areca rezullai
gradulInlerloralnoduluil,d- (i).
5. Surhatuturofelementelor matriceide adiacenldesle, de fapi, suma gradelor
exterjoare(sauinlerioare)adicesumaarcelor,n.
5 . DacAgrafulcililare !n numdrmicde muchii,atuncimatriceade adiacenldesteo
forna inelicientd
de memorafe a lui,pentruce eava relineo mullimede O.
VarlantaPascal VarlintaC++
Drocodlure citireo wld clrl,!6o (ch.! Nso*f i [2ol,
(rita6-F1s : 6t.ins, l n r a l 50l t501, i ur& E )
var A:Mat_ad, va! n:tnlegr) t {
ro ad lD(t,t,J),
lvlaijos,putqiobservasubprogramele
careconstruiesc
listelede adiacentdl
VadantaC++
Droc.dlrre Citlre_1,A_a.ratico voial citl16_r,!._ArratIcO
{NuF_f ls : Errins;var r!Lisra; (cha! N\rre-fla [20],
var slart !!Ehlr6; i n t rl rl 1501,
var ntiDlfrr), i rt srart[5o], i nre 4)
var i, j. k r t nt 6s r , {
272 in teoriaqrafurilor
Capitolul9. Introducere
9.2.3.Crafpariial,subgraf
Definilla9.18,Un graf pa4ial al unuigraforientaldat c= (v.A) esteun
graf Gr=(v.A!), undeArgA.
Un graf pa(ial al unui grat dat, este el lnsu9i,sau se obline din c prin
suprimarea
anumilor
arce.
Flgura
9.23.
gr6tps(lal
,3 ExercillulCdtegtaludpa4laleareungrafcun arce?
E,
dinparagraiul9.2.1, avem:
Relerilorla exemplele
1. Pol exislapersoanedin grupcareiSi pierdtelefonulmobil.Astfel,numerelede
telefonale respeclivelor persoaneaflatein agendaaltora,penlrumoment,nu mai
folosesc.De asemenea, ceilallidin grupnu mai pdstreazenumereled telefonale
aceslora.In gralulinilialse renunldla varlurilerespective
9i la arceleadiacentelor.
Aslfel,se obtineun subgralalgrafuluiinilial.
2. Autorolrenunlab prezentarea anumilornoliuni.Dinnou,se oblinoun subgralal
grafuluiinilial.
3 ExerciliulCdtesubgraludareungrafcun vedud?
grafurilor.
9.2.4.Parcurgerea Drumuri.
Circuite
t Parcurgereagrafurilororieniatese facola fol precumparcurgerea gralurilor
neorientate.Aceaslainseamndcd parcurgerea se poatolace in doudfeluri,in
adencime (Dn)Siin ldlime(BF).Subprogramelesunlaceleagi.
) PentrugraiulorientatG=(v,A), undrun D=tv1,vr,. . ,.vJ esteo succesiune
de vaduri(v!.v,)eA, (vi,w3)a,..., (we"1,v,)eA,Verlurile vr Si vDse
numesc extremnellle drumulul. NumdrulD-1 se numegte lunglmel
drumului.Aceslaeste dai de numdrularcelorce unescvaduriledrumului.
Deteminarea unuidrumintredouavarfurigi doterminarea
existenlei unuidrum
intredouevafuri date,evenluala unuidrumdo lungimominimd,se facela fel
ca in cazulgraturilor
neorienlate.
t Un drum D-[v1.vr, . . .,wD] esie elementardacd contine numai varluri
distincte.
t Un circuit ina-ungraf orienlateste un drumin carovarfulinjlialcoincidecu
vadulfinal9i careconlinenumaiarcedistincte. Prinli-oslmpldparcurgereDir
putemdetermina, ca giin cazulgrafurilor dacaun gralcontinesau
neorientale,
nu un circuit,
274 Capitolul9. Introducere
in teoriaorafurilor
Beluem dinparagratul
exemplele 9.2.1.
Pentruexemoul1: persoanai are un mesajde transmispersoanei J. Dacd
existdposibililatea
ca ea se suneo persoanS
al c6reinumeril arein agendi,aceasta
o altapersoandg.a.m.dpandestesunatSpersoana j, inseamndce exislSun drum
de la i la j. De asemenea, dacdexsld posibilrtaieaca persoanai sd ajungds6
primeascd mesajupe carel-atransmis, inseamnd cd exisiduncircuitdelai la j.
e9!gq_elgopLu!2:dacdgralulare un circuitinseamndci existdcel putino
noliune care nu poale li explicatddecat prin
intermediulallora care, h rendul lor, ar lrebui
expicale exact prin noliuneacare nu poate li
explicaldferd ele. Se mai intampb 9i aga. Un
exemplude lmbaj carenu poate{i predalin mod
clasic este Java. De exemplu,cel mai simplu
programut lizeazAdin plin programarea orienlaH
pe obiecte,carese studiazddupdce am lnvdlatsd
scriemprograme simple.
Pentruexemplul 3: daca dupd execulia
i, pentruce pulinun sel de date de
inslructiunri
intrare,se ajungesA se executeinstrucliunea J,
inseamndcd exisld un lanl de la i la j. De
asemenea, dac; dupece se executbinslrucliunea
i, se ajungese se executedin nouinstrucliuneai,
atunci programulconline slructurirepetrtive,jar
grafulasocialconlinecircuite.
AFaclm am definitpenlrugrafurineorieniate
matricealanlurllor,similar,se poatelorma pentru F gura9.25.
grafuriorientalematriceadrumudlor:
9.2.5.Craftareconex.Comoonente
tareconexe
ReluSmexemplirl1 din paragraful 9.2.1. Sd presupunem c4 grlpul celorn
persoane efectueazdo excursiela munte9i, dinpdcate,s-aur:tdcit.Intrebareaesie:
exi a posibililalea
ca oricaremembtual grupului,se propun5un loc de intanireqi
se-gianunleteletonicprieieniidin agendd,acegtias5-i sunepe allii 9.a.m.d.,astlel
incattoli membriigrupuluise aflede acestloc?
Judecanddup6 gfalulorientalasociat,ar trebuica de la oricaremembrual
grupului
sa existeundirm cetreoricarealt membrual grupului. Aceastainseamndc5
oicarear li riodurilei 9i J, existeun drumde la t la J Siexislaqi un dfumde j la i.
Ungrafcu aceaslaproprietate se numeSie gruftareconex.
pentrufiecarevad i
daca Euc[l] =0
totisuccesorii
lulI, inclusivI, vor relineffc;
toli predecesorii
lui i, inclusivt, vorrelinerrc;
toatecomponentele
1, pentrucare sucltl+prdlil vor retineO;
se rncremenleaz
nrc,
se afigeazd
veduriiefiecdreicomponenle
conexe.
puietiobservaevoluliavectorilor
N,laijos, suc Ai prdl:
L 2 3 4 5 67 t 2 3 4 5 67
1 1 I 1 0 0 0 1 1 I 0 0 0
1 1 7 0 0 0 I 1 I 0 o 0 0
L 2 3 4 5 67 L234567
1 I 1 2 o 0 0 1 1 1 o 0 0
1 1 1 2 2 2 0 1 L 1 0 0 0
x.2 3 4 5 57 L 2 3 4 5 67
L t 1 3 0 I 1 1 2 3
1 7 I 2 3 0 1 1 1 3 4 3
t
pentruclasaa Xl a
Manualde informatice
esleprezentalincontinuare:
Progfamul
vailanta C+r
+incluale "sraturi, crtD'
v ar a u c,pr ed. B r r ay t l. . 5 o l of i n l 3 w Is o l , 9redl l 5ol ,
DlEei Ats o l ts ol , n,trc, i , j t
{
c t t t ro{, Gia f.txr' ,a , n) , c i ti ro o (n c r af .txtrta,n),
f or i: -1 to n a lo !o ! (t= L ri< = nrI+ + )
j .f (s u c l l l .= 0)
{ d c ti l ' rc ;
d f_ rl (i ),
8uc ltl .=nrct d f r2 (t),
fo f (l = 1rl < E n, J+ + )
df-!2 (i), It (s uc IJI l -D !.dl Jl )
fo! j:=1 ro n dr o 6uc IJI E D r.dtJl 30,
if 6u c IJ I <>DrdI j I t hd
)
6 uclil.=o ; fo r (t-r;t< rcr1+ + )
Dfd ljl:=0 , {
dout<< ncdri$ent.r <<l<<dtt1,
nrc::n !c+1 fo r (l .1 rl < -n; l + + )
tf (s u c Il l ..l )
f , or i: = 1 to n!c-l a lo c a t< < j < < ' ',
dit ln ( tcorg on erE a ' , 1) ;
)
f or j: :1 lo n d o
if suc Ijl=1
rhn rit6 (i,. .),
278 Capitolul9. Introducere
in teoriaorafurilor
Si in cazulgrafurilor se pdstreaza
orientate de graf conx 9i no(iunea
notiunea
de comoonentAconexi.
propuse
.Probleme
1" O cunoitinlami-azis:la minein birousuntem5 persoane. Fiecaredinirenoi
colaboreaz6cuexacl3 persoane. A zisadeverul?
2, Demonstr4i cdintr-ungrafneorienlat numarul dogradimparestepar.
nodurilor
3, Fiinddaten persoane Sin relaliidprietenie
intreledeloma: persoana I esle
pietenecu persoana J, se ceresd se stabileascecorespondentele
intreafirmatiile
dinstenga9iceledindreapta.
t. in grupulcelornpersoane. fiecare I a. GrafLrlasociatarenoduri
persoand a.ecel putinun prielen. I terminale.
2. Fiecareoersoana ostoprietenacu I b. Gralulasociatconlineun subgEl
oricarealtad n grup. I completcu x noduri.
3. Ex6tepersoarecarenu au decet I c. Gralulasoclalestecomplet.
prilen
unsingur
l a. cratutasooatnuarenoduri
4, ExrstAk percoane
dingrupastfelI izolale.
dinireeleeslepietene
incetoricaro
cutoatecelelalte
k-1.
l rr 1
r
rr0 r 0) r 0 ' r 10 r0l 0 r r r 0 1 0l
r0 " r 0 t 0
0 0 0 0 0 1r 0 0 0 0 0 0 nt|01r.0j
r 0 r | 0 0 0l
ir 0 0 I 0 0 0
| 0 | r 0 0 tl r 0 I 0 0 0 I
0 00010(J 0000000 ;:r :i ? i ] i ? i l i
, , " , ii
::" : l l l : "' :il
b) c)
280 ln teoriaqla:fulih(
Capitolul9. lntroducere
conexe.
9,1,Graful esteabeluildin 2 componente
9.2. tL,1.4l esleun lan!.
9.3. t2,1,4,3,11 esteun ciclu.
9"4. Nodul2esteizolat.
9.5. Grafuldin probbmeare ca grafpa4ialgraful
dinfigura9.28.
9.6. Grafuldin problemdare ca subgrafgrafuldin
figura9.28.
9.7. NodulI are gradul2.
9,8. Nodul{arogradul3. E-l
9,9. Graful din problemdcontineun f,l
ciclude lungimo3. l-rl
9.10. Graful aldtufat,reprezentatcu l4l
ajutorul listolor de adlacenld, osto Flgula9.29.
subgrafal grafuluidinproblemS.
de mailosar puteali malricea
10. Caredintrematricele de
a gralului
adiacentd alaturat?
l:
t0l l0l t0l 100
l foI or oo)
f oo0 o0o0l f o r r o) f o rrrl
l0 0 o llr o 0 o llr 0 r r l
l 0 0 0 0]1 0 0 0 ollr 0 0 0 l ' r 0r r l
\0 0 0 0. J[ 0 0 0 r j \ 0 0 0 0 J u r 0J
a) b) c) d)
Figura9.33.
37, In graluldinfigura9.34,careostlungimea
celuimai
lunglantelsmentarSi cars estelungimoaceluimai lung
drumolemntar?
de la 38 la 41 se reler5la grafulaldlurati
Problomele
38. Catecircuitecontine?
e) 3; b) 2; c) 1; d) 4.
39. Calecomponente
tareconexe
conline?
a ) 4; b) 3; c, 2; d) 1.
carese inverseazd,
vor aliqaindiciicomponentelor iardacdsorlareanu esieposibild'
se afi$eazaNu.Datelede inlrarese ln figierultextaale.ir astfel:
gSsesc
r,inia 1 n
r,idia 2 1,..., n ina-oordlneoarecare;
L l nia 3 n
n liniiconlinfiecarecateo perechedo indicii, j.
umetoarele
Exemplu:
3 Prcgrnulva
afiga:
31 2 Lz
2 23
23
L2
Rispunsuri
1. Nu. Ar rezullaun gral cu 5 noduri.Cumliecarepersoandcolaboreazdcu exact3
persoane, inseamndcd fiecarenod are gradul3. De aici,rezultdcd sumagradlor
este15. Aceastainseamndcd 2n-15, decir nuar finumdrinlreg.
2. Dacdar fi impar,sumagradelorimparear fi un numerimpar'Cumsumagradelor
paroosie un numerpar,rezultici sumatulurofgradelorestoun num5rimpar.Ori'
acestalrebuiesd fi un numarpar,pentruce ea steegaldcu dublulnumdrului de
muchii.Absurd.
3. 1- d, ?- c , 3- a , 1 t' b .
3 8. c) .
39, b).
40. c).
4 1. a) .
52. Algoritmul
luiLee.
A.1.1.Tipuristandard
a) Tipuriintregi
iOcuplf
'
(blt ,: r
Ehortlrt lntregscurt I de la -128 la 127
intreg 16 de la -32758 la 32?5?
do la -21{7a83648la
lorglnt intreglung 21,474A3647
b''le numdr
naluralsourl I do la o la 255
cuvant do la o la 55535
dlngl
Urgule
moblld, [-3.4x10!r, -1,5xto{r] u
slmpEprecizie [r.5x1o'",3,4x10!6]
atoubl6 virguldmobild, 6{ [-1,7x1oro',-Exro'::d] v
dubleprcizie [5x10-3' r, 1,?x1o$' ]
virgulS
mobile, 80 [-1.lx10"'", -3.ax1o-"t'.]
formallung u [3, {xlo_'e:'z. 1,1x10"!']
virguld
mobild [-9.2x10" .9,2x1010]
- poaterelinedoardoud
D) Tlpulloglc - lroor.an valoritrueSifalE.
290 Anexal. Memento
A. l. 2. Cons t a n t e
A) Constanteinlregi. Sunt alcdtuitedinlr-o submullimea numerelorintregicare
poi 1i reprezentalein memoriacalculatorului.Se pol reprezentanumereintreg
cuprinsein iniervalul:[-2.141.483.648,
2.141.483.647).
B) Con6tantereale. Sunt alceiuiledintr-o submultimea nomerelorreale (ma
precis,a n!merelor ralionale)care pot fi reprezentatein calculator.Modulu
numerelorrealese gdseile in interualul in loculvirguleise
[3,4*10{35'z,1.1*104'g31.
punctul.
folosegte
Exemple: 2.34,-45.26,512E+23,
-45.1E-3.
Ullimeledoui numereJolosesco scriereneinialnitdin malematicd.
Ele reprezinld
numerele 512*10'?3
9i -45.1*10n.
C) ConstanteSir de catactere.DupScum reieseqi din denumire,cu ajulorullor
se reprezintdgiruride caractere. din9ir pol fispecilicateenumerandu-le
Caracterele
irlre aposlrofur..
Exem p lu :'ab c'.
D) Constanlelesimbolice.Acesteasuntconstantecafe au in ptogramun anumit
nume.Delinlreaconstanlolorsimboliceprecededefinirealipurilorutilizator9i se
realizeazd
astlel:
dona! latnt1lLcator = xp!6sL6;
lienci.rlcator . 6xDr6616t
A. l . 3. O per a t o r i
A , 1 . 3l . P r i o r i t a te
o pae r a to r ilo r
latdcele4 grupede priorilate.
Grupa1 (prioritalemaxime):
NOI, + (operalorunar),- (operatorunar).
Grupa2 (operatorii
din grupadoi se mai numesca operatorimultiplicativi):
IND, *, /, DrV, !dOD.
I\,lanualde lnformaiicApentru clasaa Xl-a 291
A ,l ,3 .2 .OP e ra to ri
a ri tmetici
suntdedou6feluri:
aritmetici
Operatorii
. operatoriunari(+9i -);
. operatoriblnarl( +, -, r, /, Drv, ![oD).
) de adunare.
Operatorul+. Aresemnificatia Operanzii sii suntde lip introg
de tip real.Dacecel
saureal.Sepoaleca unulsafiedetipintreg9i celdlalt
putinunuldin operanzi estede lip real,alllelestede
este,realrezultatul
tipinheg.
Operatorul + apare9i ca operator apareca sumade
unar.De asemenea,
lr giruri(cazpecarenul discuidmacum).
t de scadere.
Operatorul-. Aresemniticalia Operanziisuntdetiplnlregsau
real.Dacecol putinun operand estede tip real,altfel
estreal,rezultatul
estedetipintreg.
t Operatorul*, Aresemniticatia deinmultire.
Operanzii suntdellp intregsau
ral,Dacdcel putinunuldinoperanzl esledo tip ral,rezultalul
esledo lip
real,altlelrozultalul
estedetiplnlreg.
t OpratoJul dTmp54ire,
/. Arosomniflcatla polfi dolip introgsau
Operanzil
rcaldat, lntotdeaunatezultatulestede tlprcaL
t de impd4irelntreagd.
OpsratorulDrv, Ar semnlficalla Operanzii suntln
d6 tlp lnlrog,Estegbllgaloriu
modobligatorlu ca fiecareoperandsa lle
cucelpullnunspatiudeoperdtor.
separat 6stdlip intreg.
Flzullalul
Drv iurnizeaze
Operalorul rzultatcorectnumaidaceambolevalorisunt
numsrointreglpozitive.
penlruoperalorulDrv
Rezultatul seobtineaslfel:
. ss faceimpdrtirea
Tnlreagaa cslordoudnumerecaresuntconsiderale
pozitive
(deexemPlu,13 itLv {-3);
. semnulcAlul]ise stabilelteduparegulasemnelor (+ cu + rezullat+, +
qi +
-, - cu- rezultat+ - cu rezultal-).
cu - rezultat
292 Anexal. Memento
A .1.3.3. Operatorire la t io n a li
A .1.3.4.
Opera t olo
r i g ic i
) Operatolul No! (negare).Modul de acliune so poalo obsorva maiios:
NqI (TRITE)
-rAlSEi
NOI (!ALSE) ={RUE,
A.l.4. Instructiuni
de
1, lnslructiuneavidi. Nu se treoenimic'dar loluli exist5 O sucoesiun
ir'indice
sepafaiori vide.
maimultorinstrucliuni
prezenla
de executareesteurmdtorul:
Principiul
. se evalueazeexpresialogicd;
. dacdaceastaia valoareatRuE, se executdinstruqiuneaplasalddupd
plasatddupdEr,sE'
tflEN, ln caz contrarse executainstrucliunea
294 Anexal, Memento
Fotma2.
rF expresieloglcerHEtrinstru4lune.
Principiul
de executareesteurmdtorul:
. se evalueazeexpresialogice;
. in silualiain careaceastaarevaloareaTRUE,se executdinstrucliunea
aflati duparsEN,in cazcontrarse trecela instrucliunea
urmetoare.
Aici,ct,...,s!1,...,re
reprezinia
constante
de acetaSitip
ca giexpresia
ofdinal6.
Principiul
de exocutafeesleurmdtoruli
. se evdueazaexpresiaordinald;
. acea instruqiunocare are in fald constantaob,inuldin
::-:l":!ti expresiei;
evatuarea
. ln silualiain careniciunadln instruqiunile1...t' nu estoprecedatj
d aceaconstanta, so executdinslrucliunea
plasatddupaEr,gE;
. dacdSiclauzaELSEesleabsentd,se lrecela jnslrucliunea urmatoare.
6. IngtauclluneaWBII,E.Reproduce
slructuracar tinp. . . executi.
Formagenerald este:
q[tllB expresleloglc, Do instrucfiune
Principiul
de executareesteurmatorur:
. se evalueazdexpresialogicd9i in caz ce aceastaare valoareaTRuE
se executainstrucliunea,
se evalueazddin nou expresia,dacdaceasta
are valoareaTRUE se executa din nou insirucliunea;procedeul
continudpandcAnd,la evaluarea expresiei,se oblineFAnsE.
ManualdelnFormaticA tru clasa
a xl-a
uNrL exprcslelogice
instrucliuni
Aici,i1, i,,..., i, reprezinld
de executareesteurmdtorul:
Principiul
. se executSsecvenlade instrucliunr;
. se evaluoazS expresialogicdi
. dace aceaslaia valoarearAr,sE se oxecutddin nou secvenlado
contrarse trecemaideparte.
insirucliuni,
8. Intrucllunea FOR.Atuncicendcunoaglem do cateori se execuleo secvenla
FoR Ea are doud lorme, prezentatoin
gsie bine ;d se utilizezeinslructiunea
continuare.
Forma1.
FORvariabile:= oxpreslelTO expreslerDO instrucllune
undel
- variabilapoatti de orlcetip ordinal(de exemplu'de tip trtes!'
sauboolar, darin nlciun cazde tipul!sax);
- exprealel,expresle2suntexpresiideacelagltipcu variablla.
dg executaroesieumdtorul:
Principiul
char
I
I
j
I
Paaul1. So evalueazeceledoueexprssil,
Pa8ul2.
Paaul2.1.
. Dacevaloareaobtinutdln uma evalu5riioxpresiei1 este strictmai
mare decat valoarea obtlnutd in urma evaludrii expresiei 2, I
oxecutarea
.
FoResteincheiati;
Dacdvaloareaobtinutdin uma evaludriiexpresiei1 este egalacu
I
valoareaoblinuldin urmaevaludriiexpresiei2, se airib!ie variabilei
de ciclarevaloareaobtinuldin urmaevaludriiexpresiei1' se executd
subordonate
instructiunea qi executaroa
?oRestelncheiate;
. Daci valoareaobtinutdin urmaevalueriiexpresiei1 estestrictmai
mic6 decat valoareaoblinuie in urma evaluariiexpresiei2' se
atribuievariabileide ciclare valoareaoblinuid in urma evaludrii
expresigiI si se trecela 2.2
t_.'
296 Anexal. I4emento
Pasul2.2.Se executelnstrucliunea
subordonatd.
Pasul2.3,
. Dacd valoarearelinlte de variabilade ciclareeste strictmai micd
decat valoareaoblinula in urma evaludriiexpresiei2 (evaluare
electuati la inceput)se adunt 1 variabileide ciclare9i se lrece
ta2,2.
. Dacdvaloarearelinuude variabilade ciclareesteega6 cu valoarea
obtinutdin urma evaludrijexpresiei2, executareainstructiunii
FOR
se incheie.
Foama2.
FOFvariabile:= expresierDOWNTOexpre6ie,DO instrucliune
t-
,. In acestcaz,variabilade ciclaroscadola liecarepas.
A.l.5.Cateva
functrii
utile
> Etnus:S-+t-l,11;arelormagenerald:
fu n c ti o n S i E (x r Raal ) ! R a1t
> coBtnug:ln-+[-1,11;
aretormagenefale:
f u' Itc tl o n C o E(x ! B a I)! Real r {co6l nuE (* )}
> Funclialogarltmlce
t:S*-+fi,undet(x)=rn(r.)estefuncliainversa
functiei
9iaroformagenerald:
exponentiale
functLon h(tl: Real) | Reel.r
Functia
logarilmicd proprieldli:
areurmetoarele
avem: ln(A. B)- ln(A)+tn(B);In(AB)=Bln(A).
pentruA,B>O,
Manualdeinformatici ntru clasaa Xl-a
9i din a
Din laptul cd funclialogaritmiciesle inversafunclieiexponenliale
douarelaliede mai sus,deducempentrun>0, y oarecare:
x y = e ri (" Y)=
e Yrn (x ).
inseamne
Aceasta nY _ pentruca luncliaputerenu exisld
cApuiemcalcula
4) (y*Ln(x)).
in Pascal:
> Funolla,,partelntreage"
f unc t lon In t(x : R e .l ) ! RaLt
partealntreagd
returneazd a lui:!.
returneazd
valoarealrunchiatd
aargumentului.
> Funclla,,partetractlonard"
lunctlon arac(*r Ral) ! Rsal,
x-rnt (x).
returnoazd
> Funcllade rotunllre
functton Round(x: Real) ! tJonsrlnt,
valoarsarotunjjlda luix.
relurneazd
> Functla ,,valoareabsolute"
functton a.bg(x) t
returneazalxl.
AnexaL I\,4emento
A.2. LimbajulC++
A.2.1.Tipuristandard
LimbajulC++,in varianlaBorlandC++,admitelipurilede maijos:
A) Tipuri intlegi
i.t:r
Numetlp
caracterferdsemn 8 de la 0 la 255
inlregfdrdsemn de la o la 55535
B) Tlpurl reale
l.
virguldmobild, 32
simpldprecizio I3.4 x1oi6, 3.4x1o3rl
virguld
mobila, 6a
dubldprecizie [1.7x10+ 03,1. zxl o' !03]
virgule
mobile,
dubleprecizie 80 f 3.{xlo-'er2, 1, 1 x1o*"321
lormatlung
A.2.2.Constante
1. Constanteintregl. Acestease clasificdastfel:
. zectnar.e(inbaza10).Exemplet23, 1239,55.
. ocral (in baza 8). O constantein baza 8 se decbra precedati de un
nesemnificaliv.
Exemplu:0123.Se relinenumdrulintreg 123(!).
. hxazecilnlle (in baza15).Acesteasuntprecedate de ox sau ox.
Exemplu:penlruox1A2adicd1A2r16) sau oxla2, adicd1A2(16).
N,lanual
de informaticdDentruclasaa Xl-a 299
Ex e m Pl e:
'e', ' 1', '" '.
3. Secvenleescape.O secvenld escapeincepeprincaracterul '\'(backslash).
Sb considerdm o constantd caracter'a'. Codulseueste97(10)=141(s)=61(!6).
Prinlr-osecvenl5escape,constantase introduceprincodulsduintr-unad n bazele
8 sau 15. De-exemplu, constanla 'a' poatefi scrise(echivalent)
astfeli'\141'
sau '\x51'. In cazulcendse folose9te codulscfisin baza 15, acestaesle
precedaide caracterul
'x'. Uneori,penhuanumitecaractere, se pot utilizaSisemne
speciale,a9acum fezultddin exempleleurmdtoare.
.\\.,'\134','\xsc'
. b a cksla sh:
. newlt net r \l t. r \1 2 r. | \x a r'
. apostrof: ! \ ' ! r ' \47 ' , t \x27 ;
'
. oel: r \ . ' i r \ 7 t,r \x7 r '
. cr: r\rt, i \1 5 t, r \a d t,
5, Constantereale
Ex e m p l6-:a5 .66 , 1,, .2, 0.3, -?.5E -12, a d ic e2, . 5 x 1 0 " 1 2 .
unde:
tlD - reprezintd (daceesteabsent,tipuleste in!);
tipulconstantei
nume- reprezinta numeleconstantei;
watoare - reprezintd
valoareaconstantei.
300 Anexal.lvlemenb
A,2.3.Operatori
A,2.3.1. Ptioritatea
operatorilor
0n ordinedescrescltoare)
Priviliurmetorul
tabel:
prioJitate opeJator asoclatlvllate
I OII- >::. ,r + d
2 l-+-+ +- -*(rpecdst ) sizeof ne\e delete d a s
3 .** >
4 *lEa r-r d
5 +_ s+.1
6 <<>> s+ d
7 <+ >>= r-+ d
8 : l=
9 & s-+ d
lo ^ s+d
ll I s4d
12 && s-+ d
13 ll
14 1: d + s
15 =* =l =+ =- =& =^ =l=< e > > = tt 1 s
16 , s+d
A.2.3,2.Operatoriaritmetlcl
in C++exlstSurmetorll
operatori
aritmetlcll
. - mlnus(unar,adicgactioneaza
aslpraunulsinguroperand);
. + plus(unar);
. + (blnar),
pentruadunar;
. - (blnao,penkusaidere;
. '(binar),aresemnificatla
delnmullirel
. / (binar),
pentrulmpe4irei
. c/.(blna0,rostullmpS4irii
tntregi.
Manualde informaticd
pentruclasaa Xl a
I Observafii
Operatorul"/"(impd4ife)aclioneazd
ln rnoddiferittn functiede operanzi:
a) daceambiisuntde tip tntreg,rezuttatul
estetntregSiare semnificalia
de
impe4ireintreagS.Cu loateacestea,fezultatulestecorect{dinDunctde
vederematematic)numaidacevalorilecarese impartsuntpozitive.
b) dacacel putinun operandestede unuldin tipurilereale,rezultalulesie
real(seefectuea?dimp64ireaobiSnuitd).
Operatorul'?'actioneazdn!mai asupraoperanzilof
de tip intreg.Rezultatul
oblinut este corect din punct de vedere matematicnumai dacd ambii
operanzisuntnumerenaturale.
in cazulin carese impartdoudvaloriintregi,se procedeazd
astfel:
a) se facelmpd4ireaintreagda celordoudvaloricaresuntconsiderate
ln
moout;
b) semnulcatuluise stabile$te
dupd regulasemnelor(+ cu + rezulat +.
+ cu -, rezullat-). etc.
A.2.3.3.Operatori
relationali
in c++ existdurmdtoriioperatorirelalionatil
. < (maimic);
. <- (maimicsauegal);
. > (maimare);
. >= (maimaresauegal).
Rezultatulunei operaliilogiceeste 1, in cazul in care inegalilateaeste
gi 0, in caz contrar.
respectatd
Acegtiasunt:
. == pentruegatitate;
. !c penkuinegalilate.
in cazul in care relalia indicatdde operatoreste respectatd,expresia
retufneazd
1, altlelretufneazdO.
302 Anexal. [,lemento
gi decrementare
de incrementare
A,2.3,5.Operatori
Acegti operatorisunt unari qi au rolul de a incremenla(aduni 1) sau
(scad1) continutuluneivariabile.
decremenla Operatoriisunt:
. ++ penlruinclementare;
. -- pentrudecremenlate.
sau postflxali (aplicalidupa
pot li profixati(aplicaliin fala operandului)
Operatorii
ooeranol.
t Daca operatoruleste prefixat,variabilaeste incrementata
(decrementatd)
inainteca valoarearetinutdde ea se intrein calcul.
t Daceoperatoruleste postfixat,variabilaeste incrementatd
(decrementatd)
duoi ce valoarearelinutdde ea intrdln calcul.
A.2.3.6.Operatorilogici
Existatreioperatori
logicii
. !- n e g a re
l o g i ce ;
. && - gilogic;
. ll - sautogic.
Operatorulnogre/oglceaclioneazd esteo valoare
astfelrdac6operandul
difedtd este0, altfelrezuliatul
de 0, rezultatul esle1.
$l iogic(binar)aclioneazd
Operatorul astfel:dacdambiioperanzi
suntdiferili
de0, rezullatuloste
1,altfolelesto
0.
Operatorulsau /oglc(binaoaclioneazd astfelrdace cel putin unul din
operanzieste
o valoarediferite
de 0, I, aitfelrezullatulesle
rezultatuleste 0.
A.2.3.7.Operatorilogicipe biti
Limbajul carepermltaccesulla bil.
c++ estedotalcu un set de operatori
Ace9tia
sunt:
. <<,>>oporatori dedeplasarol
. & 9ipebili;
. I saupebilil
. ^ sauexclusiv pebili;
. - negarepebili(operatoruna0.
0 I 0 1
1 1 I 0 1
in c++ atrlbuirea
eslooporalor,in plus,ln c++ avemmaimullioperatori
de
atribuire.
Operatorul"="sefoloselteintr-oexpresiedeforma:
v.xPrsar
Aici,v esteo variabila.
de executareesteurmStofuli
Principiul
. se evalueazbexpresia;
. variabileiv i se atribuievaloareaoblinutd (dacd este cazul, se
efectueazb conversiarespectivd).
Se pot efectuagiatribuirimultiplede formai
in acestcaz,principiuldeexecutare
esteurmdtorul:
. se evalueazdexpresia;
. valoareaoblinutdesteatribuitavariabileiw"(eventualconvertitd- dace
estecazul);
. continutulvafiabileiv" este atribuil variabilei
efectueazeconversianecesare):
w (eventual,
conlinutulvariabileiv1 esleatribuilvariabilei se efectueaze
conversianecesara).
se maipotutiliza9i operatorii:
Pentruatribuifi
,,&>,',".=,' sau "
lE".
O atribuirede lorma:v op xpresie,are acelagirezultatca
v=v op expJesle
estecd,in primulcaz,se genereazd
{diferenla un cod magindeficient).
C++ permiteprogramatorilor
si scrie mai multeexpresiisepare:eprin
virgule,
camaijosl
e :rp l ,e x p r,..., :tpb,
A.2.3.1
0. Operatorul
condilional
Se folosegteln expresiide genul:
|<D1?4rrr:<D3
PrincipiLl
de exocutareesteurmdtorul:
. se evalueazderrPt;
. daca aceastaproduceo valoarediferitSde 0, se evalueazaexp, 9i
eqb esteignoraE(nu se evalueaz6);
. altfel,se evalueazdexDi 9i exp, esteignofatd.
in ansamblu,expresiaestede tipul lui e*D1sau exps 9i pfoducevaloarea
sau exp30n luncliede ceacarese evalueazd).
de informaticepentru clasaa Xl-a
I\,4anual 305
A.2.3.12.Operatorulde conversieexpliciti
A.2.4.Instructiu
ni
1.In6tauclluneaexpresieestede foma:
e:lDrEl r.
Principlul
deexecutare
esteurmetoruli
. seevalueazS expresiai
. dacdvaloareaprodusede aceastaeste diferitat
de 0, se executa
inslrucliunell
. produse
dacdvaloarea este0 seexecuta
irsttuctturen
FoJma2,
tf (snDresls) lnstrucliune
de executareesteurmitorul:
Principiul
. se evalueazS
expresaai
. dace valoareaprodusdde aceastaeste diferitede o, se executd
inskucliunea
subordonata.
306 Anexa I Mamento
4. Instructiunea"swirch" areformagenerald:
switch (expr6sie)
{ caE expr:secventeinstruc,tiunii bteakt
case exp?:secvenle,rstrucluni2: bteakt
5" lnstrucllunea"whtl"
Aceastd
instrucliune
feproduce
shuclura
delip cat tinp ... excuta.
Fofmageneraleestei
sblLe lexpresl4 instrucliune
Principiul
de executareesteurmltorull
. paaul1: se evalueazd
expresia:
. pa6ul 2r dacd valoareaprodusade aceastaeste diferitede 0, se
execut; instrucliunea apoise revinela pasul 1, alflelse
subordonatd,
trecela'nstrucliJnea
ufmdtoare.
Manualde informaticioentruclasaa xl-a 307
instructiune
wht1(expreste);
Principiul
deexecutare
esteurmdtoflr,.
. paaull: seexecutd instrucliunea
subordonatS;
. pasul2: se evalueaz5 in cazulln carevaloarea
expresia. prcdusah
ovaluaro do se termina,altfelse trec
esle 0, execuliainstrucliunii
iapasul1.
"fo!'are formagenerald:
7. Instauctiunsa
ror (expreefqnlhrh.; expreslehn. t.) lnstrucllune
expresle!.d;
""t
Dup,cumseobservS,inkeparanteze
seg5sesctreiexpresii:
- expreelehm,nao se foloseltede reguH,pentruinitializarea variabileide
ciclare.Estede remarcat (curol special)
faptulcd in cadrulacesteiexpresii
esteposibil chiarsddeclarimvariabila (cuvaloare
deciclare initialA).
- oxpJeslsbdse folosegtepentrua testa dace se executeinstruqiunea
subordonatA - dac5expresiaproducela evaluare o valoarediferitdde 0,
instrucliuneasubordonatdfor seexecutd.
- .|.9r.r jll!ord*.{ sefolosestepentruincrmentarea variabilei
declclare.
Prlnciplul
deexecutarei
. pasul1i se evalueaz5 expreslqn{h aro(uncaz specialesteacelaln
careaceasta contine qideclaratia
variabilei
deciclare);
. pasul2r se evalueaza expneslaror.in cazulin careaceaslaproduce o
valoare dg 0, seexecute
diferitd instru4iunea subordonate!or; apoise
trecela pagul3, altfelse trecela instructiuneaurmStoare(setermind
executiainstructiunii
fo!).
. paaul3: seevalueazt expresiadeincrementare 9iserevinela paaul2.
A.2.5.Cateva
funcliiutile
Pentrua le utiliza,includelifislerulnath.h: *r.acluale <nath.h>.
t FuncliaabE are forma genefala:lnr abe(trr x)r Flolulei ste do a
inloarceh | (modululluilr).
t Funcliafabs are formageneralddou51. flbs(doubr x) r are acelagi
rolcu !5a, numaicdintoarcevaloareaunuinumdrreal(chiardoubr6).
308 Anexal. Memento
t Funclia labs are forma generald lors int labE(lonE int s)r 9i
acelagirol cu abs, numai ce inbarce valoareaunui intreg lung.
t Funclia acoE arc forma generalAi douJjLe acog ( dou.bl. x); 9i
calculeazavaloareafuncliei arcco(r): [-l,l], t0,tl.
Comunicatia dispozitive
intrediversele electronicedinzilelenoastre
reprezinta
poateceamairdspendita aplicalie a teorieigraturilor.
practic5 Spreexemplu, daoe
sau la Inlernet9i dacAconsiderdm
ne relerimla retelelede calculatoare fiecare
calculator
ca frindun nod,atuncivomavea- un grafexhemde complex9i icarte
dinpunctde vedereal struclurii.
diversificat In continuare,vomprezenta o schemd
deprincipiu
caredescrie o reteadecalculatoare,legatdlalnternetl
Router
/
/\\
\ \ l
sg g
-,ffib Subreteaua
l 2
Subreteaua
FlguraA.1.Exemplude elea de elculaloa l.galab Intehet
i practiceale qrafurilor
t, Observatii
de
Structuraanterioardestede tip arbore Pe fiecarenivelinsd' protocoalele
comunicatieefectueazaoperalii specificepentru asigurarealransmlslel
terminal(calculato0'
;;i.edio;ale inlre liecaredispoziliv
pe
Router-uleste un dispozilivelectroniccaredecidecalea(drumuloplim)
carevclrirrin.e irbl-ralle de la un carcJlalor o'n subteleaua l ceke un
ul decidela randul sau n
altul d,n Subreteaua2 La nlve' loca' Switch
trn"ti" a" uJr"iu UIC (MediaAccessControl, unic
identilicalor pe glob)a
ii
il"aiii pla"i o" ,"t"" c;rui destinatar este dedicatbloculde date Pentru
f,ia""f, la ieteaua Internet,Router-ulale o legeturdcu un ISP
"(lnternet
"" ServiceProvider).
Protocoalede loutale
dRouterl
LI
4Router2 Router3
FiguraA2. Exmplu
de Glea
qi situatiileeconomice
Proiectele determinalede punereain
practicda acestora,presupunefectuareaunor activitlti interco-
nectale,carepotfi modelaleprinintermediul
gralurilor.
Managmentulinformatc al proieclelorpermitegesliunea,coordonarea,
planificarea
Si controlulresurselorastfelinc6t obiectivelepropusesd se aUngein
modoptim9i la timp.
312 Anexa2 - Aplicatii practiceale grafurilor
do gralde activiteli
FiguraA.3.Exemplu
Manualde informaticaentruclasaa Xl-a
H,rC
-t
\
cH-cH3
H" C-CH
-r I
tl
H 2 C-CH 2
F guraA.4.Exempudegralmolecular
asociat
anterior,se potasociaurmdtoarele
Penlrugrafulneorientalprezentat trei makicel
llanualdeinformaticA <lasaa xl a
lucru oblqnuitin
l. Ouservamfaptul ce acest graf asoc;atconline cicluri
jo ;;Lr"trrii" moleculare Dru-murile. maximo sunl totus' delerminate cu
se evitd ciclarea prin
algoritmului
otecizarcacd ln programelespecializate
utilizareauneicondiliide stop
Duoe ce ad fost determlnaleaceste matrice mai mLlltecaracteristicl
toporo-giii i.pon"nt" ;ot fi obtnutedrrectPrezentamdoardouddintreele
maxime:
- lndicelede drum (Delou4- se oblinedin matriceadrunurilor
,=r f f ror,,,
Dofour'
al matricei
unde(A),r eslounelement
penifu
HarryWeiner
in anul1947dechimistul
- lndlceleWelner- introdus
moleculard:
a sludlastructura
w(c)=;.t>(d)/i,
- ,= t /= t
un olemenlal malriceidrumurilorminime'
unde (l),, reprezintd
nt in
Exlstamai mult de 4OOde astfelde Indlcl lopologlcl 9i su "folosili. anallza
intre molecule,
strr'lcturale exlrem de utile in
o"t"rrfr""r*
molecularS. "itif.ritatilor
CodulASCIIextins
.2lic 2:]]g
29n 500 2 21.1O
u06 9l r ' 2:r56
: lt n 52 2l( -
tl2u 5 3 () 95 2 2710
3:la 5 ,1 U 2t1j
:t1a 55a 16 91 2 i
561: 2t9
16 G 51f 78 2)0
l7 ii
t 8a
58
59n
200 E
2t t G
221
222
.24t>
I
40i
@6
a2
241 I
4 ti 626
63
'i 85
204
206
225tl
226f
246+
I
65N 86 228t
208 ! 250-
61 88r 2@ + 230u 251
476 68, L 210 2.rI r
43ii 90r 2t l
o Mamuafte
geolare MEGllS,
aprohate depr@h[@mn@
Gul@gerfl
GDS:
ealdede[ab@raf]@r, hrtltp:/Ammry,ls4mfomnaLro
. Bflhlf,oteea uuTI!]D0R
detmfonmnatEed
Dflgltald SOR[N'':
hffip//unmro.Imfohlb-ro
o [ahoratorul & T[G:
VlrtualdelmformatleA
hffipllnah.Imfoblb.ro
DIGITALE
COMPETENTE
rr 0r081tff0rrrl
$tl
TEHNOLOGIA INFONMATIEI INFON[,!ATIEI
TETINOLOGIA c!ru Gtflll8
st A c0tvluNlcATllL0B $I A COMUNICATIILOB
::qw:\. ..
jiltlililtlttiluilttililil