0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
1

Изобразить на экране работающие электронные часы с цифровым индикатором

08.07.2016, 13:10. Показов 2591. Ответов 19
Метки нет (Все метки)

Электронные часы. Изобразить на экране работающие электронные с цифровым индикатором (каждая цифра изображается на 7-сегментном шаблоне). При недопустимости встроенного таймера ЭВМ реализовать его с помощью настроенных циклов, задавая стартовое время при запуске программы. (В паскале).
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2016, 13:10
Ответы с готовыми решениями:

Электронные часы
3. Текущее показание электронных часов: m ч (0 ≤ m ≤ 23) п мин (0≤ n ≤ 59) kc...

Электронные часы
У нас есть электронные часы (см. во вложении). Обратите внимание: первый элемент (для отображения...

Электронные часы
Написать программу, которая выводит на экран работающие "электронные часы", которые работают в...

Изобразить "электронные часы"
Написать программу, которая выводит на экран работающие "электронные часы", которые работают в...

19
Эксперт Pascal/Delphi
6799 / 4560 / 4815
Регистрация: 05.06.2014
Сообщений: 22,438
09.07.2016, 09:24 2
Электронные часы
Программа, которая работает как настенные/электронные часы
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
09.07.2016, 10:28 3
MatWalkers, Паскаль какой?
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
10.07.2016, 13:18  [ТС] 4
ABC
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
10.07.2016, 13:21 5
просто АВС или АВС.net?
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
10.07.2016, 13:28  [ТС] 6
abc.net
0
Puporev
10.07.2016, 13:35
  #7

Не по теме:

Как партизан на допросе в гестапо..

0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
10.07.2016, 13:53  [ТС] 8
у вас слишком обширные вопросы c:
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
10.07.2016, 14:07 9
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Не по теме:

Да, надо было иголки под ногти, не вякал бы...


Вот переделал на скорую руку программу по первой ссылке.
Если что красоту наводите сами.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
uses System,graphABC;
var d: DateTime;
    Xc,Yc,c1,c2,c3,c4,c5,c6:integer;
//прорисовка цифр
procedure Zero(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,5+xn,10+yn);
end;
procedure One(xn,yn:integer);
begin
  Line(5+xn,0+yn,5+xn,10+yn);
end;
procedure Two(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(0+xn,5+yn,0+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Three(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Fouhr(xn,yn:integer);
begin
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
end;
procedure Five(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Six(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
  Line(0+xn,5+yn,0+xn,10+yn);
end;
procedure Seven(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,10+yn);
end;
procedure Eight(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,5+xn,10+yn);
  Line(0+xn,5+yn,5+xn,5+yn);
end;
procedure Nine(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
end;
//выбор нужной цифры
procedure Number(n,xn,yn:integer);
begin
  case n of
    0:Zero(xn,yn);
    1:One(xn,yn);
    2:Two(xn,yn);
    3:Three(xn,yn);
    4:Fouhr(xn,yn);
    5:Five(xn,yn);
    6:Six(xn,yn);
    7:Seven(xn,yn);
    8:Eight(xn,yn);
    9:Nine(xn,yn);
  end;
end;
//рисование каркаса}
procedure KarkasElectro;
begin
  Rectangle(Xc-40,Yc-15,Xc+36,Yc+15);
  setpixel(Xc-40+25,Yc-3,clGreen);
  setpixel(Xc-40+25,Yc+3,clGreen);
  setpixel(Xc-40+50,Yc-3,clGreen);
  setpixel(Xc-40+50,Yc+3,clGreen);
end;
//рисование нужных цифр
procedure DrawElectro;
begin
  d:= DateTime.Now;
  c1:=d.Hour div 10;
  c2:=d.Hour mod 10;
  c3:=d.Minute div 10;
  c4:=d.Minute mod 10;
  c5:=d.Second div 10;
  c6:=d.Second mod 10;
  SetPenColor(clGreen);
  Number(c1,Xc-40+5,Yc-15+10);
  Number(c2,Xc-40+15,Yc-15+10);
  Number(c3,Xc-40+30,Yc-15+10);
  Number(c4,Xc-40+40,Yc-15+10);
  Number(c5,Xc-40+55,Yc-15+10);
  Number(c6,Xc-40+65,Yc-15+10);
end;
begin
Xc:=Window.Width div 2;//центр экрана
Yc:=Window.Height div 2;
d:=DateTime.Now;//начальное системное время
KarkasElectro; //рисуем каркас
DrawElectro;{меняем изображение}
lockdrawing;
repeat
sleep(1000);{в цикле через секунду}
Window.Clear;
d:=DateTime.Now;//начальное системное время
KarkasElectro; //рисуем каркас
DrawElectro;{меняем изображение}
redraw;
until false;//пока не нажат крестик в левом верзнем углу
end.
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
10.07.2016, 21:17  [ТС] 10
блин, а там же надо вводить время при запуске программы
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
10.07.2016, 21:34 11
Я честно не очень понял задание, просто переделал код по ссылке под Паскаль АВС.net.
Напишите что Вам конкретно нужно, учитывая что у Вас АВС.net,
без этих кренделей
Цитата Сообщение от MatWalkers Посмотреть сообщение
При недопустимости встроенного таймера ЭВМ реализовать его с помощью настроенных циклов,
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
10.07.2016, 21:46  [ТС] 12
все то же самое, но при запуске задавать время

Добавлено через 1 минуту
буду очень благодарен
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
10.07.2016, 22:05 13
Лучший ответ Сообщение было отмечено MatWalkers как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
uses graphABC;
var h,m,s,Xc,Yc,c1,c2,c3,c4,c5,c6:integer;
//прорисовка цифр
procedure Zero(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,5+xn,10+yn);
end;
procedure One(xn,yn:integer);
begin
  Line(5+xn,0+yn,5+xn,10+yn);
end;
procedure Two(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(0+xn,5+yn,0+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Three(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Fouhr(xn,yn:integer);
begin
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
end;
procedure Five(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Six(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
  Line(0+xn,5+yn,0+xn,10+yn);
end;
procedure Seven(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,10+yn);
end;
procedure Eight(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,5+xn,10+yn);
  Line(0+xn,5+yn,5+xn,5+yn);
end;
procedure Nine(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
end;
//выбор нужной цифры
procedure Number(n,xn,yn:integer);
begin
  case n of
    0:Zero(xn,yn);
    1:One(xn,yn);
    2:Two(xn,yn);
    3:Three(xn,yn);
    4:Fouhr(xn,yn);
    5:Five(xn,yn);
    6:Six(xn,yn);
    7:Seven(xn,yn);
    8:Eight(xn,yn);
    9:Nine(xn,yn);
  end;
end;
//рисование каркаса}
procedure KarkasElectro;
begin
  Rectangle(Xc-40,Yc-15,Xc+36,Yc+15);
  setpixel(Xc-40+25,Yc-3,clGreen);
  setpixel(Xc-40+25,Yc+3,clGreen);
  setpixel(Xc-40+50,Yc-3,clGreen);
  setpixel(Xc-40+50,Yc+3,clGreen);
end;
//рисование нужных цифр
procedure DrawElectro;
begin
  if s=60 then
   begin
    s:=0;
    m:=m+1;
   end;
  if m=60 then
   begin
    s:=0; 
    m:=0;
    h:=h+1;
   end;
  if h=24 then
   begin
    s:=0;
    m:=0;
    h:=0;
   end; 
  c1:=h div 10;
  c2:=h mod 10;
  c3:=m div 10;
  c4:=m mod 10;
  c5:=s div 10;
  c6:=s mod 10;
  SetPenColor(clGreen);
  Number(c1,Xc-40+5,Yc-15+10);
  Number(c2,Xc-40+15,Yc-15+10);
  Number(c3,Xc-40+30,Yc-15+10);
  Number(c4,Xc-40+40,Yc-15+10);
  Number(c5,Xc-40+55,Yc-15+10);
  Number(c6,Xc-40+65,Yc-15+10);
end;
begin
repeat
writeln('Введите начальное время, часы от 0 до 23, минуты и секунды от 0 до 59');
readln(h,m,s);
until(h in [0..23])and(m in [0..59])and(s in [0..59]);
Window.Clear;
Xc:=Window.Width div 2;//центр экрана
Yc:=Window.Height div 2;
KarkasElectro; //рисуем каркас
DrawElectro;//рисуем изображение
lockdrawing;
repeat
sleep(1000);//в цикле через секунду
s:=s+1;
Window.Clear;
KarkasElectro; //рисуем каркас
DrawElectro;//меняем изображение
redraw;
until false;//пока не нажат крестик в левом верхнем углу
end.
1
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
11.07.2016, 03:08  [ТС] 14
Спасибо)
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
11.07.2016, 07:38 15
В задании написано
Цитата Сообщение от MatWalkers Посмотреть сообщение
При недопустимости встроенного таймера ЭВМ реализовать его с помощью настроенных циклов,
В АВС есть таймер, поэтому нужно так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
uses graphABC,Timers;
var h,m,s,Xc,Yc,c1,c2,c3,c4,c5,c6:integer;
//прорисовка цифр
procedure Zero(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,5+xn,10+yn);
end;
procedure One(xn,yn:integer);
begin
  Line(5+xn,0+yn,5+xn,10+yn);
end;
procedure Two(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(0+xn,5+yn,0+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Three(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Fouhr(xn,yn:integer);
begin
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
end;
procedure Five(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Six(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
  Line(0+xn,5+yn,0+xn,10+yn);
end;
procedure Seven(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,10+yn);
end;
procedure Eight(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,5+xn,10+yn);
  Line(0+xn,5+yn,5+xn,5+yn);
end;
procedure Nine(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
end;
//выбор нужной цифры
procedure Number(n,xn,yn:integer);
begin
  case n of
    0:Zero(xn,yn);
    1:One(xn,yn);
    2:Two(xn,yn);
    3:Three(xn,yn);
    4:Fouhr(xn,yn);
    5:Five(xn,yn);
    6:Six(xn,yn);
    7:Seven(xn,yn);
    8:Eight(xn,yn);
    9:Nine(xn,yn);
  end;
end;
//рисование каркаса}
procedure KarkasElectro;
begin
  Rectangle(Xc-40,Yc-15,Xc+36,Yc+15);
  setpixel(Xc-40+25,Yc-3,clGreen);
  setpixel(Xc-40+25,Yc+3,clGreen);
  setpixel(Xc-40+50,Yc-3,clGreen);
  setpixel(Xc-40+50,Yc+3,clGreen);
end;
//рисование нужных цифр
procedure DrawElectro;
begin
  if s=60 then
   begin
    s:=0;
    m:=m+1;
   end;
  if m=60 then
   begin
    s:=0; 
    m:=0;
    h:=h+1;
   end;
  if h=24 then
   begin
    s:=0;
    m:=0;
    h:=0;
   end; 
  c1:=h div 10;
  c2:=h mod 10;
  c3:=m div 10;
  c4:=m mod 10;
  c5:=s div 10;
  c6:=s mod 10;
  SetPenColor(clGreen);
  Number(c1,Xc-40+5,Yc-15+10);
  Number(c2,Xc-40+15,Yc-15+10);
  Number(c3,Xc-40+30,Yc-15+10);
  Number(c4,Xc-40+40,Yc-15+10);
  Number(c5,Xc-40+55,Yc-15+10);
  Number(c6,Xc-40+65,Yc-15+10);
end;
procedure TimerProc;
begin
s:=s+1;
Window.Clear;
KarkasElectro; //рисуем каркас
DrawElectro;//меняем изображение
redraw;
end;
begin
repeat
writeln('Введите начальное время, часы от 0 до 23, минуты и секунды от 0 до 59');
readln(h,m,s);
until(h in [0..23])and(m in [0..59])and(s in [0..59]);
Window.Clear;
Xc:=Window.Width div 2;//центр экрана
Yc:=Window.Height div 2;
KarkasElectro; //рисуем каркас
DrawElectro;//рисуем изображение
var t:=new Timer(1000,TimerProc);
t.start;
lockdrawing;
end.
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
11.07.2016, 12:20  [ТС] 16
Спасибо еще раз)
Только есть еще одна просьба, надо укрупнить цифры

Добавлено через 2 минуты
и рамку выделить контуром
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
11.07.2016, 12:21 17
Цитата Сообщение от MatWalkers Посмотреть сообщение
надо укрупнить цифры
На сколько? Какая ширина и высота цифр?
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
11.07.2016, 12:29  [ТС] 18
в 2 раза больше, думаю пойдет
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
11.07.2016, 12:48 19
Лучший ответ Сообщение было отмечено MatWalkers как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
uses graphABC,Timers;
var h,m,s,Xc,Yc,c1,c2,c3,c4,c5,c6:integer;
//прорисовка цифр
procedure Zero(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,10+xn,20+yn);
end;
procedure One(xn,yn:integer);
begin
  Line(10+xn,0+yn,10+xn,20+yn);
end;
procedure Two(xn,yn:integer);
begin
  Line(0+xn,0+yn,10+xn,0+yn);
  Line(10+xn,0+yn,10+xn,10+yn);
  Line(10+xn,10+yn,0+xn,10+yn);
  Line(0+xn,10+yn,0+xn,20+yn);
  Line(0+xn,20+yn,10+xn,20+yn);
end;
procedure Three(xn,yn:integer);
begin
  Line(0+xn,0+yn,10+xn,0+yn);
  Line(10+xn,0+yn,10+xn,10+yn);
  Line(10+xn,10+yn,0+xn,10+yn);
  Line(10+xn,10+yn,10+xn,20+yn);
  Line(0+xn,20+yn,10+xn,20+yn);
end;
procedure Fouhr(xn,yn:integer);
begin
  Line(0+xn,0+yn,0+xn,10+yn);
  Line(10+xn,0+yn,10+xn,10+yn);
  Line(10+xn,10+yn,0+xn,10+yn);
  Line(10+xn,10+yn,10+xn,20+yn);
end;
procedure Five(xn,yn:integer);
begin
  Line(0+xn,0+yn,10+xn,0+yn);
  Line(0+xn,0+yn,0+xn,10+yn);
  Line(10+xn,10+yn,0+xn,10+yn);
  Line(10+xn,10+yn,10+xn,20+yn);
  Line(0+xn,20+yn,10+xn,20+yn);
end;
procedure Six(xn,yn:integer);
begin
  Line(0+xn,0+yn,10+xn,0+yn);
  Line(0+xn,0+yn,0+xn,10+yn);
  Line(10+xn,10+yn,0+xn,10+yn);
  Line(10+xn,10+yn,10+xn,20+yn);
  Line(0+xn,20+yn,10+xn,20+yn);
  Line(0+xn,10+yn,0+xn,20+yn);
end;
procedure Seven(xn,yn:integer);
begin
  Line(0+xn,0+yn,10+xn,0+yn);
  Line(10+xn,0+yn,10+xn,20+yn);
end;
procedure Eight(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,10+xn,20+yn);
  Line(0+xn,10+yn,10+xn,10+yn);
end;
procedure Nine(xn,yn:integer);
begin
  Line(0+xn,0+yn,10+xn,0+yn);
  Line(10+xn,0+yn,10+xn,10+yn);
  Line(10+xn,10+yn,0+xn,10+yn);
  Line(10+xn,10+yn,10+xn,20+yn);
  Line(0+xn,20+yn,10+xn,20+yn);
  Line(0+xn,0+yn,0+xn,10+yn);
end;
//выбор нужной цифры
procedure Number(n,xn,yn:integer);
begin
  case n of
    0:Zero(xn,yn);
    1:One(xn,yn);
    2:Two(xn,yn);
    3:Three(xn,yn);
    4:Fouhr(xn,yn);
    5:Five(xn,yn);
    6:Six(xn,yn);
    7:Seven(xn,yn);
    8:Eight(xn,yn);
    9:Nine(xn,yn);
  end;
end;
//рисование каркаса}
procedure KarkasElectro;
begin
  SetPenColor(clBlue);
  SetPenWidth(3);
  Rectangle(Xc-80,Yc-15,Xc+72,Yc+15);
  setpixel(Xc-80+50,Yc-6,clGreen);
  setpixel(Xc-80+50,Yc+6,clGreen);
  setpixel(Xc-80+100,Yc-6,clGreen);
  setpixel(Xc-80+100,Yc+6,clGreen);
end;
//рисование нужных цифр
procedure DrawElectro;
begin
  if s=60 then
   begin
    s:=0;
    m:=m+1;
   end;
  if m=60 then
   begin
    s:=0; 
    m:=0;
    h:=h+1;
   end;
  if h=24 then
   begin
    s:=0;
    m:=0;
    h:=0;
   end; 
  c1:=h div 10;
  c2:=h mod 10;
  c3:=m div 10;
  c4:=m mod 10;
  c5:=s div 10;
  c6:=s mod 10;
  SetPenWidth(1);
  SetPenColor(clGreen);
  Number(c1,Xc-80+10,Yc-30+20);
  Number(c2,Xc-80+30,Yc-30+20);
  Number(c3,Xc-80+60,Yc-30+20);
  Number(c4,Xc-80+80,Yc-30+20);
  Number(c5,Xc-80+110,Yc-30+20);
  Number(c6,Xc-80+130,Yc-30+20);
end;
procedure TimerProc;
begin
s:=s+1;
Window.Clear;
KarkasElectro; //рисуем каркас
DrawElectro;//меняем изображение
redraw;
end;
begin
repeat
writeln('Введите начальное время, часы от 0 до 23, минуты и секунды от 0 до 59');
readln(h,m,s);
until(h in [0..23])and(m in [0..59])and(s in [0..59]);
Window.Clear;
Xc:=Window.Width div 2;//центр экрана
Yc:=Window.Height div 2;
KarkasElectro; //рисуем каркас
DrawElectro;//рисуем изображение
var t:=new Timer(1000,TimerProc);
t.start;
lockdrawing;
end.
Если еще в 2 раза, то умножь все числа на 2
1
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 51
11.07.2016, 13:11  [ТС] 20
Хорошо, спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2016, 13:11
Помогаю со студенческими работами здесь

Электронные часы
Привет, вот задание:Написать программу, которая выводит на экран изображение идущих электронных...

Электронные часы - 2
Разбор Число часов в сутки будет равен количество секунд разделенных на 3600. Теперь остаток у нас...

Электронные часы - 1
Разбор Для начала отсекём лишние сутки: n mod 1440. Затем Найдем время в полных часах: n div 60,...

Изобразить на экране электронные часы с цифровым семисегментный индикатором
Изобразить на экране работающий электронные часы с цифровым семисегментный индикатор. (с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru