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

Часы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
06.08.2012, 20:27     Часы #1
Нужно реализовать программу выполняющую перевод часов и минут в минуты и вычисляющую угол между минутной и часовой стрелкой.
Вопрос: где лучше реализовать запрос ввода и его проверку в конструктору или лучше передавать уже проверенные в main параметры конструкторы (параметры - это часы и минуты)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2012, 20:27     Часы
Посмотрите здесь:

C++ Часы
часы с будильником C++
Часы C++
C++ Часы C++
C++ Реализовать часы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
06.08.2012, 21:32     Часы #2
Цитата Сообщение от bgm313 Посмотреть сообщение
где лучше реализовать запрос ввода и его проверку в конструктору или лучше передавать уже проверенные в main параметры конструкторы (параметры - это часы и минуты)?
Я бы реализовал 2 класса. Один отвечает за время (часы и минуты), другой за механические часы (стрелки с градусами угла поворота). Значение времени вводится в отдельной функции и передаётся конструктору класса времени. А объект класса времени - в конструктор часов. Как-то так.
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 пишешь в структуру и считаешь угол.
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;
}
А так - дело вкуса.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
06.08.2012, 22:40     Часы #5
Цитата Сообщение от elivin Посмотреть сообщение
А зачем вообще всё так усложнять? Данная программка решается очень лаконично без ООП
Может и решается, но ТС говорит о конструкторах, а значит требуются какие-нибудь классы
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.08.2012, 22:47     Часы #6
ооп при правильном применении вообще упрощает код, а не усложняет. и уметь им пользоваться будет поважнее, чем решить конкретную задачу с часами. а чтобы уметь - нужно пробовать писать.
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. Да, мне надо работать над стилем речи, а то слишком часто возникают подобные непонимания.
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
07.08.2012, 00:35  [ТС]     Часы #8
Возникли 2 вопроса:
1.Можно ли сделать так, чтобы при вызове конструктора и возникновение определенной ситуации объект не создавался?
2.В часах предпочтительнее организовывать проверку за пределами конструктора или внутри конструктора?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2012, 10:31     Часы
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
07.08.2012, 10:31     Часы #9
Цитата Сообщение от bgm313 Посмотреть сообщение
1.Можно ли сделать так, чтобы при вызове конструктора и возникновение определенной ситуации объект не создавался?
В принципе можно сгенерировать исключение в конструкторе, хотя это не очень хорошо. Впрочем, возможно умные люди меня поправят.

Цитата Сообщение от bgm313 Посмотреть сообщение
2.В часах предпочтительнее организовывать проверку за пределами конструктора или внутри конструктора?
Вообще это ваше право выбирать, как должна вести себя программа при неправильно введённых данных. Я бы для простых программ проверял значения сразу после их ввода пользователем (и до создания каких-то объектов) и "заставлял" вводить их пока не станут верными. Если же подразумевается, что эти классы будут использоваться в дальнейшем в других задачах, то какие-то проверки нужно вводить и в конструкторы класса.
Yandex
Объявления
07.08.2012, 10:31     Часы
Ответ Создать тему
Опции темы

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