Skocz do zawartości

[c++]problem z programem zegar.


daniel88ek

Polecane posty

Witam.mam problem.ten programik źle wskazuje mi sekundy.o jedną sekundę za wcześnie.i nie wiem jak mam to zrobić aby działało prawidłowo.

 #include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <dos.h>



int midx,midy;

int main(void)
{
  struct time t;                                     
  struct date d;
  int i;
  /* request auto detection */
  int gdriver = DETECT, gmode, errorcode;

  int mVal;
  int stangle = 0, endangle = 360;
  int radius = 150;

  /* initialize graphics, local variables */
  initgraph(&gdriver, &gmode, "");

  /* read result of initialization */
  errorcode = graphresult();
  if (errorcode != grOk)
  /* an error occurred */
  {
     printf("Graphics error: %s\n", grapherrormsg(errorcode));
     printf("Press any key to halt:");
     getch();
     exit(1);
  /* terminate with an error code */
  }

  midx = getmaxx() / 2;
  midy = getmaxy() / 2;
  setcolor(getmaxcolor());

  /* draw ellipse */

  ellipse(midx, midy,stangle,endangle,radius,radius);

  for(i=0;i<12;i++)                                                           /*rysuje 12 elips jako wskażniki godzin */
  fillellipse(midx-(int)radius*sin(i*M_PI/6),midy-(int)radius*cos(i*M_PI/6),
         radius/10,radius/10);

  do{
  gettime(&t);
  getdate(&d);
  mVal=t.ti_hour*60+t.ti_min;
  setcolor(RED);
  line(midx,midy,midx-(int)(0.45*radius*sin(-mVal*M_PI/360)),midy-(int)(0.45*radius*cos(-mVal*M_PI/360)));        //wskazowki godzin
  setcolor(GREEN);
  line(midx,midy,midx-(int)(0.85*radius*sin(-t.ti_min*M_PI/30)),midy-(int)(0.85*radius*cos(-t.ti_min*M_PI/30)));  //wskazowki min
  setcolor(BLUE); 
  line(midx,midy,midx-(int)(0.85*radius*sin(-t.ti_sec*M_PI/30)),midy-(int)(0.85*radius*cos(-t.ti_sec*M_PI/30)));  //wskazowki sec - tu wlasnie problem.
  sleep(1);
  setcolor(BLACK);
  line(midx,midy,midx-(int)(0.45*radius*sin(-mVal*M_PI/360)),midy-(int)(0.45*radius*cos(-mVal*M_PI/360)));
  line(midx,midy,midx-(int)(0.85*radius*sin(-t.ti_min*M_PI/30)),midy-(int)(0.85*radius*cos(-t.ti_min*M_PI/30)));
  line(midx,midy,midx-(int)(0.85*radius*sin(-t.ti_sec*M_PI/30)),midy-(int)(0.85*radius*cos(-t.ti_sec*M_PI/30)));
  gotoxy(1,1);
  printf("%d %d %d",d.da_day,d.da_mon,d.da_year);
  gotoxy(73,1);
  printf("%2d %02d %02d",t.ti_hour,t.ti_min,t.ti_sec);
  }
  while(!kbhit());
  /* clean up */
  getch();
  closegraph();
  return 0;
}

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...