Додатки
Текстовий комп’ютерний годинник:
Програма повинна забезпечувати читання та встановлення системної дати та часу;
Хід годинника та дати зобразити у вікні екрану у цифровій формі;
Забезпечити встановлення розміру зображення годинника та дати;
Для зображення цифр використати сиволи псевдографіки;
Програма повинна бути реалізована на мові С/С++;
Програма повинна працювати у вікні MSDOS під керуванням операційної системи Windows;
Програма повинна мати інтерфейс та меню для вибору режимів її роботи;
Керування режимами роботи програми виконати за допомогою клавіатури та миші.
Текст програми:
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#define MOUSE 0x33
const float PI = 3.1415926535;
int sec, min, hr;
struct time t;
struct dosdate_t d;
struct mn
{
unsigned x1,y1,x2,y2;
};
struct tt
{
unsigned x,y;
};
char p[8] = {0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55};
char strhr[5] = "",strmin[5] = "",strsec[5] = "";//Store date.
char strdate[30];
//список днів
char strday[][3]={"01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"};
//список місяців
char strmonth[][9]={"СІЧЕНЬ","ЛЮТИЙ", "березень", "квітень", "ТРАВЕНЬ", "ЧЕРВЕНЬ", "ЛИПЕНЬ", "СЕРЕНЬ", "ВЕРЕСЕНЬ", "ЖОВТЕНЬ", "ЛИСТОПАД", "ГРУДЕНЬ"};
char stryr[5] = "";
//список днів тижня
char strwday[][10] = {"неділя", "понеділок", "вівторок", "середа ", "четвер", "П'ЯТНИЦЯ", "субота "};
void mouseon(void)
{
union REGS inregs;
union REGS outregs;
inregs.x.ax = 1;
int86(MOUSE, &inregs, &outregs);
}
void mouseoff(void)
{
union REGS inregs;
union REGS outregs;
inregs.x.ax = 2;
int86(MOUSE, &inregs, &outregs);
}
void mousestatus(int *row, int *column, int *buttonstatus)
{
union REGS inregs;
union REGS outregs;
inregs.x.ax = 3;
int86(MOUSE, &inregs, &outregs);
*column = ((outregs.x.cx)/8)*8;
*row = ((outregs.x.dx)/8)*8;
*buttonstatus = outregs.x.bx;
}
void DrawMenu()
{
setlinestyle(SOLID_LINE,1,1);
setfillstyle(1,3);
bar(0,0,getmaxx(),30);
setcolor(EGA_BLUE);
outtextxy(12,10,"MADE BY LOKI");
outtextxy(getmaxx()-50,10,"EXIT");
setcolor(EGA_WHITE);
rectangle(0,0,getmaxx(),30);
}
void menu()
{ int gdriver = DETECT, gmode, errorcode;
int pos_x,pos_y,i,j;
char ch[1]="";
char *temp="";
initgraph(&gdriver,&gmode,"");
mouseon();
DrawMenu();
int row,col,buttonstatus=0;
while (1)
{
mousestatus(&row,&col,&buttonstatus);
//EXIT
if((buttonstatus==1)&&((row>=0)&&(row<=30))&&((col>=getmaxx()-50)&&(col<=getmaxx())))
{
row=400;
col=400;
mouseoff();
cleardevice();
closegraph();
}
}}
void main ()// початок програми
{
int z;
puts("ВВЕДІТЬ БАЖАНИЙ РОЗМІР ШРИФТА ДЛЯ ВІДОБРАЖЕННЯ ЧАСУ (1….5) ->");
scanf("%d",&z);
int gd = DETECT, gm; //ініціалізація графічного режиму
sec = min = hr = 0;
initgraph (&gd, &gm, "E:\\tc\\bgi");
clrscr;
setfillstyle (SOLID_FILL,DARKGRAY); // колір фону
bar (0, 0, 639, 479); // фон
setcolor (RED); // обідок циферблату
setfillstyle (SOLID_FILL, BLACK);
fillellipse (320, 240, 200, 300); // циферблат
setcolor (BLUE); // другий циферблат
setfillstyle (SOLID_FILL,BLUE);
fillellipse (320, 240, 190, 190);
setcolor (BLACK); // внутрішній фон
setfillstyle (SOLID_FILL,GREEN);
fillellipse (320, 240, 150, 150);
settextstyle(1,0,3); // допоміжні написи
setcolor(BLACK);
outtextxy(275,160,"T I M E :");
outtextxy(275,240,"D A T E :");
setfillpattern (p, BLACK);
bar (510, 215, 535, 265); // кнопка 
bar (525, 220, 540, 260);
setfillpattern(p,BLACK);
bar(510,215,535,219);
setfillpattern(p,BLACK);
bar(510,261,535,265);
setfillstyle (SOLID_FILL, WHITE); //рамка для дати
bar (210, 270, 415, 310);
setcolor (DARKGRAY);
rectangle (210, 270, 415, 310);
setcolor (BLACK);
rectangle (211, 271, 414, 309);
setcolor (WHITE);
line (210, 310, 416, 310);
line (416, 310, 416, 270);
setcolor (LIGHTGRAY);
rectangle (212, 272, 413, 308);
while( ! kbhit() ){
gettime (&t);//зчитування дати і часу
sec = t.ti_sec;
min = t.ti_min;
hr = t.ti_hour;
itoa (hr, strhr, 10); // перевід із числа в стрічку
if( strlen (strhr) == 1)
{
strhr[2] = '\0';
strhr[1] = strhr[0];
strhr[0] = '0';
}
itoa (min, strmin, 10); // перевід із числа в стрічку
if( strlen (strmin) == 1)
{
strmin[2] = '\0';
strmin[1] = strmin[0];
strmin[0] = '0';
}
itoa (sec, strsec, 10); // перевід із числа в стрічку
if( strlen (strsec) == 1)
{
strsec[2] = '\0';
strsec[1] = strsec[0];
strsec[0] = '0';
}
_dos_getdate (&d); //додавання в структуру
strcpy (strdate, strwday[d.dayofweek]);strcat (strdate, ",");
strcat (strdate, strmonth[d.month-1]);strcat (strdate, " ");
strcat (strdate, strday[d.day-1]);strcat (strdate, ",");
itoa (d.year, stryr, 10);
strcat (strdate, stryr);
setcolor(BLACK); //вивід дати
settextstyle (0, 0, 1);
moveto (225, 290);outtext (strdate);
setcolor (BLACK); //вивід часу
settextstyle (1, 0, z);
moveto (235, 185);
outtext (strhr);outtext (":");
outtext (strmin);outtext (":");
outtext (strsec);
delay (900); setcolor(LIGHTGRAY);
setlinestyle (SOLID_LINE, 0, 3);
setlinestyle (SOLID_LINE, 0, 1);// рамка для часу
setfillstyle (SOLID_FILL, WHITE);
bar (210, 187, 420, 240);
setcolor (BLACK);
rectangle (211, 188, 419, 239);
setcolor (DARKGRAY);
line (210, 240, 210, 187);
line (210, 187, 420, 187);
setcolor (WHITE);
line (210, 240, 420, 240);
line (360, 240, 420, 187);
setcolor (LIGHTGRAY);
rectangle (212, 189, 418, 238);
// menu();
}
}
В результаті виконання програми:

Рис 1.( Екран вибору розміру шрифта)

Рис 2.(Годинник)