Animație a ciurului lui Eratostene în graphics.h (include codul sursă)
/* *Realizat de Bratosin David - Robert. *Daca doriti sa utilizati o parte din cod, mentionati autorul! */ #include <iostream> #include <graphics.h> #include <cmath> #include <bitset> #include <cstdio> #include <ctime> #include <mmsystem.h> #define NMAX 226 #define MarimePatrat 45 using namespace std; bitset <226> E; //int Culori[] = {14,10,9,12,13,7,1,2}; int i,j; struct Coordonate { int x; int y; }tabelColtStangaSus,tabelColtDreaptaJos; Coordonate TranslateLC(int l, int c); void colorarePatrat(Coordonate DesenarePC, int culoare); void TextPatrat(Coordonate TextPC, int nr); void Initializare(); void Desenare_Tabel(); void Ciurul_lui_Eratostene(); void Finalizare(); int main() { Initializare(); Desenare_Tabel(); Ciurul_lui_Eratostene(); Finalizare(); return 0; } Coordonate TranslateLC(int l, int c) { Coordonate PozitieLC; PozitieLC.x=tabelColtStangaSus.x+(c-1)*MarimePatrat+1; PozitieLC.y=tabelColtStangaSus.y+(l-1)*MarimePatrat+1; return PozitieLC; } void colorarePatrat(Coordonate DesenarePC, int culoare) { setfillstyle(SOLID_FILL,culoare); bar(DesenarePC.x,DesenarePC.y,DesenarePC.x + MarimePatrat-1, DesenarePC.y+MarimePatrat-1); } void TextPatrat(Coordonate TextPC, int nr,int culoare) { char text[50]; sprintf(text, "%d", nr); settextjustify(CENTER_TEXT,CENTER_TEXT); settextstyle(3,HORIZ_DIR,2); setcolor(culoare); outtextxy(TextPC.x+MarimePatrat/2, TextPC.y+MarimePatrat/2,text); } void Initializare() { initwindow(1366,800,"Ciurul lui Eratostene by BatedCrayon"); settextstyle(7,HORIZ_DIR,4); outtextxy(340,10,"Ciurul lui Eratostene reprezentare vizuala"); line(0,45,1366,45); settextstyle(10,HORIZ_DIR,1); outtextxy(1200,780,"By BatedCrayon"); outtextxy(10,780,"versiunea 1.1.1"); } void Desenare_Tabel() { int MarimeTabel= sqrt(NMAX-1)*MarimePatrat; tabelColtStangaSus.x=getmaxx()/2-MarimeTabel/2; tabelColtStangaSus.y=getmaxy()/2-MarimeTabel/2; tabelColtDreaptaJos.x=tabelColtStangaSus.x+MarimeTabel; tabelColtDreaptaJos.y=tabelColtStangaSus.y+MarimeTabel; rectangle(tabelColtStangaSus.x,tabelColtStangaSus.y,tabelColtDreaptaJos.x,tabelColtDreaptaJos.y); for(i=1; i < sqrt(NMAX-1); i++ ) { line(tabelColtStangaSus.x, tabelColtStangaSus.y+i*MarimePatrat, tabelColtDreaptaJos.x, tabelColtStangaSus.y+i*MarimePatrat); line(tabelColtStangaSus.x+i*MarimePatrat, tabelColtStangaSus.y, tabelColtStangaSus.x+i*MarimePatrat, tabelColtDreaptaJos.y); } TextPatrat(TranslateLC(1,1),1,WHITE); for(i=1; i<NMAX-1; i++) TextPatrat(TranslateLC(i/15+1,i%15+1),i+1,WHITE); } void Ciurul_lui_Eratostene() { int p=0; colorarePatrat(TranslateLC(1,1),LIGHTRED); setbkcolor(LIGHTRED); TextPatrat(TranslateLC(1,1),1,BLACK); delay(175); colorarePatrat(TranslateLC(1,1),YELLOW); setbkcolor(YELLOW); TextPatrat(TranslateLC(1,1),1,BLACK); for(i=2; i<=NMAX-1; i++) E[i]=1; for(i=2; i<=NMAX-1; i++) { if(E[i]!=0) { colorarePatrat(TranslateLC(i/15+1,i%15),GREEN); setbkcolor(GREEN); TextPatrat(TranslateLC(i/15+1,i%15),i,BLACK); for(j=2; j<=(NMAX-1)/i; j++) { E[i*j]=false; colorarePatrat(TranslateLC((i*j-1)/15+1,(i*j-1)%15+1),LIGHTRED); setbkcolor(LIGHTRED); TextPatrat(TranslateLC((i*j-1)/15+1,(i*j-1)%15+1),i*j,BLACK); delay(325); colorarePatrat(TranslateLC((i*j-1)/15+1,(i*j-1)%15+1),YELLOW); setbkcolor(YELLOW); TextPatrat(TranslateLC((i*j-1)/15+1,(i*j-1)%15+1),i*j,BLACK); } p++; } } } void Finalizare() { setcolor(LIGHTGREEN); setbkcolor(BLACK); settextstyle(8,HORIZ_DIR,2); settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(680,780,"Terminat! Apasati orice tasta pentru a opri programul..."); //PlaySound(TEXT("terminat.wav"),NULL,SND_SYNC); getch(); cleardevice(); closegraph(); }
Gândurile lui 2espre “Animație a ciurului lui Eratostene în graphics.h (include codul sursă)”