SHARE
TWEET

Untitled

a guest May 19th, 2017 44 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream> // input/output
  2. #include <windows.h> // nudojam Sleep i GetStdHandle funkcijom
  3. #include <cmath> // naudojam sinusam kosinusam
  4. #include <ctime> // naudojam laikui gauti
  5. #define CEN_X 30 // laikrodzio centro X koordinate
  6. #define CEN_Y 15 // laikrodzio centro Y koordinate
  7. #define SIM_S "-"  // kaip atrodys rodykles
  8. #define SIM_M "x"
  9. #define SIM_H "O"
  10.  
  11. #define PI 3.14159265
  12.  
  13. using namespace std;
  14.  
  15. void gotoxy(int x, int y) // funkcija, kuri nukelia konsoles zymekli i xy koordinates (ne as rasiau)
  16. {
  17. COORD coord;
  18. coord.X = x;
  19. coord.Y = y;
  20. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
  21. }
  22.  
  23. void getxypolar(double r, double laips, int &x, int &y);
  24. void printcircle(double r, int xc, int yc);
  25. void printdigits(double r, int xc, int yc);
  26. void printdigitsanim(double r, int xc, int yc, double laips);
  27. void printarr(double l, int xc, int yc, double laips, char simb[]);
  28.  
  29. int main()
  30. {
  31.     time_t seconds;
  32.     long lasts;
  33.     for(;;){
  34.         seconds = time(NULL); // gaunam laika nuo UNIX sistemos pradzios (1970-01-01 00:00)
  35.         if(seconds!=lasts){ // ar praejo sekunde?
  36.             system("cls");
  37.             printcircle(14.0,CEN_X,CEN_Y); // skaiciai :D
  38.             printdigits(12.0,CEN_X,CEN_Y); // ciferblatas (zinau kad sumaisyta :D)
  39.             int hour, min, sek;
  40.             hour=((seconds/3600)+3)%24; // +3 laiko zona LT (vasaros laikas)
  41.             min=(seconds/60)%60;
  42.             sek=seconds%60;
  43.             printarr(12.0,30,15,sek*6,SIM_S); // sekundziu rodykle
  44.             //printdigitsanim(12.0,CEN_X,CEN_Y,sek*6); // sekundes ratu
  45.             printarr(10.0,CEN_X,CEN_Y,min*6+sek*0.1,SIM_M); // min rodykle
  46.             printarr(5.0,CEN_X,CEN_Y,(hour%12)*30+min*0.5,SIM_H); // val rodykle
  47.             gotoxy(0,0);
  48.             cout << hour;
  49.             if(min<10)cout <<":0"<<min;       // digital laikrodzio formavimas
  50.             else cout <<":"<<min;
  51.             if(sek<10)cout <<":0"<<sek;
  52.             else cout <<":"<<sek;
  53.             lasts=seconds;
  54.             Sleep(100);  // taupom pc resursus
  55.             }
  56.         else Sleep(100);
  57.         }
  58.     system("PAUSE");
  59.     return EXIT_SUCCESS;
  60. }
  61.  
  62. void getxypolar(double r, double laips, int &x, int &y){ // apskaiciuoja x ir y koordinates is poliniu c formules
  63. double xco = r*cos(laips*PI/180);
  64. x= int(xco);
  65. double yco = r*sin(laips*PI/180);
  66. y= int(yco);
  67. }
  68.  
  69. void printdigits(double r, int xc, int yc){ // ciferblatas
  70.     double xco, yco;
  71.     int x, y;
  72.     for(double i=0;i<360;i++){
  73.     getxypolar(r,i,x,y);
  74.     gotoxy(x+xc, y+yc);
  75.     cout << ".";
  76.     }
  77. }
  78.  
  79. void printdigitsanim(double r, int xc, int yc, double laips){ // ratu einancis sekundes
  80.     double xco, yco;
  81.     int x, y;
  82.     for(double i=0;i<laips;i++){
  83.     getxypolar(r,i-90,x,y);
  84.     gotoxy(x+xc, y+yc);
  85.     cout << ".";
  86.     }
  87. }
  88.  
  89. void printcircle(double r, int xc, int yc){ //skaiciai (valandos)
  90.     double xco, yco;
  91.     int x, y, u=1;
  92.     for(double i=30;i<=360;i+=30){
  93.     getxypolar(r,i-90,x,y);
  94.     gotoxy(x+xc, y+yc);
  95.     cout << u;
  96.     u++;
  97.     }
  98. }
  99.  
  100. void printarr(double l, int xc, int yc, double laips, char simb[]){ // rodykliu spausdinimo funkcija
  101.    double xco, yco;
  102.     int x, y;
  103.     for(double i=0;i<l;i++){
  104.     getxypolar(i,laips-90,x,y);
  105.     gotoxy(x+xc, y+yc);
  106.     cout << simb;
  107.     }
  108. }
RAW Paste Data
Top