Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
dicros
1 / 1 / 1
Регистрация: 24.04.2014
Сообщений: 64
#1

Время - C++

09.06.2014, 17:09. Просмотров 559. Ответов 20
Метки нет (Все метки)

Здравствуйте недавно начал изучать C++ смотрю примеры в книги, а на те примеры которые в учебнике нет ответов сверяюсь с их решение у вас на сайте в теме Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"


И возникает вот такой вопрос приведу пример

Допустим у нас есть часы, минуты, секунды

C++
1
2
3
int hours;
int minutes;
int seconds;
Я хочу сделать проверку, как известно всего минут может быть 60, а значит если у меня в программе их 80 то должен прибавиться час а в минутах сохраниться число 20.


Вот как такую проверку делают в книги, а также на сайте в решенных примерах(h-hours, m-minutes, s-seconds)

C++
1
2
3
4
5
6
7
8
9
   if(m>=60) 
          {
              h++; m-=60;
          }
 
          if(s>=60) 
         {
             m++; s-=60;
         }

Неужели это правильно???
Ведь если я допустим запишу вот так:

C++
1
2
3
4
5
6
7
int minutes=320;
 
if(minutes>=60)
{
   hours++;
   minutes-=60;
}
То у меня переменная hours повысится всего лишь на 1 час, а в переменной minutes все равно останется значение 260. Или я что то не так понимаю???


Просто я когда этот пример писал я делал таким образом

C++
1
2
3
4
5
if(minutes>=60)
{
   hours=minutes/60;
   minutes%=60;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 17:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Время (C++):

Выводить текущее время в определенные позиции консоли во время работы - C++
Портирую консольное приложение. Есть код, который работал после компиляции в BC++ 3.1, после компиляции под MinGW GCC программа не...

Записи. Дано время t1 и время t2. Определить, сколько времени пройдет от t1 до t2 - C++
Дано время t1 и время t2. Гарантируется, что t1 и t2 -время одного дня, а также что t1<t2. Определить, сколько времени пройдет от t1 до t2....

Функция: Написать функцию next(t, t1, d), которая присваивает параметру t1 время на d секунд больше, чем время t. - C++
Прошу помочь. Ввести структуру time с полями часы, минуты, секунды. Составить и протестировать функции: next(t, t1, d), которая...

Ввести время и от него отнять системное время - C++
Необходимо ввести время и от него отнять системное время,необходимо сделать так Введите часы : 17 минуты : 00 и результат к примеру...

Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы программы - C++
1. Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы...

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

20
Kverter
35 / 35 / 16
Регистрация: 30.10.2013
Сообщений: 211
09.06.2014, 17:49 #16
ValeryS, Ой,сори скобка не там =)
C++
1
2
3
4
5
6
7
8
9
10
if ((sec>=60))
       {
    minutes=minutes+sec/60;
    sec=sec-sec/60*60;
         }
    if (minutes>=60)
    {
    h=h+minutes/60;
    minutes = minutes-minutes/60*60;
    }
0
dicros
1 / 1 / 1
Регистрация: 24.04.2014
Сообщений: 64
09.06.2014, 17:55  [ТС] #17
Цитата Сообщение от ValeryS Посмотреть сообщение
как поведет себя время 2ч 120мин 5 сек???
будет 4 часа 0 минут и 5 секунд. В чем тут ошибка?
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,189
09.06.2014, 17:59 #18
Kverter,
у тебя два раза проводится одно и тоже деление

Цитата Сообщение от Kverter Посмотреть сообщение
minutes=minutes+sec/60;
sec=sec-sec/60*60;
можно оптимизировать
C++
1
2
3
int tmp=sec/60;
minutes=minutes+tmp;
sec=sec-tmp*60;
тоже самое и с минутами

Добавлено через 2 минуты
Цитата Сообщение от dicros Посмотреть сообщение
будет 4 часа 0 минут и 5 секунд. В чем тут ошибка?
по шагам пройди
C++
1
2
3
4
5
6
7
8
9
10
11
if (seconds >= 60)
    {
        minutes = seconds / 60;
 
        if (minutes >= 60)
        {
            hours = minutes / 60;
            minutes %= 60;
        }
        seconds %= 60;
    }
время 2ч 120мин 5 сек
первым делом проверяется if (seconds >= 60)
нет не больше
все в ветку не входим следовательно до if (minutes >= 60) дело не дойдет
0
dicros
1 / 1 / 1
Регистрация: 24.04.2014
Сообщений: 64
09.06.2014, 18:02  [ТС] #19
Цитата Сообщение от ValeryS Посмотреть сообщение
по шагам пройди
Код C++
1
2
3
4
5
6
7
8
9
10
11
if (seconds >= 60)
* * {
* * * * minutes = seconds / 60;
if (minutes >= 60)
* * * * {
* * * * * * hours = minutes / 60;
* * * * * * minutes %= 60;
* * * * }
* * * * seconds %= 60;
* * }
время 2ч 120мин 5 сек
первым делом проверяется if (seconds >= 60)
нет не больше
все в ветку не входим следовательно до if (minutes >= 60) дело не дойдет

Так это ясно , я этот пример привел лишь для случая если я ввожу только секунды и причем больше 60 )))

C++
1
2
3
4
5
6
7
8
9
int hours=0;
int minutes=0;
int seconds=0;
 
cout << "Input seconds: "; cin >> seconds;
 
проверка...
 
cout << hours << ":" << minutes << ":" << seconds << endl;
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,189
09.06.2014, 18:44 #20
Цитата Сообщение от dicros Посмотреть сообщение
я ввожу только секунды и причем больше 60 )))
тогда вообще все проще
C++
1
2
3
4
5
6
7
8
9
int hours=0;
int minutes=0;
int seconds=0;
 
cout << "Input seconds: "; cin >> seconds;
hours=seconds/3600;
minutes=(seconds%3600)/60;
seconds=seconds%60;
cout << hours << ":" << minutes << ":" << seconds << endl;
0
dicros
1 / 1 / 1
Регистрация: 24.04.2014
Сообщений: 64
09.06.2014, 21:27  [ТС] #21
ValeryS, согласен действительно проще. Всем спасибо что откликнулись и помогли разобраться.
0
09.06.2014, 21:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2014, 21:27
Привет! Вот еще темы с ответами:

время - C++
неподскажите как сделать будильник с использованием системного времени. кое какие наработки уже есть незнаю что дальше работаю в...

Время - C++
Даётся часы и минуты к примеру 12ч 00м и нам надо их перевести на 30 минут назад тоесть будет 11 30 :(

время - C++
Здравствуйте господа програмисты!знает ли кто как в с++ вывести на экран время.может это системная функция или ещё что,буду очень...

время - C++
с клавиатуры вводится время в 24-часовом формате xx:xx, затем нужно считать целые числа до и после двоеточия scanf (&quot;%i%c%i&quot;, &amp;chas,...


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

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

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