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

Функция декремента - C++

Восстановить пароль Регистрация
 
aus
7 / 7 / 1
Регистрация: 18.10.2010
Сообщений: 56
10.01.2012, 21:07     Функция декремента #1
Вот функция которая декрементирует время, если в коде написать 59, то работает, но вот когда отнимаешь какое то кол - во секунд, например 00:00:00 (час:минута:секунда) - 20 секунд получается 23:59:39, если вместо 59 написать 60, то работает, но декремент получается на 1 меньше чем надо.

Как можно по другому написать? Подскажите

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void MyTime::Prev()             
{
        if (hour == 0)  hour = 24;
 
        if (sec >=1) sec--;
 
        if (sec < 1)
        {
                sec = 59;
                min--;
        }
 
        if (min < 1)
        {
                min = 59;
                hour--;
        }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2012, 21:07     Функция декремента
Посмотрите здесь:

Постфиксная и префиксная форма инкремента и декремента. C++
C++ Использование инкремента(Декремента)
C++ Перегрузка оператора инкремента/декремента через friend
Перегрузка оператора декремента C++
C++ Вывод в поток и операция инкремента / декремента
C++ Перегрузка декремента
C++ Перегрузка оператора декремента
Ассоциативность инкремента декремента C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,483
10.01.2012, 21:27     Функция декремента #2
Попробуй по-другому: Countdown
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
10.01.2012, 21:47     Функция декремента #3
Можно перевести всё время в секунды, от полученного отнимаем то, что нам надо, и если получаем отрицательное число, то к результату добавляем 86400 ( количество секунд в дне ).
Потом переводим назад в нормальное время.
Примерно так:
C++
1
2
3
4
5
6
7
int T = hour * 60 * 60 + min * 60 + sec;
T -= kakoe_to_kolichestvo_secund;
if ( T < 0 )
    T += 86400;
sec = T % 60;
min = T / 60 % 60;
hour = T / 3600;
Yandex
Объявления
10.01.2012, 21:47     Функция декремента
Ответ Создать тему
Опции темы

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