Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 66
1

Программа с часами

29.06.2012, 08:32. Просмотров 957. Ответов 10
Метки нет (Все метки)


Доброго времени суток! Вот программа с часами, подскажите пожалуйста почему при запуске выскакивает 9?


C++
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
#include <iostream>
using namespace std;
class State {
public:
virtual void handle() = 0;
protected:
static int h_, m_, s_;
};
int State::h_ = 0;
int State::m_ = 0;
int State::s_ = 0;
class Reset : public State {
public:
virtual void handle(){ h_ = 0; m_ = 0; s_ = 0;}
};
class Tick : public State {
public:
virtual void handle() {
if(++s_ == 60) {
s_ = 0;
if(++m_ == 60) {
m_ = 0;
h_ = (h_ + 1) % 24;
}
}
}
};
class IncHour : public State {
public:
virtual void handle() {
h_ = (h_ + 1) % 2;
}
};
class IncMinute : public State {
public:
virtual void handle() {
m_ = (m_ + 1) % 60;
}
};
class ShowTime : public State {
public:
virtual void handle() {
std::cout « h_;
std::cout « " ";
std::cout « m_;
std::cout « " ";
std::cout « s_;
std::cout « '\r';
}
};
class myclock {
private:
State *state;
public:
myclock(): state(0) {}
void request() {
if( state ) {
state -> handle();
}
}
State* getState() {
return state;
}
void setState( State* state ) {
this -> state = state;
}
};
int main() {
State *reset = new Reset;
State *showtime = new ShowTime;
State *tick = new Tick;
State *inchour = new IncHour;
State *incminute = new IncMinute;
myclock watch;
watch.setState( reset );
watch.request();
watch.setState( inchour );
for(int i=1; i <= 0; i++) 
watch.request(); // гбв ®ўЁвм з бл
watch.setState( incminute );
for(int i=1; i <= 0; i++) 
watch.request(); // гбв ®ўЁвм ¬Ё гвл
while(1) {
watch.setState(tick);
watch.request();
watch.setState(showtime);
watch.request();
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2012, 08:32
Ответы с готовыми решениями:

Работа часами
select idpunkta, idmarsh,(vremyadata+vremyaprib) as data1, (vremyadata+vremyaotp) as data2 from...

Виджет с часами
Пишу виджет, который показывает время. Запускаю часы на эмуляторе (Android 4.0.3) работает без...

Таймер с часами
По заказу жены сделаны были часики. Заодно в них появились настраиваемые таймеры, будильник и...

Задачка с часами
Помогите,очень прошу Наши часы не корректны, они неверно отображают число минут и секунд, когда те...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
10
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
29.06.2012, 09:18 2
9 - это что, ошибка или что то еще? У меня при запуске все работает.
0
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 66
29.06.2012, 09:24  [ТС] 3
нет, когда время идет, то там выскакивает 9
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
29.06.2012, 09:50 4
Цитата Сообщение от Ане4кA Посмотреть сообщение
myclock(): state(0) {}
вы не создали конструктора класса State,а инициализируете нулём
0
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
29.06.2012, 09:51 5
Нормально все это "оптический эффект"
Компильни и посмотри log.txt файл
C++
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
#include <iostream>
#include <fstream>
using namespace std;
class State {
public:
virtual void handle() = 0;
protected:
static int h_, m_, s_;
};
int State::h_ = 0;
int State::m_ = 0;
int State::s_ = 0;
class Reset : public State {
public:
virtual void handle(){ h_ = 0; m_ = 0; s_ = 0;}
};
class Tick : public State {
public:
virtual void handle() {
if(++s_ == 60) {
s_ = 0;
if(++m_ == 60) {
m_ = 0;
h_ = (h_ + 1) % 24;
}
}
}
};
class IncHour : public State {
public:
virtual void handle() {
h_ = (h_ + 1) % 2;
}
};
class IncMinute : public State {
public:
virtual void handle() {
m_ = (m_ + 1) % 60;
}
};
class ShowTime : public State {
   std::ofstream txt;
public:
ShowTime () : txt("log.txt") {}
~ShowTime() { txt.close(); }
virtual void handle() {
std::cout << h_;
std::cout << " ";
std::cout << m_;
std::cout << " ";
std::cout << s_;
std::cout << '\r';
txt << h_ << " " << m_ << " " << s_ << std::endl;
}
};
class myclock {
private:
State *state;
public:
myclock(): state(0) {}
void request() {
if( state ) {
state -> handle();
}
}
State* getState() {
return state;
}
void setState( State* state ) {
this -> state = state;
}
};
int main() {
State *reset = new Reset;
State *showtime = new ShowTime;
State *tick = new Tick;
State *inchour = new IncHour;
State *incminute = new IncMinute;
myclock watch;
watch.setState( reset );
watch.request();
watch.setState( inchour );
for(int i=1; i <= 0; i++)
watch.request(); // гбв ®ўЁвм з бл
watch.setState( incminute );
for(int i=1; i <= 0; i++)
watch.request(); // гбв ®ўЁвм ¬Ё гвл
while(1) {
watch.setState(tick);
watch.request();
watch.setState(showtime);
watch.request();
}
}
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
29.06.2012, 09:53 6
Цитата Сообщение от KATbIK Посмотреть сообщение
Нормально все это "оптический эффект"
это как?О_о
0
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
29.06.2012, 09:59 7
alexey31415, Ну 9 выскакивает )) Я все в log.txt писал там нет 9, код я её не изучал.
А вот ты про это говоришь
C++
1
2
3
State *state;
public:
myclock(): state(0)
указателю ведь ноль она присваевает. Зачем конструктор
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
29.06.2012, 10:08 8
Цитата Сообщение от KATbIK Посмотреть сообщение
указателю ведь ноль она присваевает.
забыл,что указатель,думал переменная
0
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 66
29.06.2012, 13:41  [ТС] 9
KATbIK расскажите подробнее про свою программу пожалуйста)
0
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
29.06.2012, 13:48 10
Ане4кA, это твоя программа просто добавил вывод времени в текстовый файл 3 строчки )) Заинтриговала магическая 9 ка вот и захотелось посмотреть.
C++
1
2
3
4
5
6
7
8
9
10
11
12
   std::ofstream txt;
public:
ShowTime () : txt("log.txt") {}
~ShowTime() { txt.close(); }
virtual void handle() {
std::cout << h_;
std::cout << " ";
std::cout << m_;
std::cout << " ";
std::cout << s_;
std::cout << '\r';
txt << h_ << " " << m_ << " " << s_ << std::endl;
0
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 66
29.06.2012, 13:49  [ТС] 11
я поняла, что она моя, но интересна была доработка)
мастерки так)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2012, 13:49

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Затуп с часами (решено)
В свойственной себе манере жестко туплю. Есть нездоровый участок схемы (часов) с мультивибратором...

Помогите, пожалуйста, с часами.
Здравствуйте. Необходимо мне сделать часы. Суть проста: выводится информация на семисегментный...

Не стилизуется блок с часами
здравствуйте! у меня такая проблема , на страничку поставил часы, написанные на js ...

Как ограничить сессию 4 часами?
Не понимаю как ограничить сессию 4 часами? Пароль должен работать 4 часа и затем стать уже...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.