Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
#1

Часы - C++

06.08.2012, 20:27. Просмотров 1385. Ответов 8
Метки нет (Все метки)

Нужно реализовать программу выполняющую перевод часов и минут в минуты и вычисляющую угол между минутной и часовой стрелкой.
Вопрос: где лучше реализовать запрос ввода и его проверку в конструктору или лучше передавать уже проверенные в main параметры конструкторы (параметры - это часы и минуты)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2012, 20:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Часы (C++):

Программа, которая переводит часы и минуты в минуты или минуты – в часы и минуты - C++
Составьте программу, которая в зависимости от входных данных переводит часы и минуты в минуты или минуты – в часы и ...

Часы C++ - C++
Здравствуйте. Вот программа, реализующая работу часов. Подскажите пожалуйста, что нужно добавить, чтобы был выбор часового пояса. Заранее...

Часы - C++
Правильный ли код? #include <iostream> using namespace std; int main () { int k, h, m; cin >> k; h = k / 30; m = k*2...

Часы - C++
помогите плиз вот такую задачку решить: Даны целые числа M и N (0<M<=12, 0<=N<=60), указывающие момент времени: «M часов, N минут»....

Часы - C++
int main() { int sek,min,chas; chas=0; min=0; while(chas!=24) // Цикл подсчета часов { while(min!=60) // Цикл...

часы с будильником - C++
Всем доброго дня. Помогите пожалуйста, нужно написать часы с будильником можно просто код и все спасибо)

8
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
06.08.2012, 21:32 #2
Цитата Сообщение от bgm313 Посмотреть сообщение
где лучше реализовать запрос ввода и его проверку в конструктору или лучше передавать уже проверенные в main параметры конструкторы (параметры - это часы и минуты)?
Я бы реализовал 2 класса. Один отвечает за время (часы и минуты), другой за механические часы (стрелки с градусами угла поворота). Значение времени вводится в отдельной функции и передаётся конструктору класса времени. А объект класса времени - в конструктор часов. Как-то так.
1
Holand
8 / 5 / 1
Регистрация: 30.03.2012
Сообщений: 14
06.08.2012, 21:55 #3
В принципе можно обойтись и без классов.
Тебе будут нужны 2 функции:
1) В нее передаешь часы и минуты на вывод минуты
C++
1
int TimeToMinutes(int nHour, int nMinute)
2) Создаешь структурку, в которой будут храниться углы часовой и минутной стрелки
C++
1
2
3
4
5
struct stAngles
{
    int nHourAngle;
    int nMinuteAngle;
};
И функцию, которая будет ее заполнять на выходе (на вход минуты - так универсальнее)
C++
1
stAngles TimeToAngles(int nMinutes)
Внутри считаешь часы и минуты (результат деления и остаток от деления на 60), создаешь переменную типа структуры и считаешь углы (остаток от деления на 12 и 60 соответственно для часов и минут), записывая их в переменные структуры и возвращаешь ее как результат.

Ну а потом в
C++
1
 int main()
считываешь данные, конвертируешь в минуты, передаешь в TimeToAngles пишешь в структуру и считаешь угол.
0
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
06.08.2012, 22:33 #4
А зачем вообще всё так усложнять? Данная программка решается очень лаконично без ООП:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    float minute, hour;
    cout << "Введите время (часы и минуты через пробел): ";
    cin >> hour >> minute;
    cout << "Количество минут: " << hour * 60 + minute << endl;
    cout << "Угол между стрелками: " << fabs( (hour + minute/60)*30 - minute*6 ) << " градусов" << endl;
    return 0;
}
Цитата Сообщение от bgm313
Вопрос: где лучше реализовать запрос ввода и его проверку в конструктору или лучше передавать уже проверенные в main параметры конструкторы (параметры - это часы и минуты)?
Лично я предпочитаю конструкторы с параметрами. То есть с использованием классов можно так:
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
class times
{
    private:
        float minute, hour;
    public:
        times(float m, float h)
        {
            minute=m;
            hour=h;
        }
        float minutes()
        {
            return hour * 60 + minute;
        }
        float angle()
        {
            return fabs( (hour + minute/60)*30 - minute*6 );
        }
};
 
int main()
{
    float min, h;
    cout << "Введите время (часы и минуты через пробел): ";
    cin >> h >> min;
    times clocks=times(min, h);
    cout << "Количество минут: " << clocks.minutes() << endl;
    cout << "Угол между стрелками: " << clocks.angle() << " градусов" << endl;
    return 0;
}
А так - дело вкуса.
0
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
06.08.2012, 22:40 #5
Цитата Сообщение от elivin Посмотреть сообщение
А зачем вообще всё так усложнять? Данная программка решается очень лаконично без ООП
Может и решается, но ТС говорит о конструкторах, а значит требуются какие-нибудь классы
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.08.2012, 22:47 #6
ооп при правильном применении вообще упрощает код, а не усложняет. и уметь им пользоваться будет поважнее, чем решить конкретную задачу с часами. а чтобы уметь - нужно пробовать писать.
1
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
06.08.2012, 23:00 #7
John Prick, DU, мой ответ состоит из 2-х частей:
1. Моё решение приведённой задачи;
2. Непосредственно ответ на вопрос ТС - вариант с классами (точнее, с одним классом)
Вопрос:
Цитата Сообщение от elivin Посмотреть сообщение
А зачем вообще всё так усложнять?
был адресован пользователю Holand, который также предлагал вариант без ООП. Забыл обращение вставить

P.S. Да, мне надо работать над стилем речи, а то слишком часто возникают подобные непонимания.
0
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
07.08.2012, 00:35  [ТС] #8
Возникли 2 вопроса:
1.Можно ли сделать так, чтобы при вызове конструктора и возникновение определенной ситуации объект не создавался?
2.В часах предпочтительнее организовывать проверку за пределами конструктора или внутри конструктора?
0
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
07.08.2012, 10:31 #9
Цитата Сообщение от bgm313 Посмотреть сообщение
1.Можно ли сделать так, чтобы при вызове конструктора и возникновение определенной ситуации объект не создавался?
В принципе можно сгенерировать исключение в конструкторе, хотя это не очень хорошо. Впрочем, возможно умные люди меня поправят.

Цитата Сообщение от bgm313 Посмотреть сообщение
2.В часах предпочтительнее организовывать проверку за пределами конструктора или внутри конструктора?
Вообще это ваше право выбирать, как должна вести себя программа при неправильно введённых данных. Я бы для простых программ проверял значения сразу после их ввода пользователем (и до создания каких-то объектов) и "заставлял" вводить их пока не станут верными. Если же подразумевается, что эти классы будут использоваться в дальнейшем в других задачах, то какие-то проверки нужно вводить и в конструкторы класса.
0
07.08.2012, 10:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2012, 10:31
Привет! Вот еще темы с ответами:

C++ часы-отражение - C++
Как реализовать часы (электронные), чтоб программа выводила все возможные РЕАЛЬНЫЕ варианты времени (за 24 часа) и его отражения?

Электронные часы С++ - C++
Электронные часы показывают время в формате h:mm:ss (от 0:00:00 до 23:59:59), то есть сначала записывается количество часов, потом...

Реализовать часы - C++
Вот такая проблема... не могу придумать, как реализовать часы... То есть, вот такая проблема, у меня есть два времени записанных таким...

Стрелочные часы. - C++
Всем доброго время суток. Нашел в интернете код (DEV C++ WINAPI ANALOG CLOCK) программы исполнение которого запускает стрелочные часы: ...


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

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

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