Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
hepr
61 / 33 / 13
Регистрация: 21.10.2010
Сообщений: 538
#1

Округлить число не используя вещественненную арифметику

20.01.2012, 20:42. Просмотров 756. Ответов 7
Метки нет (Все метки)

Здравствуйте, есть два int a и b
Они принимают какие-либо значения, как можно округлить результат их деления не используя вещественненную арифметику
Ну предположим так:
a=3;
b=2;
Результат должен быть равен 2, так как 3/2 = 1.5, а 1.5 округляется до 2
Как это можно реализовать?
Заранее спасибо !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2012, 20:42
Ответы с готовыми решениями:

Поиск минимального элемента в трёхмерном массиве, используя адресную арифметику
1. Написать программу поиска минимального элемента в трёхмерном массиве используя адресную...

Найти длину указанного слова в строке, используя адресную арифметику
Написал код для нахождения длины указанного слова в строке, вот теперь надо сделать тоже самое...

Округлить число
Ну начнём))) Во-первых Visual Studio 10(Roudn и Trunc не видно) Во вторых float и cell +-.5 не...

как округлить число?
нужно чтобы от числа F выводило только целую часть, пример f=5.4 --->5 f=5.8 --->5 как это...

Как округлить число с 19 до 20
Вопрос в заголовке. Прошу подсказать.

7
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
20.01.2012, 20:43 #2
Оно автоматом округляется. Только в вашем случае до 1.
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.01.2012, 20:44 #3
Цитата Сообщение от dimcoder Посмотреть сообщение
Оно автоматом округляется.
В данном случае округлится до 1
0
mansp
18 / 18 / 7
Регистрация: 07.11.2010
Сообщений: 136
20.01.2012, 20:45 #4
инты не могут быть десятичными , это только целые числа
... и вправду округлится до 1....
0
lock
1 / 1 / 1
Регистрация: 11.01.2012
Сообщений: 4
20.01.2012, 20:51 #5
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cmath>
 
int main() {
 
    int a(3), b(2);
 
    std::cout << lround((double)a/b);
 
    return 0;
}
1
R136a1
143 / 112 / 36
Регистрация: 14.04.2011
Сообщений: 261
20.01.2012, 20:53 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
 
int main()
{
        int a, b;
 
        std::cin >> a >> b;
 
        std::cout << std::ceil(static_cast< double >(a)/b) << std::endl;
 
        return 0;
}
1
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
20.01.2012, 22:23 #7
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/////////////////////////////////////////////////////////////////////////////////////////
//Округлить число не используя вещественную арифметику.
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
int  int_round
    (
        int  L,
        int  R
    )
{
    return (L + R / 2) / R;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout   << "Введите целые операнды для целочисленного деления с округлением:"   
                << std::endl;
 
    for(;;)
    {
        std::cout   << '\t'
                    << "левый операнд:"
                    << '\t';
                    
        int  L = 0;
        std::cin >> L;
 
        std::cout   << '\t'
                    << "правый операнд:"
                    << '\t';
                    
        int  R = 0;
        std::cin >> R;
 
        if(R == 0) break;
 
        std::cout   << "int_round("
                    << L
                    <<  " / "
                    << R
                    << ") = "                    
                    << int_round(L, R)
                    << std::endl
                    << std::endl
                    << std::endl;
    }   
}
1
mansp
18 / 18 / 7
Регистрация: 07.11.2010
Сообщений: 136
20.01.2012, 22:34 #8
Цитата Сообщение от Mr.X Посмотреть сообщение
C++
1
    std::locale::global(std::locale(""));
Что значит это строка? или вернее что она делает?
0
20.01.2012, 22:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 22:34

Как округлить число до сотых?
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Мне 11 лет, и я учусь...

Как округлить число типо float?
Как округлить число типо float до определенного числа знаков после запятой?

Округлить заданное число до ближайшей сотни
Помогите решить плиз Задано неотрицательное целое число N. Округлить до ближайшей сотни. 50...


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

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

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