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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 486
#1

Возведение степень - C++

19.09.2011, 15:32. Просмотров 1239. Ответов 13
Метки нет (Все метки)

C++
1
2
3
int n=2;
float i;
i=pow(((n-1)/(n+1)), n*(n-1));
Выдает ошибку Domain Error. В чем дело и есть ли альтернатива pow() ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
19.09.2011, 15:34     Возведение степень #2
maest, pow принимает вещественные аргументы, по крайней мере студия такое не скомпилит
http://www.cplusplus.com/reference/clibrary/cmath/pow/
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
19.09.2011, 15:38     Возведение степень #3
полный текст ошибки какой?
C++
1
2
3
double n=2;
float i;
i=pow(((n-1)/(n+1)), n*(n-1));
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 486
19.09.2011, 15:43  [ТС]     Возведение степень #4
Прямо в консоли пишет Domain Error. Сделал n тоже float. Всё заработало.
Mиxaил
531 / 436 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
19.09.2011, 19:30     Возведение степень #5
а так:
C++
1
2
3
int n=2;
float i;
i=pow(((n-1)/(n+1)) * 1., n*(n-1));
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 486
19.09.2011, 20:04  [ТС]     Возведение степень #6
Цитата Сообщение от Mиxaил Посмотреть сообщение
а так:
C++
1
2
3
int n=2;
float i;
i=pow(((n-1)/(n+1)) * 1., n*(n-1));
Неа
sandye51
программист С++
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
19.09.2011, 21:45     Возведение степень #7
Mиxaил, показатель степени тоже должен быть вещественным числом
-=ЮрА=-
Заблокирован
Автор FAQ
19.09.2011, 22:04     Возведение степень #8
maest, попробуй вот такую запись
C++
1
float i=pow((1,0*(n-1)/(n+1)), 1,0*n*(n-1));
Допустим n == 2 тогда в случае целочисленного деления
(n-1)/(n+1) = (2 - 1)/(2 + 1) = 1/3 = 0
такая же запись позволит осуществить неявное преобразование к вещественному типу, получим
1.0/3 = 0.33333 то же самое и с показателем степени
sandye51
программист С++
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
19.09.2011, 22:26     Возведение степень #9
-=ЮрА=-, там точки, а не запятые надо
-=ЮрА=-
Заблокирован
Автор FAQ
19.09.2011, 22:36     Возведение степень #10
Цитата Сообщение от sandye51 Посмотреть сообщение
-=ЮрА=-, там точки, а не запятые надо
- да точно, как то не обратил внимания, благодарю за поправкуТут норм писал
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
1.0/3
, а вот в ответе расскладку не поменял, но благодарю за бдительнось
maest, вот так коректная запись выглядит
C++
1
float i=pow((1.0*(n-1)/(n+1)), 1.0*n*(n-1));
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 486
19.09.2011, 22:41  [ТС]     Возведение степень #11
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
maest, попробуй вот такую запись
C++
1
float i=pow((1,0*(n-1)/(n+1)), 1,0*n*(n-1));
Допустим n == 2 тогда в случае целочисленного деления
(n-1)/(n+1) = (2 - 1)/(2 + 1) = 1/3 = 0
такая же запись позволит осуществить неявное преобразование к вещественному типу, получим
1.0/3 = 0.33333 то же самое и с показателем степени
E2227 Extra parameter in call to pow(double,double)

Да все уже работает. При n типа float.
-=ЮрА=-
Заблокирован
Автор FAQ
19.09.2011, 22:43     Возведение степень #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
maest, вот так коректная запись выглядит
float i=pow((1.0*(n-1)/(n+1)), 1.0*n*(n-1));
- ругался компилятор скорее всего из за запятых после единиц...
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 486
19.09.2011, 22:44  [ТС]     Возведение степень #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- да точно, как то не обратил внимания, благодарю за поправкуТут норм писал , а вот в ответе расскладку не поменял, но благодарю за бдительнось
maest, вот так коректная запись выглядит
C++
1
float i=pow((1.0*(n-1)/(n+1)), 1.0*n*(n-1));
Так работает,спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2011, 22:54     Возведение степень
Еще ссылки по теме:

Возведение a в степень b C++
возведение в степень C++
C++ Возведение в степень
C++ Возведение в степень

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
19.09.2011, 22:54     Возведение степень #14
Цитата Сообщение от maest Посмотреть сообщение
Так работает,спасибо!
- неявное преобразование может ещё пригодиться, например нужно вывести процент копирования чего нибудь. Допустим nCount - общее число элементов (байт, вобщем структурных единиц) nCur - текущий объём данных, так вот 100,0*nCur/nCount позволит выводить точное число процентов, тогда как такая запись 100*nCur/nCount на многих старых компиляторах до момента nCount==nCur будет давать 0
Yandex
Объявления
19.09.2011, 22:54     Возведение степень
Ответ Создать тему
Опции темы

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