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

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

Войти
Регистрация
Восстановить пароль
 
aus
7 / 7 / 1
Регистрация: 18.10.2010
Сообщений: 56
#1

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

10.01.2012, 21:07. Просмотров 406. Ответов 2
Метки нет (Все метки)

Вот функция которая декрементирует время, если в коде написать 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++
Всем привет. Вот такую табличку недавно нашел - http://ru.cppreference.com/w/cpp/language/operator_precedence Почему префиксный...

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

Перегрузка оператора декремента - C++
Приветствую Вас форумчане:dance3: Столкнулся с такой проблемой при перегрузке операции декремента для своего класса, вот код: ...

Использование инкремента(Декремента) - C++
Есть три кнопки и три индикатора(лампочки). Если нажимаю кнопку-1 тогда включается лампочка нажимаю еще раз выключается. Если по одному...

Перегрузка оператора декремента - C++
Собственно, нужно написать программу для уменьшения значения переменной на 10, путем перегрузки оператора декремента(&quot;--&quot;). Не знаю даже...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Digit@ll
Brainsbreaker
881 / 359 / 30
Регистрация: 01.02.2011
Сообщений: 1,573
10.01.2012, 21:27 #2
Попробуй по-другому: Countdown
x1Mike7x
216 / 129 / 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;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2012, 21:47
Привет! Вот еще темы с ответами:

Перегрузка операций никремента и декремента - C++
Привет, не могу никак операции никремента и декремента сделать, помогите разобраться тупому и переделать функции void snyat(), void...

Вывод в поток и операция инкремента / декремента - C++
При использовании следующего оператора вывода в поток: int n = 10; cout &lt;&lt; n++ &lt;&lt; ' ' &lt;&lt; n &lt;&lt; ' ' &lt;&lt; --n &lt;&lt; endl; получил такой...

Постфиксная и префиксная форма инкремента и декремента. - C++
Само задание: Написать программу с примерами постфиксной и префиксной формами инкремента и декремента. Число вводится с клавиатуры. ...

Перегрузка оператора инкремента/декремента через friend - C++
Нужно реализовать перегрузку унарного оператора через friend. Что я пытаюсь сделать: friend void operator -- ();//prototype void...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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