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

Как правильно округлить? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ удаление записи с фаила http://www.cyberforum.ru/cpp-beginners/thread92674.html
подскажитэ пожайлуста каким образом можна удалить запись из файла, например есть текстовый фаил внем скажем скажем 5 записей(в даном случае обектов) записано. Каким образом можна из его удалить...
C++ Смежность и инцидентность ребер и вершин в графе. Нужно взять любой граф (желательно попроще), ввести его програму. потом вводим 2 вершины, программа говорит, смежны ли они. затем вводим ребро и вершину, программа отвечает, инцидентны ли они,затем... http://www.cyberforum.ru/cpp-beginners/thread92625.html
нахождение корня на интервале C++
дано x^2-4x-8,75. найти корень уравнения f(x)=0 на интервале (A,B) c точностью E. использовать метод хорд. где A=5,5 B=6,5 E=10^-4. Результат решения - "Корень уравнения X" честно сказать в...
Как получить вещественное число при делении целых? C++
как получить дробное число? 14/5=2 14%5=4 а как сделать чтобы ответ был 2.8??? Добавлено через 9 минут все ненадо уже) сделал (float)n вот так
C++ Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? http://www.cyberforum.ru/cpp-beginners/thread92596.html
Условие: в программе определен печесляемый тип данных etype, отражающий должность сотрудника enum etype { laborer, secretary, manager, accountant, executive, researcher}. Надо по первой букве...
C++ работа с симметричной матрицей Работаю над реализацией симметричной матрицы на Си и столкнулся с такой проблемой: т.к. матрица симметричная,то памяти достаточно n*(n+1)/2,т.е. если на самом деле матрица 12 ... подробнее

Показать сообщение отдельно
insideone
Модератор
Автор FAQ
3642 / 921 / 49
Регистрация: 10.01.2010
Сообщений: 2,473
05.02.2010, 01:21
Не нравятся мне тут операции деления всякие... сделал по другому. Алгоритм таков. Если число секунд превышает 60 то число минут плюсуется а секунды отнимаются на 60. Так делается в цикле. В итоге получаем остаток секунд и минуты. Тоже делается относительно часов\минут. Зато гарантированно...
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
bool drop(long& a, int max, int& b);
int main()
{
        char ch = '/';
        time t1, t2, t3;
        t3.hours = 0; t3.minutes = 0; t3.seconds = 0;
        cout << "Input time1: ";
        cin >> t1.hours >> ch >> t1.minutes >> ch >> t1.seconds;
        cout << "Input time2: ";
        cin >> t2.hours >> ch >> t2.minutes >> ch >> t2.seconds;
        long totalsecs1 = t1.hours*3600 + t1.minutes*60 + t1.seconds;
        long totalsecs2 = t2.hours*3600 + t2.minutes*60 + t2.seconds;
        long totalsecs = totalsecs1 + totalsecs2;
 
        while ( drop(totalsecs, 60, t3.minutes) );
        t3.seconds = totalsecs;
        long totalminutes = t3.minutes;
        while ( drop(totalminutes, 60, t3.hours) );
        t3.minutes = totalminutes;
        cout << "Time summ: " << t3.hours << ch << t3.minutes << ch << t3.seconds << endl; 
        return 0;
}
 
bool drop(long& a, int max, int& b)
{
    if ( a >= max )
    {
        b++; a -= max;
        return true;
    }
return false;
}
ps. Время не может быть отрицательным так что члены struct time должны быть unsigned
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru