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

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

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

Время - C++

09.06.2014, 17:09. Просмотров 527. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 17:09     Время
Посмотрите здесь:

В сообщении может содержаться время в формате чч:мм. Увеличите время на n минут - C#
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания. Обработать...

Можно ли вставить сравнение с графиком работ время первого входа и время начала дневных часов по графику? - 1С
Помогите новичку. В док отработанное время заполняет первый вход и последний выход по физлицу, как, можно-ли вставить сравнение с графиком...

Joomla 3 время требуется сократить время отклика - Joomla
Добрый день господа! Требуется ускорить загрузку сайта сайт moscowbrand.ru работает более 5 лет, шаблон, время отклика 500-1000 мс. ...

Вычислить время простоя в рабочее время - MS Excel
Мне нужно узнать сколько времени простоя занимает в раб. время(только будни) с 8:30-17:30 если: дата начала простоя 01.01.2017...

Таблица содержит результаты спортивных соревнований: Ф.И.О., время на 100 м, время на 1 км, прыжок в высоту, прыжок в длину. Составить массив записей - Pascal
Таблица содержит результаты спортивных соревнований: Ф.И.О., время на 100 м, время на 1 км, прыжок в высоту, прыжок в длину. Составить...

Дано время N в секундах. Выразить это время в сутках, часах, минутах и секундах. - Turbo Pascal
Дано время N в секундах. Выразить это время в сутках, часах, минутах и секундах. Можете помочь написать программу!? p.s. Буду...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
    }
dicros
1 / 1 / 1
Регистрация: 24.04.2014
Сообщений: 64
09.06.2014, 17:55  [ТС]     Время #17
Цитата Сообщение от ValeryS Посмотреть сообщение
как поведет себя время 2ч 120мин 5 сек???
будет 4 часа 0 минут и 5 секунд. В чем тут ошибка?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
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) дело не дойдет
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;
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
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;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2014, 21:27     Время
Еще ссылки по теме:

когда захожу на страницу у меня все время страница вверх вниз вверх вниз и так продолжается все время - Видеокарты
У меня была видеокарта Gt 7300 256 mb!Игры ишли,даже сталкер ишел хоть и насреднем и она меня устраивала,но недавно сломалась! мне...

компьютер вырубается во время игр каждый раз через разное время. - Компьютерное железо
помогите пожалуйста* компьютер Acer aspire m3201. * ** ** * Тип ЦП* ** ** ** ** ** ** ** ** ** ** ** ** ** ** TripleCore AMD Phenom X3...


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

Или воспользуйтесь поиском по форуму:
dicros
1 / 1 / 1
Регистрация: 24.04.2014
Сообщений: 64
09.06.2014, 21:27  [ТС]     Время #21
ValeryS, согласен действительно проще. Всем спасибо что откликнулись и помогли разобраться.
Yandex
Объявления
09.06.2014, 21:27     Время
Ответ Создать тему
Опции темы

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