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

c++ mytime - C++

Восстановить пароль Регистрация
 
addled_brains
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 4
19.11.2013, 17:32     c++ mytime #1
Написала код:
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
class MyTime
{
    public:
    int h;
    int m;
    int s;
 
    MyTime()
    {
        h=0; m=0; s=0;
    }
    MyTime(int h2,int m2,int s2)
    {
        h=h2; m=m2; s=s2;
    }
    char* ToString1()
    {
        char* help = new char[100];
        sprintf (help, "--------\n""ALL TIME(+): %d:%d:%d", h, m, s);
        return help;
    }
 
    char* ToString2()
    {
        char* help = new char[100];
        sprintf (help, "--------\n""ALL TIME(*): %d:%d:%d", h, m, s);
        return help;
    }
 
    MyTime Add(MyTime t2)
    {
        MyTime help;
        help.h = h + t2.h;
        help.m = m + t2.m;
        help.s = s + t2.s;
        return help;
    }
 
    MyTime Umno(MyTime t2)
    {
        MyTime help;
        help.h = h * t2.h;
        help.m = m * t2.m;
        help.s = s * t2.s;
        return help;
    }
};
 
int main(int argc, char* argv[])
{   int a,b,c,a1,b1,c1;
 
    printf("INPUT FIRST TIME:\n");
    cout << "HOURS: ";
    cin >> a;
    cout << "MINUTES: ";
    cin >> b;
    cout << "SECONDS: ";
    cin >> c;
 
    printf("--------\n""INPUT SECOND TIME:\n");
    cout << "HOURS: ";
    cin >> a1;
    cout << "MINUTES: ";
    cin >> b1;
    cout << "SECONDS: ";
    cin >> c1;
 
    MyTime t1(a, b, c), t2(a1, b1, c1), t3;
 
    cout << "--------\n""FIRST TIME: " << t1.h << ":" << t1.m << ":" << t1.s << "\n";
    cout << "--------\n""SECOND TIME: " << t2.h << ":" << t2.m << ":" << t2.s << "\n";
 
    t3 = t2.Add(t1);
    cout << t3.ToString1() << "\n";
 
    t3 = t2.Umno(t1);
    cout << t3.ToString2() << "\n";
 
    int i;
    cin >> i;
    return 0;
 
}
Помогите сделать так, чтобы при сложении и при умножении времени, секунды после 60 переводились в +1 минуту, и из минут в часы таким же способом.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
19.11.2013, 18:09     c++ mytime #2
Цитата Сообщение от addled_brains Посмотреть сообщение
и при умножении времени
какую физическую суть несет этот термин?
Для сложения рекомендую перевести всё в секунды, сложить, а потом уже обратно в ч:м:с
addled_brains
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 4
20.11.2013, 08:40  [ТС]     c++ mytime #3
Цитата Сообщение от Tulosba Посмотреть сообщение
какую физическую суть несет этот термин?
Для сложения рекомендую перевести всё в секунды, сложить, а потом уже обратно в ч:м:с
Я не поняла что вы хотите сказать. Это форум для начинающих. Неужели нельзя просто показать пример кода, а я исправлю под свой. Или какую нибудь ссылку.
ABKA
7 / 7 / 0
Регистрация: 06.11.2013
Сообщений: 50
20.11.2013, 10:00     c++ mytime #4
Делай проверку на превышение 60, потом, если превышает, прибавляй сколько нужно к минутам и изменяй секунды. Ну, или как сказал человек до меня: переведи все в секунды, произведи какие-то там действия, которые тебе нужны и переводи обратно.
И ответь, если не сложно: а что такое УМНОЖЕНИЕ ВРЕМЕНИ? Зачем оно?..
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
20.11.2013, 10:05     c++ mytime #5
Цитата Сообщение от addled_brains Посмотреть сообщение
Неужели нельзя просто показать пример кода, а я исправлю под свой.
У Вас же спросили "Что такое умножение времени"?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
20.11.2013, 11:17     c++ mytime #6
Помогите сделать так, чтобы при сложении и при умножении времени, секунды после 60 переводились в +1 минуту, и из минут в часы таким же способом.
Надеюсь это поможет

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
#include <iostream>
 
class Time
{
      private: 
               size_t s,m,h;
               size_t secondsMinutesMax;
               size_t hoursMax;
      public:
             Time() : s(0), m(0), h(0), secondsMinutesMax(60), hoursMax(24){}
             Time(const Time & t) : s(t.getSeconds()), m(t.getMinutes()), h(t.getHours()) {}
             void setSeconds(size_t _s)
             {
                  if(checkSecMin(_s))
                  {     
                     s += _s;
                     m += (size_t)(s / secondsMinutesMax); 
                     s %= secondsMinutesMax; 
                  }
             }
             void setMinutes(size_t _m)
             {
                   if(checkSecMin(_m))
                  {     
                     m += _m;
                     h += (size_t)(m / secondsMinutesMax); 
                     m %= secondsMinutesMax; 
                  }
             }
             void setHours(size_t _h)
             {
                   if(checkHours(_h))
                      h = _h;
             }
             bool checkSecMin(size_t _s) { return _s < secondsMinutesMax ? true : false; }
             bool checkHours(size_t _h) { return _h < hoursMax ? true : false; }
             
             size_t getSeconds()const { return s; }
             size_t getMinutes()const { return m; }
             size_t getHours()const { return h; }
             
             friend std::ostream & operator<<(std::ostream & out, const Time & time); 
             Time & operator=(const Time & time)
             {
                  s = time.getSeconds();
                  m = time.getMinutes();
                  h = time.getHours();
                  
             }
};
 
std::ostream & operator<<(std::ostream & out, const Time & time)
{
   out << time.h << ":" << time.m << ":" << time.s;
   return out;
}
 
int main(int argc, char *argv[])
{
   
   Time time;
   time.setSeconds(30);
   time.setMinutes(44);
   time.setHours(13);
   
   std::cout << time << std::endl;
    
    system("PAUSE");
    return 0;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.11.2013, 11:28     c++ mytime #7
egor2116, максимальные значения логичнее задать в виде констант (причем статических). Правда с часами можно предположить режим 12/24. Копирующий конструктор и оператор присваивания можно не писать, нормально сработает версия, предоставляемая компилятором.
C++
1
return _s < secondsMinutesMax ? true : false;
эквивалентно
C++
1
return _s < secondsMinutesMax;
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
20.11.2013, 12:43     c++ mytime #8
максимальные значения логичнее задать в виде констант (причем статических).
Да согласен.
Копирующий конструктор и оператор присваивания можно не писать
Стараюсь писать всегда.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.11.2013, 12:48     c++ mytime #9
Цитата Сообщение от egor2116 Посмотреть сообщение
Стараюсь писать всегда.
Зачем лишняя работа? Лучше не станет, можно только что-то напортачить.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
20.11.2013, 12:56     c++ mytime #10
Зачем лишняя работа? Лучше не станет, можно только что-то напортачить.
Да как то читал в книге, если память не изменяет Маккнела, что правильным считается, если определяется конструктор по умолчанию, то правильным тоном будет определить и конструктор копирования и перегрузить оператор= и кстати определить деструктор(про который я забыл).
По этому стараюсь следовать этому совету, когда не спешу.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.11.2013, 13:02     c++ mytime #11
egor2116, похоже, память немного изменяет. Правило трёх
Croessmah
20.11.2013, 13:28
  #12

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Зачем лишняя работа? Лучше не станет, можно только что-то напортачить.
я, например, натыкался на баг в VC++ в виде фантомного вызова деструктора, если нет конструктора копий

egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
20.11.2013, 13:44     c++ mytime #13
похоже, память немного изменяет.
Я всего лишь человек.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.11.2013, 14:00     c++ mytime #14
Croessmah, ну баги это отдельный разговор. А в какой версии и при каких условиях был баг? Или это уже трудно вспомнить?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
20.11.2013, 14:13     c++ mytime #15
Или это уже трудно вспомнить?
Отдельный вопрос отдельная тема.
P.S. бугага
Croessmah
20.11.2013, 14:18     c++ mytime
  #16

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
А в какой версии и при каких условиях был баг? Или это уже трудно вспомнить?
Если не ошибаюсь, то в 2012 (или в 10-ой), а на счет вспомнить - тут где-то тема была на форуме, поищу, хотя не гарантирую что найду, давно это было

Yandex
Объявления
20.11.2013, 14:18     c++ mytime
Ответ Создать тему
Опции темы

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