Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 4
1

c++ mytime

19.11.2013, 17:32. Показов 1442. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написала код:
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 минуту, и из минут в часы таким же способом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2013, 17:32
Ответы с готовыми решениями:

Создайте свой класс для обработки значений времени MyTime
Создайте свой класс для обработки значений времени MyTime. Значения часов, минут и секунд храните в...


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

Или воспользуйтесь поиском по форуму:
15
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.11.2013, 18:09 2
Цитата Сообщение от addled_brains Посмотреть сообщение
и при умножении времени
какую физическую суть несет этот термин?
Для сложения рекомендую перевести всё в секунды, сложить, а потом уже обратно в ч:м:с
0
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 4
20.11.2013, 08:40  [ТС] 3
Цитата Сообщение от Tulosba Посмотреть сообщение
какую физическую суть несет этот термин?
Для сложения рекомендую перевести всё в секунды, сложить, а потом уже обратно в ч:м:с
Я не поняла что вы хотите сказать. Это форум для начинающих. Неужели нельзя просто показать пример кода, а я исправлю под свой. Или какую нибудь ссылку.
0
7 / 7 / 4
Регистрация: 06.11.2013
Сообщений: 50
20.11.2013, 10:00 4
Делай проверку на превышение 60, потом, если превышает, прибавляй сколько нужно к минутам и изменяй секунды. Ну, или как сказал человек до меня: переведи все в секунды, произведи какие-то там действия, которые тебе нужны и переводи обратно.
И ответь, если не сложно: а что такое УМНОЖЕНИЕ ВРЕМЕНИ? Зачем оно?..
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
20.11.2013, 10:05 5
Цитата Сообщение от addled_brains Посмотреть сообщение
Неужели нельзя просто показать пример кода, а я исправлю под свой.
У Вас же спросили "Что такое умножение времени"?
1
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
20.11.2013, 11:17 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;
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2013, 11:28 7
egor2116, максимальные значения логичнее задать в виде констант (причем статических). Правда с часами можно предположить режим 12/24. Копирующий конструктор и оператор присваивания можно не писать, нормально сработает версия, предоставляемая компилятором.
C++
1
return _s < secondsMinutesMax ? true : false;
эквивалентно
C++
1
return _s < secondsMinutesMax;
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
20.11.2013, 12:43 8
максимальные значения логичнее задать в виде констант (причем статических).
Да согласен.
Копирующий конструктор и оператор присваивания можно не писать
Стараюсь писать всегда.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2013, 12:48 9
Цитата Сообщение от egor2116 Посмотреть сообщение
Стараюсь писать всегда.
Зачем лишняя работа? Лучше не станет, можно только что-то напортачить.
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
20.11.2013, 12:56 10
Зачем лишняя работа? Лучше не станет, можно только что-то напортачить.
Да как то читал в книге, если память не изменяет Маккнела, что правильным считается, если определяется конструктор по умолчанию, то правильным тоном будет определить и конструктор копирования и перегрузить оператор= и кстати определить деструктор(про который я забыл).
По этому стараюсь следовать этому совету, когда не спешу.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2013, 13:02 11
egor2116, похоже, память немного изменяет. Правило трёх
0
Croessmah
20.11.2013, 13:28
  #12

Не по теме:

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

1
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
20.11.2013, 13:44 13
похоже, память немного изменяет.
Я всего лишь человек.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2013, 14:00 14
Croessmah, ну баги это отдельный разговор. А в какой версии и при каких условиях был баг? Или это уже трудно вспомнить?
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
20.11.2013, 14:13 15
Или это уже трудно вспомнить?
Отдельный вопрос отдельная тема.
P.S. бугага
0
Croessmah
20.11.2013, 14:18     c++ mytime
  #16

Не по теме:

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

2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru