Documente Academic
Documente Profesional
Documente Cultură
RAPORT
VARIANTA 5.1.3
A efectuat: st.gr.TI-192
Ciobanu Ecaterina
A verificat: asist.univ.
Cristina Josan
CHIŞINĂU – 2020
Tema: Metode și tehnici de programare
Scopul lucrării: Studierea și identificarea problemele care se pot rezolva cu metodele: Divide
et Impera, inclusiv și algoritmi de căutare și sortare (MergeSort, QuickSort și căutarea
binară), Backtracking, Greedy, Programarea dinamică. Implementarea algoritmilor de rezolvare bazați pe
aceste metode.
PARTEA TEORETICĂ
problema dată se descompune în două (sau mai multe) subprobleme (de același tip ca problema inițială,
dar de dimensiuni mai mici);
se rezolvă independent fiecare subproblemă;
se combină rezultatele obținute pentru subprobleme, obținând rezultatul problemei inițiale.
Subproblemele trebuie să fie de același tip cu problema inițială, ele urmând a fi rezolvate prin aceeași
tehnică.
Subproblemele în care se descompun problema dată trebuie să fie:
Eficiența algoritmului:
Din punct de vedere al timpului de execuţie, algoritmul pentru generarea fractalului ”fulgul
lui Koch” execută de 3 ori funcţia recursivă „koch_line” care, pentru fiecare iteraţie, se mai
apeleza de incă 4 ori, rezultând astfel 3*4 n , adică un ordin de complexitate exponenţial, cu
exponentul „n” => O(4 n ).
PARTEA PRACTICĂ
float pi=3.14;
struct punct{
double x, y;
};
int iteratii;
int l; //dimensiunea ferestrei
int dly = 2; //delay
int main()
{
int gd=DETECT, gm;
initgraph(&gd,&gm,NULL);
punct A, B, C;
A.x = getmaxx()/2-l/2; A.y = getmaxy()/2+l*sqrt(3)/6;
B.x = getmaxx()/2+l/2; B.y = A.y;
C = punct_mij(B, A);
koch_snowflake(A, B, C);
getch();
closegraph();
return 0;
}
Analiza programului:
Liniile 1-5 reprezintă o directivă de preprocesare pentru a include funcțiile limbajului
Liniile 10-12 constau din defineare unui struct punt care conține 2 câmpuri, coordonata x și y a punctului
Funcția punct_treime returneaza coordonatele punctului de pe segmentul AB situat la 1/3 de A
Funcția punct_mij returnează punctul care împreună cu AB formează un triunghi echilateral
Funcția draw desenează o liniie frântă care unește în ordine punctele ebținute
Linia 34 are funcția lineto care deseanează o linie de la un punt la altul
Funcția koch_line Imparte segmentul in 3 subsegmente generand al treilea punct(varful triunghiului cu
subsegmentul din mijloc ca baza)
Funcția koch_snowflake apeleaza functia de generat puncte pe fiecare din laturile unui triunghi initial
Linia 63 inițializează imaginea grafică
Linia 75 apelează funcția kock_snowflake
Linia 78 închide imaginea grafică
Rezultatele obținute:
CONCLUZIE
Lucrarea de laborator nr.7 este o inițiativă de a acumula deprinderi de a lucra cu metodele de
programare, în cazul sarcinii mele cu metoda Divide et Impera. Sarcina lucrării a fost de a desena fractalul
lui Koch. Pentru a realiza sarcina am învățat tehnicile de lucru cu biblioteca grafică și am învățat a folosi
funcții ale bibliotecii precum line, linto, moveto, de a inițializa și de a închide o fereastră grafică. În uram
rulării codului pot afirma că programul lucrează corect și desenează corect conturul Fulgului lui Kock.
BIBLIOGRAFIE
1. Indicațiile metodice
2. https://sites.google.com/site/andresoiumocanu/curba-lui-koch
3. Programare în limbajul C/C++. Metode și tehnici de programre. Îndrumar de laborator, Josan
Cristina, Chișinău 2020
4. Code::Blocks Manual, S. Prasad, F. Aibara, Department of Computer Science and EngineeringIndian
Institute of Technology - BombayMumbai - 400076.August 5, 2014