online: 10; azi: 486; total: 52492 Manual clasa a xi a - Tehnici de programare - Divide et impera

Manual clasa a Xi a

Tehnici de programare

Divide et impera

Desenaţi curba lui Koch, definită prin următoarele trei elemente, în care fiecare segment al generatorului are lungimea L/4, unde L este lungimea segmentului inițiator.
Pentru a desena curba lui Koch, putem utiliza o funcție recursivă și biblioteca graphics.h . Acesta este un exemplu de program care desenează curba lui Koch folosind graphics.h :
# include < iostream >
# include < graphics.h >
# include < cmath >
const int SCREEN_WIDTH = 800 ;
const int SCREEN_HEIGHT = 600 ;
void drawKochCurve ( int x1, int y1, int x2, int y2, int depth ) {
if ( depth <= 0 ) {
line (x1, y1, x2, y2);
return ;
}
int deltaX = x2 - x1;
int deltaY = y2 - y1;
int x3 = x1 + deltaX / 3 ;
int y3 = y1 + deltaY / 3 ;
int x4 = x1 + deltaX * 2 / 3 ;
int y4 = y1 + deltaY * 2 / 3 ;
int x5 = x1 + deltaX / 2 - deltaY / 6 ;
int y5 = y1 + deltaY / 2 + deltaX / 6 ;
drawKochCurve (x1, y1, x3, y3, depth - 1 );
drawKochCurve (x3, y3, x5, y5, depth - 1 );
drawKochCurve (x5, y5, x4, y4, depth - 1 );
drawKochCurve (x4, y4, x2, y2, depth - 1 );
}
int main () {
int gd = DETECT, gm ;
initgraph (& gd , & gm , "" );
int x1 = 50 ;
int y1 = SCREEN_HEIGHT / 2 ;
int x2 = SCREEN_WIDTH - 50 ;
int y2 = y1;
int depth = 4 ;
drawKochCurve (x1, y1, x2, y2, depth );
getch ();
closegraph ();
return 0 ;
}

Acest program desenează curba lui Koch utilizând o funcție recursivă drawKochCurve . Funcția acceptă coordonatele (x1, y1) și (x2, y2) ale segmentului curent și adâncimea maximă a recursiunii.
Pentru a rula acest cod, va trebui să ai instalat BGI ( Borland Graphics Interface ) pentru C++ și să configurezi mediul tău de dezvoltare pentru a utiliza această bibliotecă. Poți găsi o implementare a graphics.h pentru compilatoarele moderne precum GCC și MinGW aici: https://github.com/stbrumme/bgi