Форум программистов, компьютерный форум CyberForum.ru

Программа с часами - C++

Восстановить пароль Регистрация
 
Ане4кA
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 66
29.06.2012, 08:32     Программа с часами #1
Доброго времени суток! Вот программа с часами, подскажите пожалуйста почему при запуске выскакивает 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();
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2012, 08:32     Программа с часами
Посмотрите здесь:

C++ Ведется набор цифр и надо чтобы программа из него сама сообразило число. То есть что бы программа сама раскидывала их по разрядам.
C++ Заполнить матрицу "песочными часами"
C++ Пользователь вводит 10 чисел программа должна выдать 2 максимальных(берём от 1 до 10,если выпадает 2 10,то программа должна выдать 2 10,а не 10,9)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
29.06.2012, 09:18     Программа с часами #2
9 - это что, ошибка или что то еще? У меня при запуске все работает.
Ане4кA
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 66
29.06.2012, 09:24  [ТС]     Программа с часами #3
нет, когда время идет, то там выскакивает 9
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
29.06.2012, 09:50     Программа с часами #4
Цитата Сообщение от Ане4кA Посмотреть сообщение
myclock(): state(0) {}
вы не создали конструктора класса State,а инициализируете нулём
KATbIK
 Аватар для KATbIK
86 / 81 / 10
Регистрация: 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();
}
}
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
29.06.2012, 09:53     Программа с часами #6
Цитата Сообщение от KATbIK Посмотреть сообщение
Нормально все это "оптический эффект"
это как?О_о
KATbIK
 Аватар для KATbIK
86 / 81 / 10
Регистрация: 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)
указателю ведь ноль она присваевает. Зачем конструктор
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
29.06.2012, 10:08     Программа с часами #8
Цитата Сообщение от KATbIK Посмотреть сообщение
указателю ведь ноль она присваевает.
забыл,что указатель,думал переменная
Ане4кA
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 66
29.06.2012, 13:41  [ТС]     Программа с часами #9
KATbIK расскажите подробнее про свою программу пожалуйста)
KATbIK
 Аватар для KATbIK
86 / 81 / 10
Регистрация: 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;
Ане4кA
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 66
29.06.2012, 13:49  [ТС]     Программа с часами #11
я поняла, что она моя, но интересна была доработка)
мастерки так)
Yandex
Объявления
29.06.2012, 13:49     Программа с часами
Ответ Создать тему
Опции темы

Текущее время: 10:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru