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ă)”

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

iunie 2018
L Ma Mi J V S D
 123
45678910
11121314151617
18192021222324
252627282930