#include #include #include #include<stdlib.h> #include<dos.h> #include<math.h> int a,b,x,y,R=195,r=R+20,r1=r+20,r_sec=R-5,r_min=R-20,r_ora=R-40; // R=raza cercului cu galben // r=distanta fata de centru la care scriu orele si minutele // r1=raza cercului cu albastru // r_sec=raza secundarului // r_min=raza minutarului // r_ora=raza orarului // culculez abscisa void abscisa( double i, int raza) { x=a+raza*cos(i*M_PI/30-M_PI/2); } // calculez ordonata void ordonata( double i, int raza) { y=b+raza*sin(i*M_PI/30-M_PI/2); } // afisez orele si minutele void ore() { int i; char s[3]; setfillstyle(1,LIGHTGREEN); settextstyle(3,0,3); for(i=1;i<=60;i++) { abscisa(i,r); ordonata(i,r); if(i%5==0) { itoa(i/5,s,10); settextjustify(1,1); outtextxy(x,y,s); } else fillellipse(x,y,2,2); } } // calculez panta unei drepte double panta( double x) { if(x!=15 && x!=30 && x!=45 && x!=60) return -1/tan(x*M_PI/30-M_PI/2); else return 0; } // formez vectorul cu coordonatele void formare_vector( int v[10], double k, int raza, int d) { // k=secunda/minut/ora +...
double difx,dify; abscisa(k,raza); ordonata(k,raza); if(k==15 || k==45) { v[0]=a; v[1]=b-d; v[2]=a; v[3]=b+d; } else if(k==30 || k==60) { v[0]=a+d; v[1]=b; v[2]=a-d; v[3]=b; } else { difx=d/sqrt(panta(k)*panta(k)+1); dify=panta(k)*d/sqrt(panta(k)*panta(k)+1); v[0]=a+difx; v[1]=b+dify; v[2]=a-difx; v[3]=b-dify; } v[4]=x; v[5]=y; } // desenez secundarul void ac_secundar( int secunda) { int v[10],d=10; formare_vector(v,secunda,r_sec,d); setcolor(MAGENTA); setfillstyle(1,MAGENTA); fillpoly(3,v); setcolor(DARKGRAY); setfillstyle(1,LIGHTCYAN); fillellipse(a,b,10,10); delay(1000); setcolor(YELLOW); setfillstyle(1,YELLOW); fillpoly(3,v); } // desenez minutarul void ac_minutar( int minut, int secunda, int ok) { int v[10],d=15; if(ok==1) { formare_vector(v,minut+(double)secunda/60,r_min,d); setcolor(GREEN); setfillstyle(1,GREEN); fillpoly(3,v); } else
{ formare_vector(v,minut+(double)secunda/60,r_min,d); setcolor(YELLOW); setfillstyle(1,YELLOW); fillpoly(3,v); } } // desenez orarul void ac_orar( int ora, int minut, int secunda, int ok) { int v[10],d=23; if(ok==1) { formare_vector(v,ora*5+(double)minut/12+(double)secunda/720,r_ora,d); setcolor(BROWN); setfillstyle(1,BROWN); fillpoly(3,v); } else { formare_vector(v,ora*5+(double)minut/12+(double)secunda/720,r_ora,d); setcolor(YELLOW); setfillstyle(1,YELLOW); fillpoly(3,v); } } // data sistem void get_data() { int an,luna,zi; struct date data; getdate(&data); an=data.da_year; luna=data.da_mon; zi=data.da_day; char s_an[6],s_zi[5]; char a[13][20]={ "","ianuarie","februarie", "martie","aprilie","mai","iunie", "iulie","august","septembrie", "octombrie","noiembrie","decembrie"}; itoa(an,s_an,10); itoa(zi,s_zi,10); setfillstyle(1,WHITE); bar(10,20,175,40); settextstyle(0,0,1); settextjustify(1,1); setcolor(DARKGRAY); outtextxy(25,30,s_zi); outtextxy(83,30,a[luna]); outtextxy(152,30,s_an); } // ora sistem void get_timp( int &ora, int &minut, int &secunda) { struct time timp; gettime(&timp); ora=(double)timp.ti_hour;
if(ora>12) ora=ora-12; minut=(double)timp.ti_min; secunda=(double)timp.ti_sec; } // cercurile galben si albasttru void cercuri() { setcolor(WHITE); setfillstyle(1,BLUE); fillellipse(a,b,r1,r1); setfillstyle(1,YELLOW); fillellipse(a,b,R,R); } void my_name() { setcolor(WHITE); settextstyle(2,0,2); settextjustify(1,1); outtextxy(590,440,"petronela danila"); outtextxy(590,450,"XI C"); outtextxy(590,460,"ianuarie 2007"); } void main() { int gd=DETECT,gm,secunda,minut,ora; initgraph(&gd,&gm,"F:\\tclite\\bgi"); setbkcolor(RED); a=getmaxx()/2; b=getmaxy()/2; my_name(); cercuri(); ore(); get_timp(ora,minut,secunda); for( ;ora<=13;ora++) { get_data(); for( ;minut<=60;minut++) { for( ;secunda<=60;secunda++) { ac_orar(ora,minut,secunda,1); ac_minutar(minut,secunda,1); ac_secundar(secunda); ac_minutar(minut,secunda,0); ac_orar(ora,minut,secunda,0); } secunda=1; } minut=1; if(ora==13) ora=1; } closegraph(); }