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

Modf() - C++

Восстановить пароль Регистрация
 
MRG_Serejka
10 / 10 / 3
Регистрация: 15.08.2013
Сообщений: 146
Завершенные тесты: 2
21.06.2016, 22:00     Modf() #1
Добрый вечер . Объясните пожалуйста почему не работает

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
#include <iostream>
#include <cmath>
 
using namespace std;
 
void round (double &num);
 
int main()
{
double i=100.4;
cout << i << " Округленное значение равно: ";
round ((double) i);
cout << i << "\n";
 
i=-10.9;
cout << i << " Округленное значение равно: ";
round ((double) i);
cout << i << '\n';
 
return 0;
}
void round(double &num)
{
double drob;
double celoe;
drob = modf(num, &celoe);
 
if (drob<0.5) num=celoe;
else num = celoe + 1.0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2016, 22:00     Modf()
Посмотрите здесь:

Функция modf C++
Fmod modf и цикл while C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,722
Записей в блоге: 3
21.06.2016, 22:09     Modf() #2
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
Добрый вечер .
И Вам добрый вечер.
Зачем приводите double к doudle? Приведение (дух бестелесный) порождает объект в который нельзя писать. На него ссылка - вещь бессмысленная. Даже без кода реализации void round (double &num) не по себе как-то. Функцию-то покажите тоже. Интересно ведь.
MRG_Serejka
10 / 10 / 3
Регистрация: 15.08.2013
Сообщений: 146
Завершенные тесты: 2
21.06.2016, 22:15  [ТС]     Modf() #3
IGPIGP, если double к double не привести. то компилятор выдает ошибки

Добавлено через 3 минуты
IGPIGP,
следственно убрал приведение к типу double скомпилировал теперь такие ошибки

program14.cpp:12:9: error: call of overloaded ‘round(double&)’ is ambiguous
round (i);
^
In file included from /usr/include/features.h:367:0,
from /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:39,
from /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:482,
from /usr/include/c++/5/iostream:38,
from program14.cpp:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:319:1: note: candidate: double round(double)
__MATHCALLX (round,, (_Mdouble_ __x), (__const__));
^
program14.cpp:6:6: note: candidate: void round(double&)
void round (double &num);
^
program14.cpp:17:9: error: call of overloaded ‘round(double&)’ is ambiguous
round (i);
^
In file included from /usr/include/features.h:367:0,
from /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:39,
from /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:482,
from /usr/include/c++/5/iostream:38,
from program14.cpp:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:319:1: note: candidate: double round(double)
__MATHCALLX (round,, (_Mdouble_ __x), (__const__));
^
program14.cpp:6:6: note: candidate: void round(double&)
void round (double &num);
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,722
Записей в блоге: 3
21.06.2016, 22:28     Modf() #4
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
если double к double не привести. то компилятор выдает ошибки
Вот эта фраза без кода функции round (double &num) - чистый каприз. Потому как если функция без ошибок то изменение имени могло бы помочь ещё. Дело в том что round - библиотечная функция. Не применяйте слов не проверив их значения.

Добавлено через 10 минут
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
следственно убрал приведение к типу double скомпилировал теперь такие ошибки
сюда взгляните:
http://www.cplusplus.com/reference/cmath/round/
Хотите библиотечную вызвать - присвойте результат вызова. А свою переименуйте. Пусть будет myRound например. Ничего что не оригинально. Зато глюки самой функции (а они по всей видимости будут) заставят Вас выложить её реализацию. Говорить о функции без её кода, - последнее дело.
Yandex
Объявления
21.06.2016, 22:28     Modf()
Ответ Создать тему
Опции темы

Текущее время: 08:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru