Sunteți pe pagina 1din 2

Tipuri structurate de date

Tablouri
Ex.1 Se consider un polinom cu coeficieni reali de grad n. S se determine valoarea polinomului ntr-un punct
dat.
Indicatie :
P
n
(x) a
!
x
n
"a
1
x
n-1
# ...# a
n-1
x
1
"a
n
unde e suficient specificarea gradului polinomului (a indicelui n) $i a sirului
finit de coeficienti: a
!
# a
1
# ...# a
n
. Se poate defini valoarea polinomului p ntr-un punct x ca fiind valoarea functiei
polinomiale atasate:
P
n
(x) a
!
x
n
"a
1
x
n-1
# ...# a
n-1
x
1
"a
n


Descrierea algoritmului in pseudocod.
start
scrie %n#x&
citeste n#x
pentru i! la n executa
inceput
scrie %a
i
&
citeste a
i
sfarsit
pa
!
'
pentru i1 la n executa pp ( x " a
)
scrie %p(%#x#&)&#p
sfarsit
Descrierea programului in C.
Se va utili*a o varia+il ta+lou cu numele a pentru memorarea coeficienilor polinomului.
,include -stdio../
void main(void)
0
int n# i'
float x# p# a12!3'
printf(45n dati n#x 4)'
scanf(46d6f7#8n#8x)'
for(i!' i-n' i"")
0
printf(45n a(6d)7#i)'
scanf(46f7#8a1i3)'
9
p a1!3'
for(i1' i-n' i"") pp(x"a1i3'
printf(45n p(6f)6f7# x# p)'
9
Exemplul 2. Sa se determine al toti termeni din $irul lui :i+onacci# pentru un numr natural n dat.
Analiza problemei.
;ermenii sirul lui :i+onacci sunt specificatt de urmatoarea relatie de recurenta:
a
!
!# a
1
1#
a
i
a
i-1
"a
i-2
# pentru <2.
Descrierea algoritmului in pseudocod.
start
scrie %n&
citeste n
a
!
!
a
1
1
scrie %sirul fi+onacci!#1&
pentru i2 la n executa
inceput
a
i
a
i-1
"a
i-2
scrie %#&# a
)
sfarsit
sfarsit
algoritmul poate fi rescris:
start
scrie %n&
citeste n
f! !
f1 1
scrie %sirul fi+onacci!#1&
pentru i2 la n executa
inceput
f f1"f!
scrie %#&# f
f!f1
f1f'
sfarsit
sfarsit
Descrierea programului in C.
=a implementarea celor doi algoritmi se o+serva consumul mai mare de memorie in ca*ul primei
variante (necesarul de memorie este alt criteriu de evaluare al programelor# in afara de evaluarea timpului de
execuie).
varianta 1:
,include -stdio../
void main(void)
0
int n# i# a12!3'
printf(45n dati n 4)'
scanf(46d7# 8n)'
a1!3 !'
a113 1'
printf(45n sirul :i+onacci:!#17)'
for(i2' i-n' i"")
0
a1i3 a1i-23"a1i-13'
printf(4#6d7#a1i3)'
9
9
varianta 2:
,include -stdio../
void main(void)
0
int n# i# f!# f1# f'
printf(45n dati n 4)'
scanf(46d7# 8n)'
f! !'
f1 1'
printf(45n sirul :i+onacci:!#17)'
for(i2' i-n' i"")
0
f f!"f1'
printf(4#6d7#f)'
f!f1'
f1f'
9
9