Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
5 / 5 / 1
Регистрация: 12.06.2012
Сообщений: 60

Функция округления чисел

25.04.2013, 14:11. Показов 5168. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста. Написала функцию округления цифр

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void RoundingFunction(double RoundingVariable, int& ResultVariable)
{
    double IntegerPart=0;
    ResultVariable=0;
    if (modf(abs(RoundingVariable),&IntegerPart)<=0.5)
    {
        if (RoundingVariable>0)
            ResultVariable=floor(RoundingVariable);
        else
            ResultVariable=ceil(RoundingVariable);
    }
    else
    {
        if (RoundingVariable>0)
            ResultVariable=ceil(RoundingVariable);
        else
            ResultVariable=floor(RoundingVariable);
    }
}
И вот мне интересно, возможен ли такой вариант, при вызове функции передать туда элемент динамического массива? Например:

C++
1
RoundingFunction(IndexRho,IndexRhoM[i*column+j]);
Когда компилируешь ошибок нет. Но стоит попытаться использовать массив IndexRhoM, он выдает мне необработанное исключение, при чем ссылается на эту функцию. Подскажите. Можно ли так сделать? Кстати, он выдает мне warning в этой функции так как по сути я присваиваю целому значению double значение.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.04.2013, 14:11
Ответы с готовыми решениями:

Функция округления
Добрый вечер,дала задание написать свою функцию округления числе,и применить её на своем придуманном примере,например,округлить число...

Функция округления double
Как в С++ округлить double до int? С помощью какой функции?

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

25
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
25.04.2013, 18:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Eumi Посмотреть сообщение
Создайте файл с таким массивом.
и так 5*5
а в обращении есть
Цитата Сообщение от Eumi Посмотреть сообщение
y[IndexRhoM[i]*360+IndexThetaN[i]]
т.е может быть и 360 и 720
вот тебе и выход за пределы

я обычно делаю так
расписываю выражения
например
Цитата Сообщение от Eumi Посмотреть сообщение
for (i=0; i<n; i++)
HoughTransformArray[IndexRhoM[i]*360+IndexThetaN[i]]=HoughTransformArray[IndexRhoM[i]*360+IndexThetaN[i]]+Gradient[i];
C++
1
2
3
4
for (i=0; i<n; i++)
{ int ind1=IndexRhoM[i]*360+IndexThetaN[i];
   HoughTransformArray[ind1]=HoughTransformArray[ind1]+Gradient[i];
}
а потом в отладчике слежу за ind1
можно ввести отладочную печать
C++
1
printf("%d",ind1);
тогда понятно какие значения принимает индекс и есть ли выход за пределы
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
25.04.2013, 18:39
Вот Ваш проблемный случай:
C++
1
2
3
4
5
for (i=0; i<n; i++)
{
   int index = IndexRhoM[i]*360+IndexThetaN[i]; // Индекс выходит за пределы
   HoughTransformArray[index]=HoughTransformArray[index]+Gradient[i];
}
P.S. ValeryS тоже об этом сказал.
1
5 / 5 / 1
Регистрация: 12.06.2012
Сообщений: 60
25.04.2013, 19:20  [ТС]
Tulosba, ValeryS,
ясно=) все верно матрица может быть и 320 на 720=) это не страшно. Я, просто в один момент немного поменяла формулу

было:
C++
1
IndexRho=MaxRho-(MaxRho-RhoPolarCoordinate[i*column+j])*(MaxRho-1)/(2*MaxRho);
а стало:
C++
1
IndexRho=2*MaxRho-(MaxRho-RhoPolarCoordinate[i*column+j])*(MaxRho-1)/(2*MaxRho);
но при этом забыла, что количество строк тоже должно увеличиваться в двое. то есть все решает одна строчка
C++
1
2
3
    RoundingFunction(MaxRho,MaxRhoInt);
    MaxRhoInt=2*MaxRhoInt; // вот эта вот=)))
    AlocatePicture(HoughTransformArray, MaxRhoInt, MaxTheta);
Tulosba, ValeryS спасибо вам огромное за помощь. Я просто уже столько с этим кодом вожусь что у меня ум за разум заходит. Без ваших пояснений, не додумалась бы, что дело в пределах. Еще раз спасибо большое. К сожалению репутацию я вам меня пока не могу=) ошибки не выдает, теперь буду возиться, чтобы все это работало правильно=)
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
25.04.2013, 21:13
Eumi, да Вам много чего не помешает в коде перелопатить.
0
5 / 5 / 1
Регистрация: 12.06.2012
Сообщений: 60
26.04.2013, 00:25  [ТС]
Цитата Сообщение от Tulosba Посмотреть сообщение
Eumi, да Вам много чего не помешает в коде перелопатить.
Например? Hough Transform я только начала делать=) алгоритм еще сырой=) его переделывать и переделывать еще=) а если подскажите что нить по остальной части буду очень благодарна, потому что на мой взгляд новичка, все нормально=) при условии что мне сказали глубоко не лезть=)
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
26.04.2013, 07:56
Eumi, вся программа написана хоть и на c++, но в стиле обычного c. Имитация двумерности массивов. Выделение/освобождение памяти в куче. Дублирование кода. Да много чего на взгляд новична незаметного
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2013, 07:56

Функция округления вещественного числа с заданной точностью
Написать шаблон функции, которая принимает в качестве параметров вещественное число и количество знаков после десятичной точки, которые...

Функция floor для округления значения до определённого числа знаков дробной части
Всем привет ребята. кто мог бы объяснить где и что неправильно у меня в коде и как это исправить. Благодарю за внимание. Условие задачи:...

Как избежать округления дробных чисел
как сделать что бы не округляло ??? float t; float z,m; using namespace std; void main(void) { m=-pow(5,2)/2;

Как избежать округления дробных чисел
не виводит дробь а только целие числа. где проблема ? #include &lt;iostream.h&gt; #include &lt;math.h&gt; int mat(double x,double...

Каков принцип округления дробных чисел у компьютера/компилятора?
Всем привет. У меня тут такой вопрос для темы: Как именно осуществляется округление дробных чисел в компьютере? Какими правилами он...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru