Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/173: Рейтинг темы: голосов - 173, средняя оценка - 4.97
2 / 2 / 0
Регистрация: 06.12.2011
Сообщений: 33
1

Не могу найти фунцию round в C++

06.12.2011, 00:12. Показов 34183. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые программисты. Прочитал в справочнике, что для использования функции round в C++ надо подключить файл math.h. Подключил его, а там нет такой функции, только ceil и floor. И в MSDN ничего не написано. Что делать - как быть? Работаю в VC2008, проект win32. В программировании и среде разбираюсь слабо, спасибо заранее.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2011, 00:12
Ответы с готовыми решениями:

Вызвать фунцию
Добрый день! Задача: привязать цель Я.Метрики к кнопке формы обратной связи через скрипт. Как...

Разложить фунцию в ряд Фурье
Есть функция y=0.5*exp(0.13*x) нужно разложить фунцию в ряд , и найти коэффициенты если период...

Правильно ли я реализовываю фунцию iconv?
Всем привет! Скажите пожалуйста правильно ли я реализовываю фунцию iconv? Ситуация следующая все...

Работа с датой не знаю фунцию
Стоит задача заменить месяцы на символы в дате наподобие 2017-04-26 11:45:04 хочу использовать вот...

20
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
06.12.2011, 00:18 2
http://www.cplusplus.com/refer... ath/floor/
http://www.cplusplus.com/refer... math/ceil/
1
2 / 2 / 0
Регистрация: 06.12.2011
Сообщений: 33
06.12.2011, 00:27  [ТС] 3
Спасибо, про эти функции мне известно А где же round - ее нет в списке. В справочнике написано, что она добавлена в версии языка С99. А у меня С++2008 - более поздняя версия. Выходит - свою функцию писать надо?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
06.12.2011, 00:35 4
похоже, что так
с != с++. совместимость есть до определенного момента. с помощью modf не особо сложно будет самоделку написать.
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
06.12.2011, 00:49 5
C++
1
2
3
4
int round (double value)
{
   return (int) floor(value + 0.5);
}
дело нехитрое
3
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
06.12.2011, 00:51 6
хитрое. не учли знак value.
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
06.12.2011, 00:55 7
DU, например?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
06.12.2011, 01:04 8
-4.6 должно округлится до -5. так? ок.
floor(-4.6 + 0,5) == floor(-4.1) == -4.
floor(-4.1 + 0,5) == floor(-3.6) == -3. а не -4 как ожидалось.

Что-то я кажись наглючил.

Точно наглючил. floor(value + 0.5); возаращает то, что надо.
0
2 / 2 / 0
Регистрация: 06.12.2011
Сообщений: 33
06.12.2011, 01:21  [ТС] 9
Цитата Сообщение от alex_x_x Посмотреть сообщение
C++
1
2
3
4
int round (double value)
{
   return (int) floor(value + 0.5);
}
дело нехитрое
Спасибо, еще подскажите, пожалуйста, почему мне пишется ошибка "Error 1 error C3861: 'round': identifier not found" при вызове этой функции?

Я так написал(нужен округленный double):

C++
1
2
3
4
5
6
// начало функция округления
double round(double double_value)
{
   return floor(double_value+0.5);
}
// конец функция округления
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
06.12.2011, 01:22 10
больше кода напишите
где вызываете
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
06.12.2011, 01:23 11
наверно используете ф-ию до ее определения. весь код покажите.
0
2 / 2 / 0
Регистрация: 06.12.2011
Сообщений: 33
06.12.2011, 01:37  [ТС] 12
Цитата Сообщение от alex_x_x Посмотреть сообщение
больше кода напишите
где вызываете
Пожалуйста:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// shift.cpp : Defines the exported functions for the DLL application.
#include "stdafx.h"
#include "math.h"
#define DLL extern "C" __declspec(dllexport)
// начало главной функции
DLL int __stdcall Shift(double * src, double * dest, int nPoints, int nShift)
{
    for(int i = 0; i < nPoints; i++)
    {
        dest[i]=round(src[i]);
    }
    return 0;
}
// конец главной функции----
//++++++++++++++++++++++++++
// начало функция округления
double round(double double_value)
{
    return floor(double_value+0.5);
}
// конец функция округления
//+++++++++++++++++++++++++
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
06.12.2011, 01:43 13
Перед ф-ией Shift поместите объявление вашей ф-ии

double round(double double_value);

или же сразу целиком
1
2 / 2 / 0
Регистрация: 06.12.2011
Сообщений: 33
06.12.2011, 02:01  [ТС] 14
Цитата Сообщение от DU Посмотреть сообщение
Перед ф-ией Shift поместите объявление вашей ф-ии

double round(double double_value);

или же сразу целиком
Спасибо, мир не без добрых людей
0
8 / 8 / 1
Регистрация: 23.09.2011
Сообщений: 45
05.03.2012, 18:38 15
Хоть си != си++, но в GCC почему-то функция round есть, код, содержащий round прекрасно компилируется и в Linux и во FreeBSD. Но тоже столкнулся с такой проблемой, когда решил этот код откомпилировать под Windows на Visual Studio.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.03.2012, 18:49 16
mdt::Vladimir, У всех компиляторов есть нестандартные расширения
0
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 4
03.06.2012, 17:16 17
Цитата Сообщение от alex_x_x Посмотреть сообщение
C++
1
2
3
4
int round (double value)
{
   return (int) floor(value + 0.5);
}
дело нехитрое
Nут и правда не всё учтено. Например
round( -1.5) = floor( -1,5 + 0.5 ) = -1 . А должно быть -2 !!!
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
03.06.2012, 17:32 18
округляется до большего, а не до меньшего
0
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 4
04.06.2012, 00:40 19
Цитата Сообщение от alex_x_x Посмотреть сообщение
округляется до большего, а не до меньшего

Округление к ближайшему целому
(англ. rounding) — наиболее часто используемое округление. Число в десятичной системе округляют до N-ого знака в зависимости от N+1 знака:

если N+1 знак < 5, то N-ый знак сохраняют, а N+1 и все последующие обнуляют;
если N+1 знак ≥ 5, то N-ый знак увеличивают на единицу, а N+1 и все последующие обнуляют.

Например: 11,9 → 12; −0,9 → −1; −1,1 → −1; 2,5 → 3.

http://ru.wikipedia.org/wiki/Округление
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
04.06.2012, 00:55 20
Цитата Сообщение от ForEveR Посмотреть сообщение
У всех компиляторов есть нестандартные расширения
Ну тогда весь стандарт ANSI C 99 - одно большое нестандартное решение от gcc

Цитата Сообщение от mdt::Vladimir Посмотреть сообщение
Но тоже столкнулся с такой проблемой, когда решил этот код откомпилировать под Windows на Visual Studio.
Мелкомягкие поддержку С99 так и не удосужились сделать, вместо этого своих нелепых велосипедов насочиняли.
0
04.06.2012, 00:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2012, 00:55
Помогаю со студенческими работами здесь

как сделать фунцию рекурсивной
Вот я тут написала код, который создает узел в дереве. Теперь вот хочу, чтоб при нажатии на button...

разложить фунцию f(t)=cost в ряд Фурье
Привет всем! Помогите пожалуйста разложить функцию f(t)=cost в ряд Фурье: 1) 2) Изобразить...

Как сделать фунцию рисующую объект?
в общем в порядке практики хочу сделать тетрис :D конкретно сейчас возник такой вопрос: как...

Как задать данную фунцию с циклами?
F(x,k) = x корень из к/пи в степени к, при условии если х принадлежит , дельта x = 0.1, дельта к =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru