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

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

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

Часы - C++

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

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

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

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

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

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

Стрелочные часы - C++
Разработать приложение, отображающее движение часовой, минутной и секундной стрелок часов. Циферблат в виде окружности снабжен метками...

часы-минуты - C++
#include <iostream> #include <math.h> int main(){ int a,b,c; std::cin >> a; b=a/60; c=a-60*b; std::cout...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 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
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
06.08.2012, 22:40     Часы #5
Цитата Сообщение от elivin Посмотреть сообщение
А зачем вообще всё так усложнять? Данная программка решается очень лаконично без ООП
Может и решается, но ТС говорит о конструкторах, а значит требуются какие-нибудь классы
DU
1482 / 1058 / 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++
Всем доброго время суток. Нашел в интернете код (DEV C++ WINAPI ANALOG CLOCK) программы исполнение которого запускает стрелочные часы: ...

Аналоговые часы на C++ - C++
Выкладываю свою курсовую по теме &quot;Аналоговые часы&quot; с использованием графической библиотеки graphics.h (BGI) Язык: C++ Среда...

Электронные часы - C++
Электронные часы показывают время в формате h:mm:ss, то есть сначала записывается количество часов, потом обязательно двузначное количество...


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

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

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

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