Programare C - indrumar laborator

55
7/23/2019 Programare C - indrumar laborator http://slidepdf.com/reader/full/programare-c-indrumar-laborator 1/55 PROGRAMAREA CALCULATOARELOR ŞI LIMBAJE DE PROGRAMARE ÎNDRUMAR DE LABORATOR Liviu Şerbănescu UNIVERSITATEA HYPERION

Transcript of Programare C - indrumar laborator

Page 1: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 1/55

PROGRAMAREA CALCULATOARELORŞI LIMBAJE DE PROGRAMARE

ÎNDRUMAR DE LABORATOR 

Liviu ŞerbănescuUNIVERSITATEA HYPERION

Page 2: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 2/55

LISTA LUCRĂRILOR 

1. Iniţiere într-un mediu de programare. Structura unui program C

2. Implementarea tructurii ec!enţiale. Tipuri de !aria"ile

#. Operatori$

%. Operatori la ni!el de "it. Contrucţia m&'tilor.

( )uncţii. Aria de !i*i"ilitate a !aria"ilelor 

+.Tran,erul parametrilor în cadrul ,uncţiilor

. Intrucţiuni de deci*ie

. Intrucţiuni de ciclare$

/. Ta"louri. 0ointeri. Alocarea dinamic&.

1. Aritmetica pointerilor$

11. Implementare lite

12. )uncţii recuri!e - Ar"ori.

1#. )uncţi C din "i"lioteci.

1%. Tete.

Page 3: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 3/55

LABORATORUL NR.1

INIŢIERE ÎNTR-UN MEDIU DE PROGRAMARE. STRUCTURA UNUI PROGRAM C

 Scop:

1. Familiarizarea cu mediul integrat CodeLite.

2. Înţelegerea structurii unui rogram scris !n lim"a#ul C.

$. Înţelegerea rolului unui comilator.

%. Înţelegerea rolului lin&'edit(rii.

Consideraţii teoretice:

)ediul integrat ' Oen*ource ' CodeLite

Un paţiu de lucru workspac3 detine un numar de proiecte4 de e5emplu4 acetea pot a!ea leg&tur&unele cualtele au nu.. Crearea unui paţiu de lucru e reali*ea*& prin electarea 6 67or8pace 9Create ne: 7or8pace...66Un proiect pro!c"3 poate a!ea !a re*ultat în urma compil&rii 'i apoi a lin8-edit&rii un e5ecuta"il4 o

 "i"liotec& dinamic& ;.DLL34 o "i"liotec& tatic&;.LIB34 etc.0roiectul în ine conţine toate in,ormaţiile neceare pentru a produce o aplicaţie de un anumit tipaplicaţie conol&4 aplicaţie gra,ic& ce utili*ea*& un anumit et de controale !i*uale4 aplicaţie cu

o"iecte gra,ice4 etc3.)i'ierul ce conţine in,ormaţii depre paţiul de lucru e nume'te <workspace-name>.workspac)i'ierul ce conţine in,ormaţii depre proiect ete <project-name>. pr!

1. Organizarea programelor

La baza oricărui program (software) stă un algoritm (metodă de rezolvare). Acesta preia date dinmemoria dinamică a calculatorului (RAM) sau de pe suporturi de stocare şi le prelucrează.Rezulutatul prelucrării (a execuiei algoritmilor) este stocat !n memoria dinamică şi apoi poate fiafişat" memorat pe suporturi de stocare a datelor" sau transmis către alte aplicaii software.

#odul sursă se scrie cu a$utorul unui editor de texte" acest editor poate fi unul simplu gen notepad"notepad%%" getit sau unul specializat" !nglobat !ntr&un mediu integrat de dezvoltare pentrusoftware&uri(ex' ubo#%%" orland#%%" #%%uilder" *isual#%%" +,mantec#%%" -ev#%%" #odeLite"etean" /clipse#%%" gt%%" gt0%%" etc.).

Etapele pentru ob'inerea unui fișier executabil

Cod sursă( *.c,*.cpp)

  Cod obiect(*.obj, *.o)

  Executabil / bibliotecă(*.exe / *.dll, *.lib, ...)

Biblioteci statice(*.lib)

CompilatorEditor de text

Compilare

Editare

Programator

Linkeditare Link-editor

Page 4: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 4/55

#ompilatorul transformă codul sursă !n cod obiect ( textul literar !l transformă !n cod maşină 1reprezentat de comenzi la nivel de microprocesor).

 2n cadrul codului sursă se pot utiliza rutine(proceduri&funcii) definite !n cadrul unor biblioteci statice(codul utilizat al bibliotecilor statice este !ncorporat !n executabil).

#odul bibliotecilor dinamice (3.dll 1 d,namic lin0 librar,) este doar apelat" el nefiind inclus !n fisierul

executabil (3.exe) sau !n biblioteca rezultată.Structura unui program C/C++

4n program #5#%% cuprinde următoarele elemente pricipale'

 ✗ operatori (aritmetici" logici" etc)

 ✗ instruciuni (de decizie" de parcurgere a unei bucle" etc)

 ✗ funcii (apelate din cadrul bibliotecilor sau definite de utilizator)

 ✗ variabile şi constante

 ✗ funcia main()

extul unui program poate fi scris !ntr&un fişier sau !n mai multe fişiere. 4n program va aveao singură funcie main() indiferent dacă este scris !ntr&un singur fisier sau !n mai multe fişiere.6rogramul compilat şi lin0editat va incepe !ntodeauna prin lansarea !n execuie a instruciunilor şifunciilor din cadrul lui main(). 6rin ieşirea din funcia main() se !nc7eie şi execuia programului.

 Desfăşurarea lucrării:

1. Lansarea mediului CodeLite+ ,i studierea rincialelor comonente ale inter-eţei

acestuia

2. Crearea unor saţii de lucru$. Crearea unui roiect entru alicaţie consol(

%. Comilarea unui eemlu. )odi-icarea set(rilor imlicite de comilare.

/. 0ecutarea searat( aLin&'edit(rii entru o alicaţie. )odi-icarrea set(rilor

imlicite entru lin&'editare

Page 5: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 5/55

LABORATORUL NR.2

 IMPLEMENTAREA STRUCTURII SEC#ENŢIALE.TIPURI DE #ARIABILE

 Scop:

1. Familiarizarea cu -uncţiile de intrare'ie,ire entru consol(.

2. Înţelegerea noţiunii de aria"il(

$. Înţelegerea di-erenţelor de rerezentare ,i de lucru date de tiurile de aria"ile

Consideraţii teoretice:

Variabile

-atele din cadrul unui program sunt stocate !n memoria dinamică (RAM)" ele vor fi stersefie la un anumit moment !n timpul execuiei programului" fie la sf8rşitul acestuia. Acestea pot fi datece urmează a se modifica !n cadrul programului prin realizarea de operaii asupra acestora 1denumite VARIABILE şi date care răm8n constante !n urma execuiei programului 1 denumiteCONSTANTE.

6entru ca aceste date să poată fi accesate este necesară declararea acestora !n cadrulprogramului. 9 variabilă va avea o denumire pe care o va pune utilizatorul !n momentul declarăriiacestora.

9peraiile din cadrul unui program se realizează asupra variabilelor. :iecare variabilă va avea oanumită structură !n ceea ce priveste reprezentarea sa !n memorie (tipul de variabilă)

ipurile de variabile 2n funcie de reprezentarea !n cadrul memoriei variabilele pot fi de mai multe tipuri. Acestea

trebuie declarate !nainte de compilarea programului astfel !nc8t compilatorul să le rezerve sau numemorie !n momentul !ncărcării executabilului !n memorie.

6rincipalele tipuri de variabile sunt prezentate !n anexa ;. 2n momentul compilăriiprogramului" este cunoscut tipul variabilelor. 2n acest mod programul <=tie> c8t ocupă !n memoriefiecare variabilă =i cum să <utilizeze> variabila respectivă.

IMPLEMENTAREA STRUCTURII SEC#ENŢIALE

Structura ec!enţial& ete o în'iruire de intrucţiuni4 plaate una dup& alta4 în ordinea e5ecuţieiacetora.

Sc<ema logic&=

0eudocodul=

Implementarea tructurii ec!enţiale e reali*ea*& cu a>utorul intrucţiunilor=

●  Instrucţiunea vidă Sinta5a= $Intrucţiunea !id& nu are nici un e,ect. Se utili*ea*& în contrucţii în care e cere pre*enţa unei

I 1 I 2 I n

instr1; instr2;........; instr n;instr1; instr2;........; instr n;

Page 6: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 6/55

intrucţiuni4 dar nu e e5ecut& nimic.●  Instrucţiunea expresie

Sinta5a= e5preie$au= apel?,uncţie$@5=  sqrt() ete o ,uncţie de,init& în "i"lioteca matematic&

●  Instrucţiunea compusă (instrucţiunea bloc)

Sinta5a=

ntr-un "loc de intrucţiuni e pot declara !aria"ile care pot ,i acceate doar în corpul "locului.Intrucţiunea "loc ete utili*at& în locurile în care ete necear& pre*enţa unei ingure intrucţiuni4 în&

 proceul de calcul implic& e5ecutarea mai multor intrucţiuni.

 Principalele tipuri de variabile

Tip !aria"il& Repre*entare încadrul memorieinum&r de "iţi3

Balori poi"ile ecriere

c<ar -2D E2-1 caracter utili*at 'i pentru codurile ASCII -123

unigned c<ar D E21+-1 caracter 'i utili*at pentru codurile ASCII -2((3

int F1+F#2F+% -2#1D E2#1-1 întreg cu emn dependent de item

F1+F#2F+% "iţi 3unigned int F1+F#2F+% D E2#2-1 întreg ,&r& emn dependent de item

F1+F#2F+% "iţi 3

<ort 1+ -21(D E21(-1 întreg curt cu emn

unigned <ort 1+ D E21+-1 întreg curt ,&r& emn

long #2 -21(D E21(-1 întreg lung cu emn

unigned long #2 D E21+-1 întreg lung ,&r& emn

,loat #2 cca. 1%&'  D 1&'4 + ci,reemni,icati!e

 Gum&r real repre*entat pe #2 de "iţi

dou"le +% cca. 1%&('

  D 1&('

4 1( ci,reemni,icati!e  Gum&r real repre*entat pe +% de "iţi cel maide utili*at3

long dou"le Gum&r real repre*entat pe de "iţi

 "ool true F ,ale "oolean

!oid F1+F#2F+% Gimic F !id

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

int !"#b!$#c;double %;c=+b;%=sqrt&b';

( %ec)r*ii vribi)e;  instr1; instr2;........; instr n;+

( %ec)r*ii vribi)e;  instr1; instr2;........; instr n;+

Page 7: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 7/55

LABORATORUL NR.3

OPERATORI

 Scop:

1. Înţegerea ,i -amilarizarea cu oeratorii din C

2. Utilizarea oeratorilor din lim"a#ul C

Consideraţii teoretice:

O,ert-ri unriSIMBOLUL FORMA Operaţia realizată Exemplu

ne/re )ui "0 0 v)-re )ui "

EE

00 P-stincreentre,rei v)-re# ,-i creste cu 1

!"00;a are val. 3

00Preincreentre

i 3nt4i cre5te cu 1# ,-i ,reiv)-re

!00";a are val. 4

P-st%ecreentre,rei v)-re# ,-i sc%e cu 1

!";a are val. 3

Pre%ecreentre

i 3nt4i sc%e cu 1# ,-i ,reiv)-re

!";a are val. 2

O,ert-ri binri riteticiSIMBOLUL FORMA Operaţia realizată Exemplu

0 0b %unt cu b ".607." b b scă8ut %in ".17.9: :b 3nu*it cu b 1.2:$.1 b 3,ăr*it ) b 1.2$.1< <b -%u)- b

 &restu) 3,ăr*irii'7<$

O,ert-ri %e tribuire riteticiSIMBOLUL FORMA Operaţia realizată

! !b ,rei v)-re )ui b

0! 0!b !&=-stu) c-n*inut'0b! !b !b! !b !b<! <!b !<b

O,ert-ri re)*i-n)i & 9 este =)se# %i=erit %e 9 este %evărt#e>9.9999996 este %evărt re v)-re %e %evăr true'

SIMBOLUL FORMA Operaţia realizată? ?b %că ?b# tunci true# )t=e) false

?! ?!b %c ?!b tunci true# )t=e) false

@ @b %c @b tunci true# )t=e) false

@! @!b %c @!b tunci true# )t=e) false!! !!b %că i%entic cu b# tunci true# )t=e) false

! !b %că %i=eră %e b# tunci true# )t=e) false

Page 8: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 8/55

O,ert-rii )-/ici

SIMBOLUL FORMA OperaţiaBB BBb ŞIANCDD DDb SAUOR NEATNOT

 &T F true# G =)se'

x >BB >DD >G G G G TG T G T TT G G T GT T T T G

O,ert-ru) cstSIMBOLUL FORMA Operaţia realizată&ti,' &ti,' este c-nvertit ) ti,u) ti,

O,ert-ru) si8e-= &ti,Fse re=er ) ti, %e %tă#e>int#%-ub)e#structuri#c)se'

SIMBOLUL FORMA Operaţia realizată

i*eo, si8e-=&ti,' si8e-=&ti,' %ă nuăru) %e -cte*i i ti,u)uisi8e-=&' si8e-=&' %ă nuăru) %e -cte*i i vribi)ei

O,ert-ru) c-n%i*i-n)SIMBOLUL FORMA Operaţia realizată

bc Ccă J9 &true'# v =i ,re)ut b# )t=e) c

O,ert-rii ,riri &v-r =i uti)i8*i 3n )b-rt-re)e urăt-re'O!ERA"ORUL SIMBOLUL FORMA Operaţia realizată

adresavariabilei

B B %res vribi)ei

coninutul unuipointer 

: : =iin% ,-inter &%resă'# : estec-n*inutu) )ui

indexare K K2 e)eentu) ) trei)e %in vect-rpunct . >. v)-re ebru)ui ) structurii >

săgeată spredreapta

? ,?v)-re ebru)ui ) unei structuri,unctte ,rin intere%iu) ,-interu)ui ,

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

Page 9: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 9/55

LABORATORUL NR.4

OPERATORI LA NI#EL DE BIT. CONSTRUCŢIA M)ŞTILOR.

 Scop:

1. Înţegerea ,i -amilarizarea cu oeratorilor la niel de "it+ din lim"a#ul C

2. Utilizarea oeratorilor din lim"a#ul C.

$. Construcţia ,i alicarea m(,tilor "inare

Consideraţii teoretice:

O,ert-rii %e ni,u)re ) nive) %e bit &binri0unri'SIMBOLUL FORMA Operaţia realizată

?? ??b este %e,)st s,re %re,t cu b biti &se c-,)ete8ărestu) cu 9'

@@ @@b este %e,)st s,re st4n/ cu b bitiB Bb 5i b &bit cu bit'D Db su b &bit cu bit'M M ne/re &bit cu bit' b su e>c)usiv &bit cu bit'

O,ert-rii %e tribuire 5i ni,u)re ) nive) %e bit

SIMBOLUL FORMA Operaţia realizată??! ??!b !&=-st v)-re'??b@@! @@!b !@@bB! B!b !BbD! D!b !Db! !b !b

TAEL CE ACEVR &9 =)se# J9 true' &,resu,une > 5i %iensiune un bit'

x >B >D > M>9 9 9 9 9 19 1 9 1 1 11 9 9 1 1 9

1 1 1 1 9 9

Ex: In#er$area a dou ă #alori 

int a=%&b='(

a=a)b(

 b=a)b(

a=a)b(

 Desfăşurarea lucrării:

1. *e ruleaz( eemlul din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

Page 10: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 10/55

LABORATORUL NR.5

*UNCŢII. ARIA DE #I+IBILITATE A #ARIABILELOR 

 Scop:

1. Înţelegerea noţiunii de -uncţie !n lim"a#ul C. Aelul ,i rototiul -uncţiilor.

2. Înţegerea noţiunii de arametru entru o -uncţie.

$. Utilizarea cuntului c3eie 4return5.

%. Utilizarea aria"ilelor locale

/. Utilizarea ara"ilelor glo"ale

6. Utilizarea aria"ilelor de ti static

7.Utilizarea aria"ilelor rin cuntul c3eie etern

8.Utilizarea oeratorului rezoluţie 4995 !n cadrul acces(rii aria"ilelor

:. Controlul domeniului de izi"ilitate entru aria"ile.

Consideraţii teoretice:

*UNCŢII

  Orice program CFCEE ete tructurat pe ,uncţii4 at,el nu !om a!ea intrucţiuni decHt în cadrul,uncţiilor. Orice program CFCEE începe prin e5ecuţia ,uncţiei main3. Un program !a a!ea o ingur& ,uncţiemain34 indi,erent de num&rul de ,i'iere în care ete cri codul. Ie'irea din ,uncţia main3 ec<i!alea*& cuie'irea din program.

STRUCTURA UG@I )UGCIIin punct de !edere conceptual4  funcţia  repre*int& o aplicaţie definită pe o mulţime D (D=mulţimea,domeniul de definiţie), cu valori în mulţimea (=mulţimea de valori, codomeniul), care îndepline!tecondiţia că oricărui element din D îi corespunde un unic element din "

)uncţiile comunic& prin lita de argumente. @le primec ca parametri argumente3 datele deintrare4 e,ectuea*& prelucr&rile decrie în corpul ,uncţiei aupra acetora 'i pot returna re*ultatulîntr-o ingur& !aria"il& care poate ,i 'i de tip pointer. n ca*ul în care ,uncţia tre"uie & întoarc& mai

multe !alori e !a utili*a tran,erul prin re,erinţ&. @5ecuţia programului începe cu ,uncţia principal&4 numit& main3. )uncţiile pot ,i decrie în cadrul aceluia'i ,i'ier4 au în ,i'iere di,erite. O,uncţie nu poate ,i part& în mai multe ,i'iere.O ,uncţie ete ,ormata din antet i corp=

 

au

0rima linie repre*int& antetul  ,uncţiei4 în care e indic&= tipul ,uncţiei4 numele aceteia 'i lita

ntetQ=unc*ie(c-r,u)Q=unc*iei+

ntetQ=unc*ie(c-r,u)Q=unc*iei+

ti,Qv)Qreturn nueQ=unc&)istQ%ec)r*ii)-rQ,rQ=-r)i'(%ec)r*iiQvribi)eQ)-c)einstruc*iunireturn v)-re,-inter

+

ti,Qv)Qreturn nueQ=unc&)istQ%ec)r*ii)-rQ,rQ=-r)i'(%ec)r*iiQvribi)eQ)-c)einstruc*iunireturn v)-re,-inter

+

Page 11: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 11/55

declaraţiilor parametrilor ,ormali. ac& ,uncţia nu întoarce nici o !aloare4 în locul tip#vali#return epeci,ic& ,o. ac& tip#val#return lipe'te4 e conider&4 implicit4 c& aceta ete /". $ume#funcţie ete unidenti,icator. %ista#declaraţiilor#param#formali încadrat& între parante*e rotunde3 cont& într-o lit& enumerare3 careconţine tipul 'i identi,icatorul ,iec&rui parametru de intrare4 dep&rţite prin !irgul&. Tipul unui parametru

 poate ,i oricare4 c<iar 'i tipul pointer. ac& lita parametrilor ,ormali ete !id&4 în antet4 dup& numele ,uncţiei4

apar doar parante*ele ( )4 au (void).Corpul funcţiei ete un "loc4 care implementea*& algoritmul de calcul ,oloit de c&tre ,uncţie. n corpul,uncţiei apar în orice ordine3 declaraţii pentru !aria"ilele locale 'i intrucţiuni. ac& ,uncţia întoarce o!aloare4 e ,oloe'te intrucţiunea return valoare. La e5ecuţie4 la întHlnirea acetei intrucţiuni4 e re!ine în,uncţia apelant&. ntr-o ,uncţie putem a!ea mai multe intrucţiuni return4 doar una din acetea !a putea ,ie5ecutat&.n lim"a>ul CFCEE e utili*ea*& declaraţii şi definiţii de ,uncţii.

 Declaraţia  conţine antetul ,uncţiei 'i in,ormea*& compilatorul aupra tipului4 numelui ,uncţiei 'i a litei parametrilor ,ormali în care e poate indica doar tipul parametrilor ,ormali4 nu 'i numele acetora3.eclaraţiile de ,uncţii e numec prototipuri 4 'i unt contituite din antetul ,uncţiei4 din care pot lipi numele

 parametrilor ,ormali. Definiţia  conţine antetul ,uncţiei 'i corpul aceteia. Gu ete admi& de,inirea unei ,uncţii în corpul altei

,uncţii.

 AP!"! #I P$%&%&IP"! '"CII!%$

O ,uncţie poate ,i apelată printr-o contrucţie urmat& de punct 'i !irgul&4 numit& instrucţiune de apel 4 de,orma=

nueQ=unc*ie *)istQ,retri)-rQe=ectivi(

6arametrii efectivi trebuie să corespundă cu cei formali ca ordine şi tip. La apel" se atribuieparametrilor formali valorile parametrilor efectivi" după care se execută instruciunile din corpulfunciei. La revenirea din funcie" controlul este redat funciei apelante" şi execuia continuă cuinstruciunea următoare instruciunii de apel" din funcia apelantă.

 D&'$*% D +%./. /% +/0/%%&0

Baria"ilele pot ,i glo"ale 3declarate la începutul ,i'ierului4 în a,ara ,uncţiilor au locale J declarate încadrul ,uncţiilor. O !aria"il& glo"al& poate ,i !a*ut& în orice ,uncţie din ,i'ierul repecti!.

Baria"ilele declarate în interiorul unei ,uncţii4 cHt 'i parametrii ,ormali ai aceteia nu pot ,i acceaţidecHt în interiorul aceteia. Acete !aria"ile unt numite !aria"ile locale 'i nu pot ,i acceate din alte ,uncţii.omeniul de !i*i"ilitate a unei !aria"ile ete porţiunea de cod la a c&rei e5ecuţie !aria"ila repecti!& eteaccei"il&. eci4 domeniul de !i*i"ilitate a unei !aria"ile locale ete ,uncţia în care ea a ,ot de,init&.

ac& în interiorul unei ,uncţii e5it& intrucţiuni compue "locuri3 care conţin declaraţii de !aria"ile4acete !aria"ile nu unt !i*i"ile în a,ara "locului.

ac& înainte de apelul ,uncţiilor ,oloite4 acetea au ,ot de,inite antetEcorp3 acetea nu maitre"uiec declarate la începutul ,i'ierului au in ,i'ierele de tip K <eader . 0rototipurile ,uncţiilor din

 "i"lioteci prede,inite3 e g&ec în <eadere. Utili*area unei at,el de ,uncţii impune doar includerea în program a <eaderului aociat4 cu a>utorul directi!ei preproceor *include.0rogramatorul î'i poate crea propriile <eadere4 care & conţin& declaraţii de ,uncţii4 tipuri glo"ale4macrode,iniţii4 etc. omeniul de !ala"ilitate !i*i"ilitate3 a unei !aria"ile au a unei ,uncţii ete=

➔ ,i'ierul ur&4 dac& declaraţia ,uncţiei apare în a,ara oric&rei ,uncţii la ni!el glo"al3$➔ ,uncţia au "locul în care apare declaraţia.

O !aria"il& glo"al& declarat& într-un ,i'ier !a putea ,i !a*ut& în alt ,i'ier din cadrul aceluia'i program numaidac& ete redeclarat& tot la începutul noului ,i'ier dar a!Hnd cu!-ntul c<eie 0"r/ în ,aţ& .

@5 =

Page 12: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 12/55

 

0rin declararea cu s"a"c !aria"ila glo"al& e !ede doar in ,iierul repecti! 'i nu poatre ,i declarat& prin 0"r/ in alt ,i'ier. Baloarea !aria"ilei de tip tatic declarat& local la ni!elul unei ,uncţii î'i !a menţine!aloarea c<iar 'i dup& ie'irea din ,uncţia repecti!&4 la o nou& intrare în ,uncţie ea !a a!ea ultima !aloare.

n ca*ul !aria"ilelor locale4 compilatorul aloc& memorie în momentul e5ecuţiei "locului au ,uncţieiîn care acetea unt de,inite. CHnd e5ecuţia ,uncţiei au "locului e termin&4 e eli"erea*& memoria pentruacetea 'i !alorile pentru !aria"ilele locale e pierd. Atenţie+ ac& !aria"ila ete de tip pointer 'i a ,ot alocat& dinamic în interiorul ,uncţiei ea !a tre"uidealocat& cu ,unc'ia corepun*&toare alt,el ea !a ocupa în continuare paţiul din memorie c<iar 'i dup&ie'irea din ,uncţie.&impul de viaţă a unei variabile locale ete durata de e5ecuţie a "locului au a ,uncţiei3 în care aceata etede,init&. &impul de viaţă a unei variabile ,lobale ete durata de e5ecuţie a programului.

 -oduri de alocare a memoriei:

➔ Se aloc& s"a"c memorie pentru !aria"ilele glo"ale 'i !aria"ilele locale declarate în mode5plicit tatic.

➔ Se aloc& memorie pe s",1 pentru !aria"ilele locale.➔ Se aloca /a2c memorie în mod e5plicit4 cu a>utorul ,uncţiilor de alocare dinamica

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

3345r "2p6.7int =7&int';

3345r "2p8.cpp,in-lude .temp/012$tati- int a3(int 43&4/(int =2&int';

int =1&int # int b'(int #n;

............+#oid  in&'(int >##81#82;....81!=1&"#$';82!=2&1'=7&1';+

int =2&int %'( return %00;+

3345r "2p6.cppextern int 2;int ="&int # int b'(int #n;............+int =$&#oid '

(int >##%;........ >!="&2#'; !=7&2';........+int =7&int %'(int ; !55%%;  return ;+,rin % se ,rei v). %in=uncti su,eri-r &=$'

Page 13: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 13/55

LABORATORUL NR.6

TRANS*ERUL PARAMETRILOR ÎN CADRUL *UNCŢIILOR

 Scop:

1. Înţelegerea tran-erului rametrilor rin aloare

2. Înţelegerea tran-erului rametrilor rin adres(

$. Înţelegerea tran-erului rametrilor rin re-erinţ(

Consideraţii teoretice:

TRANS*ERUL PARAMETRILOR UNEI *UNCŢII

)uncţiile comunic& între ele prin argumente parametrii3.@5it& urm&toarele moduri de tran,er tranmitere3 a parametrilor c&tre ,uncţiile apelate=

➔ Tran,er prin !aloare$➔ Tran,er prin pointeri$➔ Tran,er prin re,erinţ&.

 .0/$10*% 2/0/'.0%&0 20$ +/%&/0 e la programul apelant c&tre ,uncţia apelat&4 prin apel4 e tranmit !alorile partametrilor e,ecti!i4

reali. Acete !alori !or ,i atri"uite4 la apel4 parametrilor ,uncţiei. eci procedeul de tranmitere a parametrilor prin !aloare cont& în încărcarea valorii parametrilor efectivi în 3ona de memorie a parametrilor funcţiei (în stivă). La apelul unei ,uncţii4 parametrii reali tre"uie & corepund& ca ordine 'i tip cu cei din declaraţie.

O modi,icare a !alorii parametrului de intrare4 în interiorul ,uncţiei printr-o operaţie din corpul ,uncţiei34 nu!a modi,ica !aloarea parametrului din a,ara ,uncţiei 4 ci doar a copiei locale a parametrului din cadrul ti!ei.@5

=

.0/$410*% 2/0/'.0%&0 20$ 2&$.0 0arametrii tranmi'i unei ,uncţii pot ,i pointeri !aria"ile care conţin adree3. n acete ca*uri4

 parametrii ,uncţiei apelate !or ,i iniţiali*aţi cu !alorile parametrilor e,ecti!i4 deci cu !alorile unor adree.At,el4 funcţia apelată poate modifica conţinutul locaţiilor spre care pointea3ă ar5umentele (pointerii).@5=

33"ra/s4r pr/ ,a9oarint =1&int # int b'(00;b!7; return 0b;+#oid  in&'(int >##8;c-ut@@>!;cin??>;e>"c-ut@@!;cin??;e>$8!=1&>#';c-ut@@8!@@8;e>8!6c-ut@@nupa ieire din ,1 ;c-ut@@>!@@>@@;!@@;/etc&';e>>!"#!$+

Page 14: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 14/55

.0/$410*% 2/0/'.0%&0 20$ 010$67 @te aem&n&toare cu tran,erul prin pointeri cu deoe"ire c& parametrului ,unţiei i e poate aocia

atri"ui3 c<iar o"iectul!aloarea !aria"ilei3 parametrului e,ecti!. At,el4 parametrul e,ecti! poate ,i modi,icatdirect prin operaţiile din corpul ,uncţiei apelate. )uncţia getc<3 a'teapt& ap&area unei tate 'i ete de,init& înconio.< .@5=

ComparHnd cele trei moduri de tranmitere a parametrilor c&tre o ,uncţie4 e poate o"er!a=1. La apelul prin valoare tran,erul datelor ete unidirecţional 4 adic& !alorile e tran,er& numai de la ,uncţia

apelant& c&tre cea apelat&. La apelul  prin referinţă  tran,erul datelor ete 8idirecţional 4 deoarece omodi,icare a parametrilor ,uncţiei determin& modi,icarea parametrilor e,ecti!i4 care unt inonime aunume di,erite4 dar re,er& acelea'i locaţii de memorie3.

2. La tranmiterea parametrilor prin valoare4 ca parametrii e,ecti!i pot apare e9presii au nume de varia8ile.La tranmiterea parametrilor prin referinţă4 ca parametri e,ecti!i nu pot apare e5preii4 ci doar nume devaria8ile. La tranmiterea parametrilor prin pointeri4 ca parametri e,ecti!i pot apare e5preii de pointeri.

  Î/ ca:;9 </ car 4;/c=a "r>; s1 </"oarc1 2a 2;9" ,a9or? ar acs"a /; po" 4 @r;pa" s;> o

,ara>91 "p po/"r "a>9o;r sa; s"r;c";r? s poa" ;"9:a "ra/s4r;9 pr/ r4r/=1.

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

33"ra/s4r pr/ po/"rinc)u%e @i-stre.?inc)u%e @c-ni-.?int =2&int :# int :b'(&:'00;&:b'!7; return :0:b;+#oid  in&'(int >##8;

c-ut@@>!;cin??>;e>"c-ut@@!;cin??;e>$8!=2&B>#B';c-ut@@8!@@8;e>8!"c-ut@@nupa ieire din ,2= ;c-ut@@>!@@>@@;!@@;/etc&';e>>!$;!1+

33"ra/s4r pr/ r4r/=1inc)u%e @i-stre.?inc)u%e @c-ni-.?int ="&int B# int Bb'(00;b!7; return 0b;+#oid  in&'(int >##8;c-ut@@>!;cin??>;e>"c-ut@@!;cin??;e>$8!="&>#';c-ut@@8!@@8;e>8!"c-ut@@n-upa iesire din f?' ;

c-ut@@>!@@>@@;!@@;/etc&';e>>!$;!1+

Page 15: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 15/55

LABORATORUL NR.7 

 INSTRUCŢIUNI DE DECI+IE

 Scop:

1. Înţelegerea instrucţiunii i-... else

2. Înţelegerea instrucţiunii s;itc3

$. Lucrul cu instrucţiuni de decizie im"ricate

Consideraţii teoretice:

Intrucţiunea 4  Sinta5a=

unde M ...N emni,ic& ,aptul c& ete opţionalRamura ele ete opţional&.

La întHlnirea intrucţiunii 4 4 e e!aluea*& e5preieP. ac& !aloarea e5preiei ete "r;  di,erit& de *ero3 ee5ecut& intrucţiunea 1$ dac& !aloarea e5preiei ete 4a9s  egal& cu *ero34 e e5ecut& intrucţiunea 2. See5ecut& doar una dintre cele dou& intrucţiuni= ,ie intr14 ,ie intr2. up& e5ecuţia intrucţiunii 4  e trece lae5ecuţia intrucţiunii care urmea*& aceteia.

Intr1 'i Intr2 pot ,i intrucţiuni compue "locuri34 au c<iar alte intrucţiuni i, i,-uri im"ricate3.

@5emplu=

Citirea de la tatatur& e reali*ea*& prin intermediul c/ conole input3 !a ,i e5plicat în curul depre iostream-uri)

@nstruciunea swit!  2n unele cazuri este necesară o decizie multiplă specială. @nstruciunea switc7 permite acest lucru.

i6&@e>,resie?'  instr1;Kel$e  instr2;

i6&@e>,resie?'  instr1;Kel$e  instr2;

i= &@e>,resie?'TRU@ )ALS

@

intr.1 intr.1

int #b#c;cin??;cin??b;i6&@&b01'' c00;el$e (; c!0b;

  i6&c' 00;+

int #b#c;cin??;cin??b;i6&@&b01'' c00;el$e (; c!0b;

  i6&c' 00;+

Page 16: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 16/55

+e testează dacă valoarea pentru expresie este una dintre constantele specificate(expresieconst;" expresieconstB" etc.) şi se execută instruciunea de pe ramura

corespunzătoare. 2n sc7ema logică testexpresie este una din condiiile'expresieCexpresieconst;" expresieCexpresieconstB" etc.+intaxa'

/ste evaluată DexpresieE (expresie aritmetică)" iar valoarea ei este comparată cu valoareaexpresiilor constante ;" B" n" etc. (expresii constanteCexpresii care nu conin variabile).

+e execută instruciunea corespunzătoare acelei ramuri (instruciune0) undeexpresieconst0 este egală cu rezultatul evaluării DexpresieE.

-acă se !nt8lneşte instruciunea brea0" parcurgerea este !ntreruptă şi se va ieşi din bloculdat de switch.

-acă nu este !nt8lnită instruciunea brea0" se parcurge şi instruciunea următoare.

 2n cazul !n care valoarea expresiei nu este găsită printre valorile expresiilor constante" se executăcazul marcat cu etic7eta default (opională). /xpresiile expresie" expresieconst;"expresieconstB"etc." trebuie să fie !ntregi. 2n cazul !n care sunt de alt tip este necesarăconvertirea acestora la tipul !ntreg.

@5=

tet e5preie

intrucţiune 1

intrucţiune n

intrucţiune 2

 "rea8 

 "rea8 

intrucţiune m

de,aultcae

Ccă e>,resie!e>,resieQc-nstQ1instruc*iune1;Kie5ire;

Ccă e>,resie!e>,resieQc-nstQ2instruc*iune2;Kie5ire;

........................Ccă e>,resie!e>,resieQc-nstQn

instruc*iuneQn;A)t=e) instruc*iuneQ;

Ccă e>,resie!e>,resieQc-nstQ1instruc*iune1;Kie5ire;

Ccă e>,resie!e>,resieQc-nstQ2instruc*iune2;Kie5ire;

........................Ccă e>,resie!e>,resieQc-nstQn

instruc*iuneQn;A)t=e) instruc*iuneQ;

$7it-1 &@e>,resie?'8-a$e e>,resieQc-nstQ15 instructiuneQ1;K brea9;-a$e e>,resieQc-nstQ2 instructiuneQ2;K brea9;. . . . . . . . . . . . . . . . . . . . . . .-a$e e>,resieQc-nstQn instructiuneQn;K de6aultinstructiuneQn; :

$7it-1 &@e>,resie?'8-a$e e>,resieQc-nstQ15 instructiuneQ1;K brea9;-a$e e>,resieQc-nstQ2 instructiuneQ2;K brea9;. . . . . . . . . . . . . . . . . . . . . . .-a$e e>,resieQc-nstQn instructiuneQn;K de6aultinstructiuneQn; :

Page 17: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 17/55

pentru lunaC; obinem aCF" bCFpentru lunaCB obinem aCB" bCGpentru lunaC? obinem aC;" bC?pentru lunaCF obinem aCB" bCFpentru lunaEF obinem aCH" bCH

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

int !"#b!$#)un;cin??)un;$7it-1&)un'( -a$e 100; brea9;  -a$e 2(;b00;+ brea9;  -a$e "(;b;+  -a$e $; de6ault(!9;b!9;++

Page 18: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 18/55

LABORATORUL NR.8

INSTRUCŢIUNI DE CICLARE

 Scop:

1. Lucrul cu "ucla ;3ile

2. Lucrul cu "ucla do...;3ile

$. Lucrul cu "ucla -or

%. Utilizarea instrucţiunii "rea& !n cadrul "uclelor

/. Utilizarea instrucţiunii continue !n cadrul "uclelor

Consideraţii teoretice:I"#LE"ENTAREA STR$CT$RILOR RE#ETITIVE (CICLICE)

/xistă două categorii de instruciuni ciclice' cu test iniial şi cu test final.

 Implementarea str%t%rilor ilie % test ini&ial

+tructura ciclică cu test iniial este implementată prin instruciunile'or  şi w!ile.

@nstruciunea 'or  

Limba$ul # are o instruciune 'or deosebit de flexibilă. @nstruciunea 'or   implementează structuraciclică cu număr cunoscut de paşi  

+intaxa'

u este obligatorie prezena expresiilor" ci doar a instruciunilor vide.

/xemple'

ev)ure expre$ie3ATWTA XWT TIP expre$ie/ e$te "RUE REPET

be/ininstruc*iuneev)ure expre$ie%

en%

ev)ure expre$ie3ATWTA XWT TIP expre$ie/ e$te "RUE REPET

be/ininstruc*iuneev)ure expre$ie%en%

6or &e>,resie1; e>,resie2; e>,resie"'instructiune;

6or &e>,resie1; e>,resie2; e>,resie"'instructiune;

int a=;(6or&int i!9;i@199;i00' 00;

Page 19: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 19/55

@nstruciunea w!ile +intaxa'

La !nt8lnirea acestei instruciuni" se evaluează expresie. -acă aceasta are valoarea TR$E

(diferită de I/R9)" se execută instruciunea instr1. +e reevaluează din nou valoarea expresiei.-acă ea este tot ;" se repetă instruciunea" etc. Astfel" instruciunea (corpul ciclului) se repetă at8ttimp c8t expresie are valoarea de adevăr TR$E. 2n momentul !n care DexpresieE are valoarea de

e!aluare 0prs8de o"icei iniţiali*are contori3

e!aluare 0prs6

Intrucţiune 1"locul intr. ,or3

e!aluare 0prs&de o"icei incrementare contori3

)ALS@

TRU@

int i&<&m&n&a&b(6or&i!9;i@n;i00'  6or&Z!9;Z@;Z00'  (0!i:Z;

i6&i@Z' b!; el$e b!;  +

int i=;&a=;(6or&;i@199;' (i00;00;+

 71ile&@e>,resie?'  instr1;

 71ile&@e>,resie?'  instr1;

e!aluare 0prs

Intrucţiune 1"locul intr3

TRU@)ALS@

Page 20: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 20/55

adevăr ALSE(sau egal cu I/R9)" se iese din ciclu şi se trece la următoarea instruciune din afarabuclei w!ile.

 2n cazul !n care la prima evaluare a expresiei" aceasta are valoarea de adevăr ALSE"corpul instruciunii w!ile nu va fi executat niciodată.

@nstr; din corpul ciclului w7ile poate fi compusă (un bloc).@nstruciunea5nile din corpul ciclului w7ile trebuie să modifice valoarea expresiei" altfel va fi un <ciclu

infinit>.

Implementarea str%t%rilor ilie % test 'inal

@nstruciunea o w!ile +intaxa'

+e execută instruciunea instr; sau blocul de instruciuni. +e evaluează apoi DexpresieE.

-acă aceasta are valoarea TR$E* se execută din nou instr1 altfel se iese din buclă. +e testeazădin nou valoarea expresiei. +e repetă execuia instruciunii instr; at8ta c8t timp valoarea expresieieste TR$E. 2n cazul instruciunii o w!ile* corpul ciclului se execută cel puin o dată.

@nstruciunea +rea, 

 Aceasta forează ieşirea din interiorul unei bucle fără a se mai ine seama de condiia demeninere !n buclă. @nstruciunile situate !n corpul buclei după instruciunea +rea, nu vor

mai fi executate. @ntruciunea ontin%e 

 Aceasta duce la ignorarea instruciunilor din buclă" situate după aceasta" şi testarea din nou aexpresiei de meninere !n buclă. 2n cazul buclelor for  se realizează si evaluarea celei de a treiaexpresii  responsabilă cu incrementarea contorilor.

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

do  instr1; 71ile&@e>,resie?'

do  instr1; 71ile&@e>,resie?'

ti,Qv)Qreturn nueQ=unc &)istQ%ec)r*ii)-rQ,rQ=-r)i'(%ec)r*iiQvribi)eQ)-c)einstruc*iunireturn v)-re,-inter

+

ti,Qv)Qreturn nueQ=unc &)istQ%ec)r*ii)-rQ,rQ=-r)i'(%ec)r*iiQvribi)eQ)-c)einstruc*iunireturn v)-re,-inter

+

Page 21: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 21/55

LABORATORUL NR.9

 TABLOURI. POINTERI. ALOCAREA DINAMIC).

 Scop:

1. Înţelegerea noţiunii de ta"lou

2. Ta"louri cu o dimensiune ' ectori

$. Ta"louri cu dou( dimensiuni ' matrici

%. Ta"louri cu trei dimensiuni

/. Ta"louri n' dimensionale

6. Înţelegerea noţiunii de ointer

7. Alocarea dinamic( entru ectori8. Alocarea dinamic( entru matrici

:. Înţelegerea aloc(rii dinamice entru ta"louri n'dimensionale.

Consideraţii teoretice:

NOTI$NEA -E #OINTER

6ointerii au fost introdusi in limba$ele de programare pentru a putea rezolva mai eficient anumiteprobleme.

#ointer%l este o variabila ce contine adresa unui obiect. 9biectul a carei adresa este coninută depointer poate fi

ariabilă sau func!ie.

/x' ec7ivalent cu a scrie sau (declararea a două variabile)

*ariabila a este de tip "ntreg  iar variabila + este de tip pointer " ea conine adresa unei variabile detip !ntreg (adresa la care se află o valoare de tip !ntreg )

6entru calculatoarele pe ?B bii adresele sunt pe ?B bii" adică F octei (fr.) 5 b,tes(en.)

 2n cazul declarării variabilei" semnul  din st8nga acesteia semnifică faptul ca acesta conine o

adresă (variabila este de tip pointer) şi nu o valoare. 2n momentul utilizării variabilei semnul  dinst8nga acesteia are altă semnificaie" acesta semnifică faptul că se preia valoarea variabilei de tippointer.

/x' variabila a preia valoarea de la adresa lui + (valoarea la care pointează +)

9peratorul unar / este utilizat pentru obinerea adresei. /x'

/x' sunt de asemenea pointeri.

NO0I$NEA -E TABLO$

ablourile au acelaşi tip de dată şi pot avea una sau mai multe dimensiuni (tablori cu o dimensiune

C vectori" tablouri cu două dimensiuni C matrici).-eclarea tablourilor se realizează prin utilizarea operaratorului J K

int a(int b;

int a&b( int b&a(

a=b(

 b=>a(

int b&-&d(

Page 22: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 22/55

/x' " + este un tablou unidimensional cu ;H elemente

de tip #ouble"  este un tablou bidimensional cu ;HxG elemente de tip #ouble"  este un tablou cupatru dimensiuni av8nd Gxx?xB elemente de tip #ouble.

 2n cazul variabilelor de tip tablou" este alocată automat memorie pentru !ntregul tablou. /lementeleacestuia nu sunt iniializate" acestea av8nd valori aleatorii.

Referirea la un element din cadrul tabloului se va realiza !n modul următor'/x'

@ndecşi !ncep cu valoarea . 2n memoria tablourile sunt repezentate prin secvente continue. 6ractic"  va conine adresa tabloului (un bloc compact de Gxx?x elemente" ocup8nd !n memorieGxx?xx octei & #ouble este pe octei). 2n exemplul dat" primii ? vectori din imagine coninadrese şi doar ultimul vector conine valorile de tip double.

@5=

n acest exemplu  a  este o variabilă de tip "ntreg   (conine o valoare de tip "ntreg )" a1  este ovariabilă pointer  la tip "ntreg (conine a#resa unde este memorată variabila de tip "ntreg )" a2 esteun tablou unidimensional (vector) cu F elemente de tip "ntreg$  +1 este un tablou bidimensional(matrice) cu ?xF elemente de tip "ntreg " +2 este un vector cu G elemente de tip pointer la "ntreg "+3 este un pointer  la o matrice cu elemente de tip "ntreg ,  c1 este un tablou tridimensional cuelemente de tip "ntreg   şi cu dimensiunea FxNxB" 2 este o matrice ;Fx cu elementele de tip pointer la tip "ntreg " 3 este un vector cu N elemente de tip pointer  la matrici de tip "ntreg " iar cFeste un  pointer  la tablou tridimensional cu elemente de tip "ntreg .

/x. de atribuiri'

Aloarea inami4 a memoriei.

4tilizatorul poate solicita !n timpul execuiei programului alocarea unei zone de memorie. Această zonă de memorie poate fi eliberată" !n momentul !n care nu mai este necesară.

 Alocarea memoriei se poate realiza cu funciile din biblioteca av8nd prototipul(declaraiile) !nDalloc.7E sau prin utilizarea operatorului new.

5oi mallo(%nsigne n)6

:uncia alocă un bloc de memorie de n octei. :uncia !ntoarce un pointer   la !nceputul zonei dememorie alocată. 2n cazul !n care nu este posibilă alocarea unei zone compacte de n octei funciareturnează N$LL(HxHHHH).

Memoria alocată N$ este iniializată. La sf8ritul operaiilor memoria trebuie eliberată. 2n cazul

alocării cu funcia malloc dealocarea memoriei se face cu funcia'5oi 'ree(5oi p)6

double b?3;@&-?3;@?'@&d?'@?@?%@?@&a(

a = d?3@?/@?;@?@(CC a preia #aloarea unei -elule din -adrul tabloului d 

int a&a3&a/?D@&b3?%@?D@&b/?'@&b%(int -3?D@?@?/@&-/?3D@?@&-%?@&-D (

a=a/?3@( a=b3?;@?;@( a=-3?3@?;@?3@( a3=a/(CCatun-i in urma5a=a3?3@(a #a a#ea a-eea$iCC#aloare -a in -azul a=a/?3@(a3=b3?3@( a3=b/?%@(a3=-3?3@?/@(a3=-/?3@?;@(

 b%=-/?%@( b%=-%?3@(a=a3( a=a3?;@(a=b/?/@?;@( a=-/?3@?;@?;@(-%?/@?;@?;@=a( a3=>a( b%?3@=a3( -D?;@=-%?3@(

Page 23: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 23/55

:uncia eliberează o zonă de memorie indicată de p" alocată !n prealabil prin malloc%&.:unciile de alocare !ntorc pointeri generici  (5oi)  la zone de memorie" !n timp ce

utilizatorul alocă memorie ce păstrează informaii de un anumit tip. 6entru a putea accesa memoriaalocată" indirect" prin intermediul pointerului" acesta va trebui să fie un pointer cu tip" ceea ceimpune conversia explicită (prin ast) a pointerului !ntors de funcia de alocare !ntr&un pointer cutip.

 au

@5emplu de alocare dinamic& a unei matrici i de eli"erare a *onei alocate.

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

int p( p=*intmallo-*n$izeo6*inti6*p==ULL 8 print6*.Memorie in$u6i-ientaG2(000000i6*p CC identi- -u i6*pG=ULL 6ree*p(

int p( p=ne7 int?n@(i6*p==ULL

8 print6*.Memorie in$u6i-ientaG2(000000i6*p delete?@ p(

,in-lude H$tdio01 ,in-lude H-onio01 

,in-lude Hallo-01 CCalo-a dinami- o matri-e -u m linii $i n -oloanedouble alo-a/double*int m&int n8double A( int 9&i( A=*double mallo-*m$izeo6*double( i6*GA return ULL( 6or*9=;(9Hm(9++  8A?9@=*double mallo-*n$izeo6*double(  i6*GA CCalo-are e$uata& elibereaza memoria de<a alo-ată  8 6or*i=;(iH9(i++ 6ree*A?i@(  6ree*A( return ULL(  :CCendi6  :CCend6or 6or*9=;(9Hm(9++  6or*i=;(iHn(i++ A?9@?i@=;( return A(

:CCJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJCCelibereaza zona de memorie alo-ata#oid elib/double*doubleA& int m8int 9( 6or*9=;(9Hm(9++  i6*A?9@ 6ree*A?9@( i6*A 6ree*A(:CCJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ#oid main*#oid8 double x(  x=alo-a/double*3;;&';(  i6*x==ULL print6*KMemorie in$u6i-ientaK(  CC00000 operatii -u matri-ea x 0000  elib/double*x&3;;( et-1*(:

Page 24: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 24/55

LABORATORUL NR.10

ARITMETICA POINTERILOR 

 Scop:

1. Realizarea unor oeraţii cu adrese entru ectori

2. Realizarea unor oeraţii cu adrese entru matrici

$. Realizarea unor oeraţii cu adrese entru ta"louri n'dimensionale

Consideraţii teoretice:

ARIT"ETICA #OINTERILOR

-atorită faptului că adresele de memorie a elementelor dintr&un tablou sunt consecutive se potefectua operaii cu aceste adrese !n cadrul tabloului.

La incrementarea unei variabile pointer" #%% incrementează automat adresa cu o valoare adecvată(; octet dacă tipul variabilei la care punctează este !ar* B octei pentru tipul de date s!ort* patruoctei pentru long sau 'loat" etc.)" astfel !nc8t pointerul să indice următoarea valoare pe care o aretipul pointerului (tipul datei la care punctează). 6entru tipuri de date complexe (structuri" clase) seincrementează cu dimensiunea structurii sau clasei la care punctează.

/x'

@5=

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

,in-lude H$tdio01 FF"i"lioteca pentru ,unctia print, -- a,iare

,in-lude H-onio01 FF"i"lioteca pentru ,unctia getc< J ateapta FFapaareaunei tate JOS#oid main*#oid8 int t?D@=8;& 3& /& %:(  int p(  p=>t?/@(  pJ=/(print6*KdNnK& p( F; a,iea*a !aloarea lui tMN ;F  p+=3(print6*KdNnK& p( F; a,iea*a !aloarea lui tM1N ;F  p++(print6*KdNnK& p( F; a,iea*a !aloarea lui tM2N ;F  *p+='(print6*KdNnK& p( F; a,iea*a !aloarea lui tM2NE( ;F  et-1*(:

int a;3&a;/&a3&b3?%@?D@ a%?3;@(a3=b3?;@(impli-a a3+/=b3?/@(

 b3?;@=>b3?;@?;@(impli-a b3?;@+'=>b3?3@?;@(a%=>a%?;@( b3=>b3?;@(b3=>b3?/@J/(

 b3?/@?3@=*>b3?/@?3@( b3?/@?3@=*b3?/@+3( b3?/@?3@=**b3+/+3( b3?/@?%@=**b3+/+% b3?/@?%@=*>b3?/@+%

Page 25: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 25/55

LABORATORUL NR.11

STRUCTURI . IMPLEMENTARE LISTE

 Scop:

1. Utilizarea structurilor de date

2. Construcţia listelor simlu ,i du"lu !nl(nţuite

$. <arcurgerea listelor

%. =nserarea !ntr'o list(

/. >tergerea dintr'o list(

Consideraţii teoretice:

STRUCTURI

Structurile grupea*& date de tipuri di,erite4 contituind de,iniţii ale unor noi tipuri de date. Componentele uneitructuri e numec  membrii (c.mpurile)  tructurii. La declararea unei tructuri e pot preci*a tipurile4identi,icatorii elementelor componente 'i numele tructurii.)orma general& de declarare a unei tructuri=

în care=s"r;c" ete un cu!Hnt c<eie o"ligatoriu3identificator/tip/structura repre*int& numele noului tip poate lipi3lista/de/declaratii/membri ete o lit& în care apar tipurile 'i identi,icatorii mem"rilor tructuriilista/identificatori/variabile ete o lit& cu identi,icatorii !aria"ilelor de tipul declarat.

Qem"rii unei tructuri pot ,i de orice tip cu e5cepţia tipului tructur& care e declar&.

 x: 

@CLARAII @ TI0

Lim"a>ul C permite atri"uirea unui nume pentru un tip prede,init au utili*ator3 de date. 0entruaceata e ,oloec delcaraţiile de tip. )orma general& a acetora ete=

 Gume?tip poate ,i ,oloit la declararea datelor în mod imilar cu!intelor c<eie pentru tipurile prede,inite.@5=

$tru-t i%enti=ict-rQti,Qstructur ()istQ%eQ%ec)rtiiQebrii;+ )istQi%enti=ict-riQvribi)e;

$tru-t i%enti=ict-rQti,Qstructur ()istQ%eQ%ec)rtiiQebrii;+ )istQi%enti=ict-riQvribi)e;

$tru-t %t (int 8i;-1ar )unK11;int n;

+;..............$tru-t %t %1#:%2;%1.8i!$; %1?8i!7;strc,&%1.)un#[,ri)ie[';strc,&%2?)un#[i[';%1.n!1\]^;%2?n!1\]\;

tpede6 ti, nueQti,;tpede6 ti, nueQti,;

Page 26: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 26/55

 

LIST@

1.Lita ete o colectie de elemente celule3 înlanţuite ce ,ormea*& o tructura dinamic&4 ituata in memoriadinamic&4 în care toate elementele unt de acelai tip$ numarul de elemente ete !aria"il4 c<iar nul.2.O lita ete o ec!enta de *ero au mai multe elemente4 numite noduri4 toate ,iind de acelai tip. Spredeoe"ire4 ta"loul ete o tructura tatica4 ituata in memoria dinamic&4 in care toate elementele unt deacelai tip$ numarul de elemente ,iind contant.

Un nod al lite liniare apare ca o tructura recuri!a4 a!and o componenta de tip pointer la tructura4

repre*entand legatura inlantuirea 3 pre nodul urmator. )iecare elementcelul&Fnod3 din cadrul liteiînlanţuite are o tructur& de tipul=

aca în cadrul elementuluiFceluleiFnodului e ,ace re,erire doar la elementulFcelulaFnodul urm&tor atuncia!em lite implu înl&nţuite. ac& e ,ace 'i re,erire la nodul anterior atunci a!em lite du"lu înlanţuite.Structura unui element F celule F nod=

0entru lucrul cu lite implu înl&nţuite ete u,icient & e cunoac& adrea capului lite4 iar pentru liteledu"lu înlantuite e poate a>unge la orice nod dac& e cunoa'te adrea unui ingur nod din lit&4 oricare ar ,i el.

Crara ;/ 9s" ;>9; </9a/=;"

@te necear& alocarea dinamic& de memorie pentru orice nod nou creat. Alocarea e poate ,ace atHt

cu ,uncţia malloc cHt 'i cu operatorul ne:. Stergerea elementelor din lit& tre"uie & aigure 'i dealocareaeli"erarea3 memoriei corepun*&toare. Aceata e reali*ea*& cu ,uncţiia ,ree 4 repecti! operatorul delete.

@5=

@te OLIATORIU ca la cele dou& capete -apJante 'i pJurm  a ai"& !aloarea NULL  p ,iind ultimulnod din lit&3.

tpede6 int INTRE;INTRE ># ;

tpede6 $tru-t(double ,rteQre)ă;double ,rteQi/inră;

+ XOPLE_;

XOPLE_ ># ;

tpede6 $tru-t NOC(..................NOC :ur#:nt;

+ NOC;

NOC :c,# :,;

` In=-r*ie uti)ă;` In=-r*ie %e 3n)n*uire către e)eentu)&ce)u)' urăt-r;,entru )iste)e %ub)u 3n)ăn*uite` In=-r*ie %e 3n)n*uire către e)eentu)&ce)u)' nteri-r;

 ARESA  OULUI A"ERIOR 

A"E O

 ARESA  OULUIURMP"OR 

QA!LIS"P 

...............c,!ne7 NOC;crere c,u)ui )istei su &c,!&NOC:' ))-c&$izeo6&NOC'';'eset&c,#9#$izeo6&NOC'; si/ură initi)i8re

cu v).9 res,ectiv v). NULL ,entru ,-interi........................................................,resu,une , u)tiu) n-% ) )istei,1!ne7 NOC;eset&c,#9#$izeo6&NOC';,?ur!,1; ,1?nt!,; ,!,1;

Page 27: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 27/55

ac& pJurm==-ap i -apJante==p atunci a!em listă circulară.

Parc;r@ra ;/ 9s"

0reupunem c& în acet ca* !aria"ila p ete un pointer de tip NOD ,oloit la parcurgerea litei.

ucla ,or e5ecut& o intrucţiune !id&. A!anul e opre'te pe ultimul nod$

@5emplu=

inc)u%e @st%i-.?inc)u%e @))-c.?inc)u%e @strin/.?

t,e%e= struct NOC2(int i%;NOC2 :ur#:nt;

+NOC2;

crere unei )iste cu n n-%uri# int-rce %res c,u)ui )isteiNOC2: =c&int n'(NOC2 :,# :,1# :c,)ist;,!NULL;=-r&int i!9;i@n;i00' ( ,1!,;

, ! &NOC2:'))-c&si8e-=&NOC2'';  eset&,#9#si8e-=&NOC2'';  ,?i%!i01999; ,tr. - viit-re i%enti=icre n-%u)ui  i=&i' c,)ist!,;  e)se  ( ,1?ur!,; ,?nt!,1; + + return c,)ist;+

,rcur/ere )istei cu ,-8iti-nre ,e u)tiu) n-% &int-rce %res u)tiu)ui n-% %in c%ru) )istei'NOC2: =,1&NOC2 :c,)ist'( NOC2 :,;

=-r&,!c,)ist;,?ur;,!,?ur'; ,?ur su ,?ur!!NULL  return ,;+

,rcur/ere )istei cu ,re)ucrre ,entru =iecre n-%v-i% =,2&NOC2 :c,)ist'( NOC2 :,;  =-r&,!c,)ist;,;,!,?ur'  (e> i%!i%  ,?i%!,?i%;  + return;+

=isre )istv-i% =is&NOC2 :c,)ist'( NOC2 :,; int i;  ,rint=&n';  =-r&,!c,)ist#i!9;,;,!,?ur#i00'  (,rint=& K<%<%#i#,?i%';  + return;+

ster/ere unui n-% %in )ist ,rin %resv-i% =%1&NOC2 :%'(

i=&%?ur' nu este u)tiu)  (%?nt?ur!%?ur;  %?ur?nt!%?nt;

  + e)se (%?nt?ur!NULL;+=ree&%';

+

a.........................................6or&,!c,;,?ur;,!,?ur';

Page 28: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 28/55

ster/ere unui n-% %in )ist %t ,rin i%v-i% =%2&int i%#NOC2 :c,)ist'( NOC2 :,;  =-r&,!c,)ist;,?i%!i%;,!,?ur';  i=&,?i%!!i%' =%1&,';

 +

%u/re unui n-% &) s=rsitu) )istei'v-i% =1&NOC2 :c,)ist# NOC2 :'( NOC2 :,;  ,!=,1&c,)ist';,-8iti-nre ,e u)tiu) n-%  ,?ur!;  ?nt!,;+

insere8 n-% &cu e>ce,ti ,riei si u)tiei ,-8itii' se % n-%u) nteri-rv-i% =i1&NOC2 :nteri-r# NOC2 :ins'(ins?nt!nteri-r; ins?ur!nteri-r?ur; nteri-r?ur?nt!ins; nteri-r?ur!ins;+insere8 n-% se % i%u) n-%u)ui nteri-r

v-i% =i2&int nteri-rQi%# NOC2 :ins# NOC2 :c,)ist'( NOC2 :,;  =-r&,!c,)ist;,?i%!nteri-rQi%;,!,?ur';  i=&,?i%!!nteri-rQi%' =i1&,#ins';+

int in&int r/c# cr ::r/v'(NOC2 :c1#:>#:; c1!=c&19';>!=,1&c1';,rint=&nU)tiu) n-%<%#>?i%';=,2&c1';ster/e n-%=%2&1996#c1';%u/ n-%!&NOC2:'))-c&si8e-=&NOC2''; eset&#9#si8e-=&NOC2''; ?i%!\\\;=1&c1#';insere8 n-%!&NOC2:'))-c&si8e-=&NOC2''; eset&#9#si8e-=&NOC2''; ?i%!\\\;=i2&199$##c1';=is&c1';/etcr&'; 

return 0;}

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

Page 29: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 29/55

LABORATORUL NR.12

 *UNCŢII RECURSI#E - ARBORI

 Scop:

1. Înţelegerea lucrului cu stiele de ti L=FO

2. Înţegerea aelului recursi 

$. Înţelegerea transmiterii arametrilor ,i a izi"ilit(ţii aria"ilor !n cazul aelurilor

recursie

%. Construcţia ar"orilor "inari

/. <arcurgerea ar"orilor "inari utiliznd te3nici recursie

6. <arcurgerea ar"orilor ?cazul general@ utiliznd te3nici recursie

Consideraţii teoretice:

 1*$6 0*04+ 

O ,uncţie ete numit& funcţie recursivă dac& ea e autoapelea*&4 ,ie direct (în definiţia ei se face apel la eaînsă!i)4 ,ie indirect   prin apelul altor ,uncţii3. 0entru ,iecare apel al ,uncţiei4 parametrii 'i !aria"ileleautomatice e memorea*& pe ti!&4 a!Hnd !alori ditincte. Baria"ilele tatice ocup& tot timpul aceea'i *on& de

memorie ,igurea*& într-un ingur e5emplar3 'i î'i p&trea*& !aloarea de la un apel la altul. Orice apel al unei,uncţii conduce la o re!enire în ,uncţia repecti!&4 în punctul urm&tor intrucţiunii de apel. La re!enirea dintr-o ,uncţie4 ti!a ete cur&ţat& ti!a re!ine la tarea dinaintea apelului3.

Un e5emplu de ,uncţie recuri!& ete ,uncţia de calcul a ,actorialului4 de,init& at,el=,actn314 dac& n$,actn3n;,actn-134 dac& nP$

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(

2. Se continu& cu e5emplele corepun*&toare din ecţiunea T@ST@

/c9; os"ra2.7/c9;co/o.7/" 4ac"/" /  F 4 /(

  F co;"Ar@;2/" /@a",H/$ r";r/ -8$   9s  4 /KK( r";r/ 8$  9s r";r/ /4ac"/-8$,o 2a/F/" /r? 4$co;"/rK$ c//r$ 4K4ac"/r$44( co;"EROARE$co;"/rHK4/$@"c7$

Page 30: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 30/55

LABORATORUL NR.13

*UNCŢII C DIN BIBLIOTECI

 Scop:

1. Familiarizarea cu cele mai utilizate -uncţii din "i"liotecile C

2. Lucrul cu ,iruri

Consideraţii teoretice:

peratii cu func!ii #in biblioteca matematică

09

 

Operatii % aratere

ipul predefinit" destinat !n # lucrului cu caractere" este tipul !ar . +patiul de memorie asociat

variabilelor acestui tip este 1 otetO un caracter se memoreaza ca numarul !ntreg corespunzatorcodului ASCII al caracterului respectiv. 6rin urmare" !n # un caracter poate aparea !n operatiinumerice. *alorile acestui tip sunt cuprinse !n intervalul J&;B...;BNK !n cazul caracterelor cu semn"respectiv JH...BGGK !n cazul celor fara semn.

iblioteca ce contine funiile pentru siruri este data de 7eader&ul Dstring.7E

/x'

 Desfăşurarea lucrării:

1. *e ruleaz( eemlele din secţiunea teoretic(2. *e continu( cu eemlele coresunz(toare din secţiunea T0*T0

-1ar $tr& a?3;@&d?'@?@(-1ar b=8."ES"3/%2:(-opiaza b in $tr$tr-p*$tr&b(CC-opiaza primele -ara-tere$trn-p*$tr&b(CC-on-ateneaza $irurile$trn-at*$tr&b(int l=$trlen*$tr(CClunime $ir$tr?%@=R($tr?D@=%/(CC%/ e$te -odul ASQII pentru ($tr?'@=;( CCterminator de $ir(CCa e$te #e-tor de -ar-tere iar$tr CCe$te un $ir de -ara-tereCCputem a#ea5$tr?'@=a?%@( $au a?D@=$tr?/@(

#include <math.h> #include <string.h> char str[10];doule a!0." !$ c;c!%o&'a(;c!sqrt'(;c!ex%'(;c!log'ex%'((;strc%)'str*1".+*(;c!atof'c(; ,,ascii to float

Page 31: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 31/55

LABORATORUL NR.14

TESTE

 Scop: Testarea cunoştinţelor

Test #1

A. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente3=

30 int !1\; & %= +%'++; c-ut@@; R5000000

/0 int !11; ??= %; c-ut@@; R5......

%0 int !17#b; b ! &'>&)D'; c-ut@@b; R5......

D0 int #bK6 ! (16#1]#17#1$#1"#12#11+; ! *>bK"J3'; c-ut@@; R5......

'0 int #cK$K2 ! ((^#7+#(1#2+#("#\+#(]#$++; ! c0*&c+*>c?3@''; c-ut@@; R50000

0 -1ar str ! AXCEG( strK1 ! strK101X;strK"!strK$&strK"01';c-ut@@str; R5000

B .S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

\

(1−ai1)∑j=1

]

aij−∑k=1

^bk

aij−ai1

double ,1double a4 double  "3

+

C.  Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOC8int IC; NOC st# %r# nt: NOC; S& e crie o ,uncţie ce preia o adre& a unui nod oarecare dintr-un ar"ore 'i întoarce adrea nodului r&d&cin&.

 O r%Arb&NOC n-%_'

(

+

Page 32: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 32/55

"e$t ,/

A. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=3a0  int =22; =+1; ,rint=&<%[#'; R3a5......

3b0 int #b=22( =b00( ,rint=&<%[#'; R3b5000000

/ 0 int =11; a=2;,rint=&<%[#'; R/a5......

%0 int =11#b#c#%; b=*)11>*22; c! )33; %!22;

$a ,rint=&<%[#c';R%a5... $  ,rint=&<%[#%'; R%b5... $c  ,rint=&<%[#b';

R%-5....

D0 int K2#bK6!(11#22#""#$$#77#]]#66+; K9!*>bK901'; K1!b;

-a.,rint=&<%[#K9'; RDa5...... - .,rint=&<%[#K1'; RDb5......

'0 int  K"#cK$K"!((11#22#""+#(12#2"#"$+#(1"#2$#"7+#(1$#27#"]++;

K9!10*>cK9K9+/'; K1=*>cK9+3'; K2!2Jc;

"a.,rint=&<%[#K9'; R'a5...... " .,rint=&<%[#K1'( R'b5000000

  "c .,rint=&<%[#K2'( R'-5000000

B. S& e implemente*e o ,uncţie double ,1double a4 double  "3 care preia matricea a Vi !ectorul " Vi

care întoarce !aloarea e5preiei=

C.Se d& ,uncWia ,24 & e crie ce !a ,i a,iVat în urma e5ecuWiei ,uncWiei main3 unt a,iVate %linii3= #oid  6/&int # int b# int> c'( int !22; $tati- int t;  ++;&:b'++;c++;t++;++; ,rint=&d!<% b!<% c!<% t!<%n[##b#c#t';return;+int  main&'( int >!1#!2#8!"#K";  =2&>#>#8'; ,rint=&d>!<% !<% 8!<%n[#>##8';  K9!>; K1!; K2!8;  =2&K9#>K1#K2'; ,rint=&dK9!<% K1!<% K2!<%n[#K9#K1#K2';return 9;+ 

R1..............................................

  R2..............................................  R"..............................................

  R$..............................................

D. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOCA8int IC; NOCA ,St# ,Cr;: NOCA; S1 s scr o 4;/c= c pra arsa cap;9; ar>or9; 5 </"oarc arsa cap;9; ;/ 9s" ;>9;

 </91/;" c co// ID-;r9 /o;r9or / 2ar@/a rap"1 a ar>or9;. S"r;c";ra /o;r9or 9s" ,a

4 tpede6 $tru-t OL8int I( OL ur& nt;: OL(

11∑i=1

+

8 i−22

∑k =1

ai k −ak"k  

Page 33: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 33/55

"ES" ,%

A. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=3a0  int =""; =+1; ,rint=&<%[#'; R3a5......

3b0 int #b=""( =b( ,rint=&<%[#'; R3b5000000

/0 int =""; a=2;,rint=&<%[#'; R/a5......

%0 int =""#b#c#%; b=*)11>*22; c! )33; %!22;

$a ,rint=&<%[#c';R%a5... $  ,rint=&<%[#%'; R%b5... $c  ,rint=&<%[#b';

R%-5....

D0 int K2#bK6!(11#22#""#$$#77#]]#66+; K9!*>bK201'; K1!1b;

-a.,rint=&<%[#K9'; RDa5...... - .,rint=&<%[#K1'; RDb5......

'0 int  K"#cK$K"!((11#22#""+#(12#2"#"$+#(1"#2$#"7+#(1$#27#"]++;

K9!10*>cK1K1J3'; K1=*>cK1+3'; K2!c";

"a.,rint=&<%[#K9'; R'a5...... " .,rint=&<%[#K1'( R'b5000000

  "c .,rint=&<%[#K2'( R'-5000000

. S& e implemente*e o ,uncţie double ,1double a4 double  "3 care preia matricea a Vi !ectorul " Vi

care întoarce !aloarea e5preiei=

C.Se d& ,uncWia ,24 & e crie ce !a ,i a,iVat în urma e5ecuWiei ,uncWiei main3 unt a,iVate %linii3= #oid  6/&int # int b# int> c'( int !""; $tati- int t;  JJ;&:b'JJ;cJJ;tJJ;JJ; ,rint=&d!<% b!<% c!<% t!<%n[##b#c#t';return;+int  main&'( int >!19#!29#8!"9#K";  =2&>#>#8'; ,rint=&d>!<% !<% 8!<%n[#>##8';  K9!>; K1!; K2!8;  =2&K9#>K1#K2'; ,rint=&dK9!<% K1!<% K2!<%n[#K9#K1#K2';return 9;+

  R1..............................................

  R2..............................................

  R"..............................................

  R$..............................................

D. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOCA8int IC; NOCA ,St# ,Cr: NOCA; Să $e $-rie o 6un-ţie -e preia adre$a -apului arborelui Ti ntoar-e adre$a

-apului unei li$te dublu nlănVuite -e -onVine IJurile nodurilor 6runză

*terminale0 Stru-tura nodurilor li$tei #a 6i5 tpede6 $tru-t OL8int I(

 OL ur& nt: OL(

11

∑i=1

+

8i

∑i=1

+

8i−22

∑k =1

ai k 

Page 34: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 34/55

"ES",'

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int =22; =+^; ,rint=&<%[#'; R35......

/0 int #b=1"( =*JJb++( ,rint=&<%[#'; R/5000000

%0 int =17#b=2;i6&& 1'>>&b="''  HH=b; el$e a=b;,rint=&<%[#'; R%5......

D0 int =1"#b; b=*)7>*2;,rint=&<%[#b'; RD5......

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK90"'; ,rint=&<%[#'; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++;!*>cK"K9J/'0*>cK9+3';,rint=&<%[#'; R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!+*+3; ,rint=&<%[#';

 R5000000000 -1ar str!AXCEG( strK1!strK$strK10;strK2! GstrK$;,rint=&<s[#str';

R5000000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

/

8 i∑ j=1

+

8 j−∑k =1

8k 

a j"j−ak"k 

double ,?double a4 double  "3

+

Page 35: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 35/55

"ES" ,

A. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=3a0  int =22; =+2; ,rint=&<%[#'; R3a5......

3b0 int #b=19( =b00( ,rint=&<%[#'; R3b5000000

/ 0 int =19; a=2;,rint=&<%[#'; R/a5......

%0 int =19#b#c#%; b=*)19>*11; c! )3;; %!2;

$a ,rint=&<%[#c';R%a5... $  ,rint=&<%[#%'; R%b5... $c  ,rint=&<%[#b';

R%-5....

D0 int K2#bK6!(12#2"#"$#$7#7]#]6#6^+; K9!*>bK201'; K1!b;

-a.,rint=&<%[#K9'; RDa5...... - .,rint=&<%[#K1'; RDb5......

'0 int  K"#cK$K"!((19#2"#"$+#(11#22#1"+#("1#$2#""+#(1$#21#"1++;

K9!10*>cK9K1+3'; K1=*>cK1+3'; K2!c;

"a.,rint=&<%[#K9'; R'a5...... " .,rint=&<%[#K1'( R'b5000000

  "c .,rint=&<%[#K2'( R'-5000000

0 -1ar str ! AXCEG( strK1 ! strK101X;strK"!strK$&strK"01';

,rint=&<s[#str'( R5000

B. S& e implemente*e o ,uncţie double ,1double a4 double  "3 care preia matricea a Vi !ectorul " Vi

care întoarce !aloarea e5preiei=

∑i=1

\

(1−ai1)∑j=1

]

aij−∑k=1

^ bk

aij−ai1

Page 36: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 36/55

"ES" ,

A. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=3a0  int ="; =+1; ,rint=&<%[#'; R3a5......

3b0 int #b="( =b( ,rint=&<%[#'; R3b5000000

/0 int ="; a=2;,rint=&<%[#'; R/a5......

%0 int ="#b#c#%; b=*)19>*2; c! )W; %!;

$a ,rint=&<%[#c';R%a5... $  ,rint=&<%[#%'; R%b5... $c  ,rint=&<%[#b';

R%-5....

D0 int K2#bK6!(21#12#1"#1$#71#1]#16+; K9!*>bK20"'; K1!2+b;

-a.,rint=&<%[#K9'; RDa5...... - .,rint=&<%[#K1'; RDb5......

'0 int  K"#cK$K"!((19#2#"+#(2#2"#$+#(1"#21#"7+#(1$#12#7++;

K9!*>cK1K1J3'; K1=*>cK1+%'; K2!c;

"a.,rint=&<%[#K9'; R'a5...... " .,rint=&<%[#K1'( R'b5000000

  "c .,rint=&<%[#K2'( R'-5000000

 0 -1ar str!AXCEG( strK7!strK"strK90;strK]!&strK7strK"';

,rint=&<s[#str'( R5000

. S& e implemente*e o ,uncţie double ,1double a4 double  "3 care preia matricea a Vi !ectorul " Vi

care întoarce !aloarea e5preiei=

∑i=1

/

8 i∑ j=1

+

  8  j

a i"j−a i"i

∑k =1

.

8k 

Page 37: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 37/55

"ES" ,

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora =

1. int =19; =+"; c-ut@@; R35......

/0 int #b=19( =*JJb++( c-ut@@; R/5000000

%0 int =29&b="(i6** 1>>*b=2 =b( el$e  HH=b( -outHH(  R%5......

D0 int =19#b; b = * 17 > * ) 12; c-ut@@b; RD5...... '0 int #bK6!(1"#11#17#16#1\#21#2"+; !*>bK21'; c-ut@@; R'5......

0 int  #r#s#t#cK$K"!((1"#11#17+#($#2"#27+#("1#"#"7+#(1$#22#19++;r!cK"K9; s!cK1; t!&>cK201';!&>rJs'+t;

 ac-ut@@r; Ra5.......

  bc-ut@@s; Rb5.......  -c-ut@@t; R-5.......  dc-ut@@; Rd5.......

0 int r#s&K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++;r!; s!&K1K2J1';' c-ut@@r; Ra500000000b' c-ut@@s; Rb500000000 

0 -1ar str!AXCEG( strK2!strK"strK10;strK$! GstrK$; c-ut@@str; 

R5000000000000II. S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&

∑i=1

i'a9

8 i∑ j=1

 j'a9

8 j−∑k =1

k'a9 8k 

a j"j−ak"k  

Ta"lourile a 'i " conţin numere reale 'i unt tranmie prin adre&4 iar !alorile iQa54 >Qa5 'i 8Qa5unt tranmie prin re,erinţ&.

III. Ce !a a,i'a urm&toarea ec!enţ& de codX,in-lude H$tdio01 ,in-lude H-onio01 

int main*8int $=%&t( 6or*((JJ$  8 i6*G*$+/ brea9(  $7it-1*$  8 -a$e ;5t=%(tHH=3( brea9(  -a$e 35t=D(t)='( brea9(  -a$e /5t='(t=t( brea9(  de6ault5 t=W(  :(  print6*K$= d JJJ t=d NnK&$&t(  :  et-1*(  return ;(+

Page 38: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 38/55

"ES" ,W

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int =1"; =+^; c-ut@@; R35......

/0 int #b=11( =*JJb++( c-ut@@; R/5000000

%0 int =2^#b=";i6&& 1'>>&b?="'' =b; el$e  HH=b; c-ut@@; R%5......

D0 int =11#b; b = * 17 > * ) 11; c-ut@@b; RD5...... 

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK11'; c-ut@@; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++;!*>cK"K9JcK1'0*BcK203';c-ut@@;R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!0&K1K2J1'; c-ut@@b;

R5000000000 -1ar str!AXCEG( strK2!strK"strK10X;strK$!strK$; c-ut@@str;

 

R5000000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

/

8 i∑ j=1

+

8 j−∑k =1

8k 

a i"j−ai"i

double ,?double a4 double  "3

+

Page 39: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 39/55

"ES" ,3;

I. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor linii de cod=

#include <stdio.h> 

#include <conio.h> 

int %;int =>&int #int b#int >c'( $tati- int s;  int %;  %=J"; J="; bJ=$( cJ=7( s++( 55%JJ(  printf &Qs!<% Q!<% Qb!<% Qc!<% Q%!<%n#s##b#c#%';  return +b+c+%;+int main&#oid '(int !1#b!2#c#K2; c =*intmalloc&1:$izeo6*int'; :c!";%!$; K9==>&#>b#c';  printf &1!<% 1b!<% 1c!<% 1%!<% K9!<%n##b#c#%#K9'; K1==>&c#>#b';  printf &2!<% 2b!<% 2c!<% 2%!<% K1!<%n##b#c#%#K1'; getch(); =ree&c'; return 9;+

R35 Qs!000 R/5 Q!... R%5 Qb!... RD5 Qc!... R'5 Q%!...

R5 1!... R5 1b!... R5 1c!... RW5 1%!... R3;5K9!...

R335Qs!000 R3/5Q!... R3%5Qb!... R3D5 Qc!... R3'5 Q%!...

R352!... R352b!... R352c!... R3W52%!... R/;5K1!...

N-tă R1# R2# R"# R$# R7 re,re8intă v)-ri)e ) ,riu) ,e) ) =unc*iei# ir

R11# R12# R1"# R1$# R17 re,re8intă v)-ri)e %in c%ru) =unc*iei c-res,un8ăt-re ce)ui %e ) %-i)e ,e) ) =unc*iei

 II. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOC8int IC; NOC ,St# ,Cr# ,Ant: NOC; S& e crie o ,uncţie ce preia adrea capului ar"orelui 'i reali*ea*& in!erarea tHnga cu dreapta3 anodurilor al c&ror nod p&rinte are I-ul di!i*i"il cu (.

#oid  %7iArb&NOC c,'(

:

Page 40: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 40/55

"ES" ,33

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int =1]; =+^; c-ut@@; R35......

/0 int #b=12( =*++bJJ( c-ut@@; R/5000000

%0 int =6#b=2;i6&& 27'>>&b?="'' =b; el$e  HH=b; c-ut@@;R%5......

D0 int =12#b; b=*19>*)6; c-ut@@b; RD5......

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK101'; c-ut@@; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++;!*cK1J3'0*BcK2+3';c-ut@@; R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!*+1'+*>K11'; c-ut@@b;

R5000000000 -1ar str!AXCEG( strK9!strK"strK20A;strK7!strK$; c-ut@@str;

 

R5000000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

1

∑ j=1

/

 8  j∑k =1

. 8k 

a i"j−ai"i

double ,?double a4 double  "3

:

Page 41: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 41/55

TEST 86

I. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor linii de cod=

#include <stdio.h> 

#include <conio.h> int %;int =>&int #int b#int >c'( $tati- int s;  int %;  %=J$; J=6; b+=^( cJ=7( s++( 55%JJ(  printf &Qs!<% Q!<% Qb!<% Qc!<% Q%!<%n#s##b#c#%';  return +b+c+%;+int main&#oid '(int =2#b="#c#K2; c!*intmalloc&1:$izeo6*int'; c!$;%!7; K9==>&b#c#';

  printf &1!<% 1b!<% 1c!<% 1%!<% K9!<%n##b#c#%#K9'; K1==>&#c#b';  printf &2!<% 2b!<% 2c!<% 2%!<% K1!<%n##b#c#%#K1'; getch(); =ree&c'; return 9;+

R35 Qs!000 R/5 Q!... R%5 Qb!... RD5 Qc!... R'5 Q%!...

R5 1!... R5 1b!... R5 1c!... RW5 1%!... R3;5K9!...

R335Qs!000 R3/5Q!... R3%5Qb!... R3D5 Qc!... R3'5 Q%!...

R352!... R352b!... R352c!... R3W52%!... R/;5K1!...

N-tă R1# R2# R"# R$# R7 re,re8intă v)-ri)e ) ,riu) ,e) ) =unc*iei# irR11# R12# R1"# R1$# R17 re,re8intă v)-ri)e %in c%ru) =unc*iei c-res,un8ăt-re ce)ui %e ) %-i)e ,e) ) =unc*iei

 

II. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOC8int IC; NOC ,St# ,Cr# ,Ant: NOC; S& e crie o ,uncţie ce preia adrea nodului r&d&cin& al ar"orelui 'i întoarce adrea nodului r&d&cin& al unuiar"oreu"ar"ore3 al carui I ete 214 iar am"ele noduri decendente copil3 au I-uri pare.

NOC %rI%21Arb&NOC c,'(

:

Page 42: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 42/55

"ES" ,3%

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int =1\; =+^; c-ut@@; R35......

/0 int #b=1"( =*JJb++( c-ut@@; R/5000000

%0 int =17#b=2;i6&& 1'>>&b?="'' =b; el$e  HH=b; c-ut@@;R%5......

D0 int =1"#b; b=*)7>*2; c-ut@@b; RD5......

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK90"'; c-ut@@; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++;!*>cK"K9J/'0*>cK9+3';c-ut@@; R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!+*+3; c-ut@@b;

R5000000000 -1ar str!AXCEG( strK1!strK$strK10;strK2!strK$; c-ut@@str;

 

R5000000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

/

8 i∑ j=1

+

8 j−∑k =1

8k 

a j"j−ak"k 

double ,?double a4 double  "3

+

Page 43: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 43/55

"ES" ,3D

I. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor linii de cod=

#include <stdio.h> 

#include <conio.h> 

int %;int =>&int #int b#int >c'( $tati- int s;  int %;  %=+"; +=19; bJ=19( c+=19( s++( 55%++(  printf &Qs!<% Q!<% Qb!<% Qc!<% Q%!<%n#s##b#c#%';  return +b+c+%;+int main&#oid '(int !"#b!$#c#K2; c!*intmalloc&1:$izeo6*int'; c!7;%!]; K9==>&b#>#c';  printf &1!<% 1b!<% 1c!<% 1%!<% K9!<%n##b#c#%#K9'; K1==>&#>b#c';  printf &2!<% 2b!<% 2c!<% 2%!<% K1!<%n##b#c#%#K1'; getch(); =ree&c'; return 9;+

R35 Qs!000 R/5 Q!... R%5 Qb!... RD5 Qc!... R'5 Q%!...

R5 1!... R5 1b!... R5 1c!... RW5 1%!... R3;5K9!...

R335Qs!000 R3/5Q!... R3%5Qb!... R3D5 Qc!... R3'5 Q%!...

R352!... R352b!... R352c!... R3W52%!... R/;5K1!...

N-tă R1# R2# R"# R$# R7 re,re8intă v)-ri)e ) ,riu) ,e) ) =unc*iei# ir

R11# R12# R1"# R1$# R17 re,re8intă v)-ri)e %in c%ru) =unc*iei c-res,un8ăt-re ce)ui %e ) %-i)e ,e) ) =unc*iei

 II. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOC8int IC; NOC ,St# ,Cr# ,Ant: NOC; S& e crie o ,uncţie ce preia adrea nodului r&d&cin& al ar"orelui 'i 'terge ultimul ni!el de noduri noduri,run*& J ,&r& decendenţi3 dac& acetea au I-uri impare.

#oid  %e)N-%Grun8Arb&NOC c,'(

+

Page 44: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 44/55

"ES" ,3'

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int =22; =+^; c-ut@@; R35......

/0 int #b=1$( =*++bJJ( c-ut@@; R/5000000

%0 int =1$#b=2;i6&& 1'>>&b?="'' =b; el$e  HH=b; c-ut@@;R%5......

D0 int =1$#b; b=*>7>*^); c-ut@@b; RD5......

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK907'; c-ut@@; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++;!*>cK"K2J/'0*BcK1+3';c-ut@@; R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!*+1'J*K9K101'; c-ut@@b;

R5000000000 -1ar str!AXCEG( strK$!strK9strK90A;strK7!strK$; c-ut@@str;

 

R5000000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

/

8 i∑ j=1

+

  8  j

a i"j−a i"i

∑k =1

.

8k double ,?double a4 double  "3

+

Page 45: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 45/55

"ES" ,3

I. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor linii de cod=

#include <stdio.h> 

#include <conio.h> 

int %;

int =>&int #int b#int >c'( $tati- int s;  int %;  %=J1; J=2; bJ="( c+=\( s++( 55%++(  printf &Qs!<% Q!<% Qb!<% Qc!<% Q%!<%n#s##b#c#%';  return +b+c+%;+int main&#oid '(int !$#b!7#c#K2; c!*intmalloc&1:$izeo6*int'; c!];%!6; K9==>&c#>#b';  printf &1!<% 1b!<% 1c!<% 1%!<% K9!<%n##b#c#%#K9'; K1==>&c#>b#';

  printf &2!<% 2b!<% 2c!<% 2%!<% K1!<%n##b#c#%#K1'; getch(); =ree&c'; return 9;+

R35 Qs!000 R/5 Q!... R%5 Qb!... RD5 Qc!... R'5 Q%!...

R5 1!... R5 1b!... R5 1c!... RW5 1%!... R3;5K9!...

R335Qs!000 R3/5Q!... R3%5Qb!... R3D5 Qc!... R3'5 Q%!...

R352!... R352b!... R352c!... R3W52%!... R/;5K1!...

N-tă R1# R2# R"# R$# R7 re,re8intă v)-ri)e ) ,riu) ,e) ) =unc*iei# irR11# R12# R1"# R1$# R17 re,re8intă v)-ri)e %in c%ru) =unc*iei

c-res,un8ăt-re ce)ui %e ) %-i)e ,e) ) =unc*iei

 II. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOC8int IC; NOC ,St# ,Cr# ,Ant: NOC; S& e crie o ,uncţie ce preia o adre& a unui nod oarecare dintr-un ar"ore 'i întoarce adrea nodului p&rintece conţine I-ul ma5im raportat la toate nodurile p&rinte din ierar<ia nodului preluat iniţial I-urile dincadrul ar"orelui unt generate aleator3.

 O r%Arb&NOC n-%_'(

+

Page 46: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 46/55

"ES" ,3

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int =27; =+^; c-ut@@; R35......

/0 int #b=17( =*JJb++( c-ut@@; R/5000000

%0 int =2"#b=1;i6&& 1'>>&b?"'' =b; el$e  HH=b; c-ut@@; R%5......

D0 int =17#b; b=*7>*)2; c-ut@@b; RD5......

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK71'; c-ut@@; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++;!*>cK9K9+/'0*>cK"J%';c-ut@@; R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!**+1'+1'+K1K2K1; c-ut@@b;

R5000000000 -1ar str!AXCEG( strK7!strK"strK90;strK]!&strK7strK"';c-ut@@str; 

R5000000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

1 8 i

∑ j=1

(

 8 j∑k =1

2 8k 

ai"j−a i"i

double ,?double a4 double  "3

+

Page 47: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 47/55

"ES" ,3

I. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor linii de cod=

#include <stdio.h> 

#include <conio.h> 

int %;int =>&int #int b#int >c'( $tati- int s;  int %;  %=J2; +=1; b+=$( cJ=2( s++( 55%++(  printf &Qs!<% Q!<% Qb!<% Qc!<% Q%!<%n#s##b#c#%';  return +b+c+%;+int main&#oid '(int !7#b!]#c#K2; c!*intmalloc&1:$izeo6*int'; c!6;%!^; K9==>&#c#b';  printf &1!<% 1b!<% 1c!<% 1%!<% K9!<%n##b#c#%#K9'; K1==>&b#>#c';  printf &2!<% 2b!<% 2c!<% 2%!<% K1!<%n##b#c#%#K1'; getch(); =ree&c'; return 9;+

R35 Qs!000 R/5 Q!... R%5 Qb!... RD5 Qc!... R'5 Q%!...

R5 1!... R5 1b!... R5 1c!... RW5 1%!... R3;5K9!...

R335Qs!000 R3/5Q!... R3%5Qb!... R3D5 Qc!... R3'5 Q%!...

R352!... R352b!... R352c!... R3W52%!... R/;5K1!...

N-tă R1# R2# R"# R$# R7 re,re8intă v)-ri)e ) ,riu) ,e) ) =unc*iei# ir

R11# R12# R1"# R1$# R17 re,re8intă v)-ri)e %in c%ru) =unc*iei c-res,un8ăt-re ce)ui %e ) %-i)e ,e) ) =unc*iei

 II. Se d& tructura nodurilor dintr-un ar"ore "inar a!Hnd I-urile nodurilor generate aleator=  tpede6 $tru-t NOC8int IC; NOC ,St# ,Cr# ,Ant: NOC; S& e crie o ,uncţie ce preia adrea r&d&cinii ar"orelui 'i întoarce adrea nodului cu I-ul minim.

 O >ICQArb&NOC c,'(

+

Page 48: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 48/55

"ES" ,3W

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int =2^; =+^; c-ut@@; R35......

/0 int #b=1]( =*++bJJ( c-ut@@; R/5000000

%0 int =12#b=1;i6&& 1'>>&b?="'' =b; el$e  HH=b; c-ut@@; R%5......

D0 int =1]#b; b=*J1)*>$; c-ut@@b; RD5......

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK7"'; c-ut@@; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++;!*>cK1J3'0*>cK1K2J3';c-ut@@; R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!*+1'0*K1K2J3JK9; c-ut@@b;

R5000000000 -1ar str!AXCEG( strK9!CstrK"0strK1;strK$!strK$; c-ut@@str;

 

R5000000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

/   ∑k =1

1

8k 

∑ j=1

2

 a  j"j−∑k =1

.

1

ak"j−ai"k 

double ,?double a4 double  "3

+

Page 49: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 49/55

"ES" ,/;

I. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor linii de cod=

#include <stdio.h> 

#include <conio.h> 

int %;int =>&int #int b#int >c'( $tati- int s;  int %;  %=+7; J=\; bJ=2( c+="( s++( 55%JJ(  printf &Qs!<% Q!<% Qb!<% Qc!<% Q%!<%n#s##b#c#%';  return +b+c+%;+int main&#oid '(int !]#b!6#c#K2; c!*intmalloc&1:$izeo6*int'; c!^;%!\; K9==>&c#>b#';  printf &1!<% 1b!<% 1c!<% 1%!<% K9!<%n##b#c#%#K9'; K1==>&b#c#';  printf &2!<% 2b!<% 2c!<% 2%!<% K1!<%n##b#c#%#K1'; getch(); =ree&c'; return 9;+

R35 Qs!000 R/5 Q!... R%5 Qb!... RD5 Qc!... R'5 Q%!...

R5 1!... R5 1b!... R5 1c!... RW5 1%!... R3;5K9!...

R335Qs!000 R3/5Q!... R3%5Qb!... R3D5 Qc!... R3'5 Q%!...

R352!... R352b!... R352c!... R3W52%!... R/;5K1!...

N-tă R1# R2# R"# R$# R7 re,re8intă v)-ri)e ) ,riu) ,e) ) =unc*iei# ir

R11# R12# R1"# R1$# R17 re,re8intă v)-ri)e %in c%ru) =unc*iei c-res,un8ăt-re ce)ui %e ) %-i)e ,e) ) =unc*iei

 II. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOC8int IC; NOC ,St# ,Cr# ,Ant: NOC; S& e crie o ,uncţie ce preia adrea nodului r&d&cin& 'i reali*ea*& 'tergerea din memorie tuturor noduriloral c&ror I ete par 'i în acela'i timp nodul p&rinte are I-ul impar. Se preupune c& aloc&rile de memoriei -au reali*at cu ,uncţia void: malloc(si3e#t).

#oid  %i,Arb&NOC c,'(

+

Page 50: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 50/55

"ES" ,/3

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int ="1; =+^; c-ut@@; R35......

/0 int #b=16( =*JJb++( c-ut@@; R/5000000

%0 int =\#b=1;i6&& H22'>>&b?="'' =b; el$e  HH=b; c-ut@@; R%5......

D0 int =16#b; b=*J7>*)G; c-ut@@b; RD5......

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK6$'; c-ut@@; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++; !*>cK9K9+2;c-ut@@; R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!*+1'0*K1K9+1'; c-ut@@b;

R5000000000 -1ar str!AXCEG( strK1!A0strK"strK1; strK$!strK$; c-ut@@str;

 

R500000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

/

8 i∑ j=1

+

∑m=1

.

am"j−∑k =1

. 8k 

ai"j−a i"i

double ,?double a4 double  "3

+

Page 51: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 51/55

"ES" ,//

I. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor linii de cod=

#include <stdio.h> 

#include <conio.h> 

int %;int =>&int #int b#int >c'( $tati- int s;  int %;  %=+2; J="; bJ=7( c+=1( s++( 55%++(  printf &Qs!<% Q!<% Qb!<% Qc!<% Q%!<%n#s##b#c#%';  return 0:b0c0%;+int main&#oid '(int !6#b!^#c#K2; c!*intmalloc&1:$izeo6*int'; c!\;%!19; K9==>&b#>#c';  printf &1!<% 1b!<% 1c!<% 1%!<% K9!<%n##b#c#%#K9'; K1==>&c#>#b';  printf &2!<% 2b!<% 2c!<% 2%!<% K1!<%n##b#c#%#K1'; getch(); =ree&c'; return 9;+

R35 Qs!000 R/5 Q!... R%5 Qb!... RD5 Qc!... R'5 Q%!...

R5 1!... R5 1b!... R5 1c!... RW5 1%!... R3;5K9!...

R335Qs!000 R3/5Q!... R3%5Qb!... R3D5 Qc!... R3'5 Q%!...

R352!... R352b!... R352c!... R3W52%!... R/;5K1!...

N-tă R1# R2# R"# R$# R7 re,re8intă v)-ri)e ) ,riu) ,e) ) =unc*iei# ir

R11# R12# R1"# R1$# R17 re,re8intă v)-ri)e %in c%ru) =unc*iei c-res,un8ăt-re ce)ui %e ) %-i)e ,e) ) =unc*iei

 II. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOC8int IC# nive); NOC ,St# ,Cr# ,Ant: NOC; S& e crie o ,uncţie ce preia adrea capului ar"orelui4 parcurge ar"orele 'i etea*& !aria"ila ni!el din cadrul,iec&rui nod cu ni!elul nodului din cadrul ar"orelui. Se conider& c& nodul r&d&cin& ete pe primul ni!el.

#oid  setNivArb&NOC c,'(

+

Page 52: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 52/55

"ES" ,/%

I. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=

1. int ="$; =+^; c-ut@@; R35......

/0 int #b=1^( =*++bJJ( c-ut@@; R/5000000

%0 int =29#b=2;i6&& 1'>>&b?=2'' =b; el$e  HH=b; c-ut@@;R%5......

D0 int =1^#b; b=*J$*)17; c-ut@@b; RD5......

'0 int #bK6!(11#1"#17#16#1\#21#2"+; !*>bK]]'; c-ut@@; R'5......

0 int  #cK$K"!((11#1"#17+#(21#2"#27+#("1#""#"7+#($1#$"#$7++;!&cK"J1'+&>cK9K1J1';c-ut@@; R5.......

0 int K2K"K2!(((19#12+#(1"#17+#(1$#1]++#((79#72+#(71#7"+#(7$#7]+++#b;b!+*K1K2J3+&K9+1'; c-ut@@b;

R5000000000 -1ar str!AXCEG( strK"!&strK"strK1';strK$!strK"; c-ut@@str;

 

R500000000000

II.S& e implemente*e o ,uncţie care întoarce !aloarea re*ultat&=

∑i=1

1

8 i∑ j=1

+

8 j−∑k =1

8k 

∑m=1

am"k −a i"idouble ,?double a4 double  "3

+

Page 53: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 53/55

"ES" ,/D

I. Ce e a,i'ea*& în urma e5ecuţiei urm&toarelor linii de cod=

#include <stdio.h> 

#include <conio.h> 

int %;int =>&int #int b#int >c'( $tati- int s;  int %;  %=J1; J=^; bJ=2( c+="( s++( 55%++(  printf &Qs!<% Q!<% Qb!<% Qc!<% Q%!<%n#s##b#c#%';  return +b+c+%;+int main&#oid '(int !^#b!\#c#K2; c!*intmalloc&1:$izeo6*int'; c!19;%!11; K9==>&c#>#b';  printf &1!<% 1b!<% 1c!<% 1%!<% K9!<%n##b#c#%#K9'; K1==>&#>b#c';  printf &2!<% 2b!<% 2c!<% 2%!<% K1!<%n##b#c#%#K1'; getch(); =ree&c'; return 9;+

R35 Qs!000 R/5 Q!... R%5 Qb!... RD5 Qc!... R'5 Q%!...

R5 1!... R5 1b!... R5 1c!... RW5 1%!... R3;5K9!...

R335Qs!000 R3/5Q!... R3%5Qb!... R3D5 Qc!... R3'5 Q%!...

R352!... R352b!... R352c!... R3W52%!... R/;5K1!...

N-tă R1# R2# R"# R$# R7 re,re8intă v)-ri)e ) ,riu) ,e) ) =unc*iei# irR11# R12# R1"# R1$# R17 re,re8intă v)-ri)e %in c%ru) =unc*iei

c-res,un8ăt-re ce)ui %e ) %-i)e ,e) ) =unc*iei

 

II. Se d& tructura nodurilor dintr-un ar"ore "inar=  tpede6 $tru-t NOC8int IC; NOC ,St# ,Cr# ,Ant: NOC; S& e crie o ,uncţie ce preia adrea nodului r&d&cin& 'i întoarce num&rul total al nodurilor din cadrular"orelui.

int cntN-%Arb&NOC c,'(

:

Page 54: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 54/55

"ES" ,/'

A. Scrieţi ce e a,i'ea*& în urma e5ecuţiei urm&toarelor intrucţiuni liniile unt independente34 iar în ca*ule5itenţei unor erori & e emnale*e*e erorile ap&rute în urma e5ecuţiei 'i ura acetora=3a0  int =22; =+2; ,rint=&<%[#'; R3a5......

3b0 int #b=19( =b00( ,rint=&<%[#'; R3b5000000

/ 0 int =19; a=2;,rint=&<%[#'; R/a5......

%0 int =19#b#c#%; b=*)19>*11; c! )3;; %!2;

$a ,rint=&<%[#c';R%a5... $  ,rint=&<%[#%'; R%b5... $c  ,rint=&<%[#b';

R%-5....

D0 int K2#bK6!(12#2"#"$#$7#7]#]6#6^+; K9!*>bK201'; K1!b;

-a.,rint=&<%[#K9'; RDa5...... - .,rint=&<%[#K1'; RDb5......

'0 int  K"#cK$K"!((19#2"#"$+#(11#22#1"+#("1#$2#""+#(1$#21#"1++;

K9!10*>cK9K1+3'; K1=*>cK1+3'; K2!c;

"a.,rint=&<%[#K9'; R'a5...... " .,rint=&<%[#K1'( R'b5000000

  "c .,rint=&<%[#K2'( R'-5000000

0 -1ar str ! AXCEG( strK1 ! strK101X;strK"!strK$&strK"01';

,rint=&<s[#str'( R5000

B. S& e implemente*e o ,uncţie double ,1double a4 double  "3 care preia matricea a Vi !ectorul " Vi

care întoarce !aloarea e5preiei=

∑i=1

\

(1−ai1)∑j=1

]

aij−∑k=1

^ bk

aij−ai1

"ES" ,/

S& e crie o ,uncţie

double 63*int m& double a& double -& double b care preia adreele matricilor Am5m4 Cm5m 'i a !ectorului "m .)uncţia întoarce=

∑k 

∑i

(1+aki cik )+∑i

8 i

2+∑k 

8k 

∑ j

∑i

a ik ckj

1. S& e crie o ,uncţie#oid 6/*un$ined lon x&un$ined $1ort $3&un$ined $1ort >-/

care reali*ea*& urm&toarele operaţii aupra !alorii 5=a3 cite'te în !aria"ila c2 primii ( "iţi din octetul cel mai puţin emni,icati!

ccccc000 J c repre*int& "iţii care e citec3 "3 crie conţinutul !aria"ilei 1 1+%3 în ultimii + "iţi ai octetului cel mai

emni,icati! 00sssss J repre*int& "iţii care e criu3

#. S& e crie o ,uncţie care preia adrea r&d&cinii unui ar"ore "inar 'i 'terge toate nodurile,run*& intiţiale. S& e crie tructura utili*at& pentru nodurile ar"orelui.

Page 55: Programare C - indrumar laborator

7/23/2019 Programare C - indrumar laborator

http://slidepdf.com/reader/full/programare-c-indrumar-laborator 55/55

BIBLIO7RAIE

7ttp'55www.unixinside.org5papers5#%%&oo05

http(//co#elite.org/)ain/*ea#)ore