online: 6; azi: 1155; total: 53161 Manual clasa a xi a - Tehnici de programare - Divide et impera

Manual clasa a Xi a

Tehnici de programare

Divide et impera

Să se deseneze figura geometrică obținută astfel: se desenează un pătrat cu latura L, se desenează un pătrat care uneşte mijloacele laturilor pătratului iniţial şi se repetă acest proces de n ori pentru fiecare pătrat obținut.
Pentru a desena figura geometrică descrisă, putem utiliza o funcție recursivă și biblioteca graphics.h . Acesta este un exemplu de program care desenează figura folosind graphics.h :
# include < iostream >
# include < graphics.h >
# include < cmath >
const int SCREEN_WIDTH = 800 ;
const int SCREEN_HEIGHT = 600 ;
void drawSquare ( int x, int y, int length , int depth ) {
if ( depth <= 0 ) {
return ;
}
int half_length = length / 2 ;
// Desenează pătratul curent
rectangle (x, y, x + length , y + length );
// Calculează coordonatele pentru cele 4 pătrate mai mici
int new_x1 = x + half_length / 2 ;
int new_y1 = y - half_length / 2 ;
int new_x2 = x + 3 * half_length / 2 ;
int new_y2 = y - half_length / 2 ;
int new_x3 = x + half_length / 2 ;
int new_y3 = y + 3 * half_length / 2 ;
int new_x4 = x + 3 * half_length / 2 ;
int new_y4 = y + 3 * half_length / 2 ;
drawSquare (new_x1, new_y1, half_length , depth - 1 );
drawSquare (new_x2, new_y2, half_length , depth - 1 );
drawSquare (new_x3, new_y3, half_length , depth - 1 );
drawSquare (new_x4, new_y4, half_length , depth - 1 );
}
int main () {
int gd = DETECT, gm ;
initgraph (& gd , & gm , "" );
int length = 200 ;
int x = (SCREEN_WIDTH - length ) / 2 ;
int y = (SCREEN_HEIGHT - length ) / 2 ;
int depth = 4 ;
drawSquare (x, y, length , depth );
getch ();
closegraph ();
return 0 ;
}

Acest program desenează figura geometrică utilizând o funcție recursivă drawSquare . Funcția acceptă coordonatele x și y ale colțului stânga-sus al pătratului curent, lungimea laturii pătratului ș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