Sunteți pe pagina 1din 10

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei

RAPORT
Lucrarea de laborator nr.1
Analiza si proiectarea algoritmilor

A efectuat:
st. gr. TI-162 Rbac Dumitru

A verificat:
lect., univ. Veronica Andrievschi-Bagrin

Chisinau 2017
LUCRAREA DE LABORATOR NR.1

Tema: Analiza algoritmilor


Scopul lucrrii:
1. Analiza empiric a algoritmilor.
2. Analiza teoretic a algoritmilor.
3. Determinarea complexitii temporale i asimptotice a algoritmilor

Mersul lucrarii:

Codul programului in C++:

#include<conio.h>
#include<stdio.h>
#include<math.h>
int count=0;
int fib3(int n){
int i,j,k,h;
i=1;
k=0;
j=0;
h=1;
int t;
while(n>0) {
count++;
if(n%2!=0)
{
int t=j*h;
j=i*h+j*k+t;
i=i*k+t;
}
t=h*h;
h=2*k*h+t;
k=k*k+t;
n=n/2;
}
return j;
}

int fibo(int n){


if (n==0){
count++;
return 0;}
else if (n==1){
count++;
return 1;}
else{
count++;
return fibo(n-1)+fibo(n-2);}
}

int main(){
int i,n,t1,t2,t3;
int num,rez,rezult;
int m;
Menu:
printf("Introduceti metoda de calcul a sirului :\n");
printf("1. Iterativa. \n");
printf("2. Recursiva. \n");
printf("3. Prin utilizarea formulei.\n");
printf("4. Exit.\n");
scanf("%d",&m);
switch(m){
case 1:
system("cls");
printf("Cate numere doriti sa fie afisare din
sirul Fibonacci ?: ");
scanf("%d",&n);
t1=0;
t2=1;
count=1;
for(i=1;i<n;i++){
t3=t1+t2;
t1=t2;
t2=t3;
printf("%d ",t3);
count++;
}
printf("\nContor: %d\n",count);
printf("\n Tastati ENTER pentru a reveni la
meniul principal ! ");
getch();
system("cls");
goto Menu;
break;

case 2:
system("cls");
printf("Introduceti numarul care doriti
din sirul lui Fibonacci: ");
scanf("%d",&num);
count=0;
rez=fibo(num);
printf("Elementul %d din sirul lui
Fibonacci este %d:\n",num,rez);
printf("Contor : %d",count) ;
printf("\n Tastati ENTER pentru a
reveni la meniul principal ! ");
getch();
system("cls");
goto Menu;
break;
case 3:
system("cls");
printf("Introduceri numarul care doriti
");
scanf("%d",&n);
count=0;
int rezult=fib3(n);
printf("\n Al %d numar este
%d",n,rezult);
printf("\n Contor : %d",count);
printf("\n Tastati ENTER pentru a
reveni la meniul principal ! ");
getch();
system("cls");
goto Menu;
break;
case 4:
exit(0) ;
}

getch();
return 0;
}
Reprezentarea rezultatelor

Tip N=10 55 N=20 6765 N=30 N=40 N=45


832040 102334155 1134903170

Iterativ 10 20 30 40 45

Recursiv 177 21891 2692537 331160281 622343491

Logaritmic 4 5 5 6 6

Iteratii

200

180

160

140

120
iteratii

100

80

60

40

20

0
5 10 15 20 25
N
Meniu:

Iterativ :
Recursiv :
Logaritmic.
Concluzie
In cadrul acestei lucrari de laborator am analizat 3 metode de calcul a sirului Fibonacci. Am
folosit metodele iterative, recursiva si prin formula lui Binet. Dupa calcule am observat ca cea
mai buna metoda este prin formula lui Binet,deoarece numarul de repetari este cel mai mic. Cel
mai nefavorabil caz este prin metoda recursiva, deoarece numarul de iteratii este foarte mare in
comparatie cu metoda iterativa si prin formula.

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