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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 484
19.09.2011, 15:32     Возведение степень #1
C++
1
2
3
int n=2;
float i;
i=pow(((n-1)/(n+1)), n*(n-1));
Выдает ошибку Domain Error. В чем дело и есть ли альтернатива pow() ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2011, 15:32     Возведение степень
Посмотрите здесь:

C++ Возведение в степень. C++
C++ возведение в степень!
C++ Возведение в степень!
C++ Возведение в степень
C++ Возведение в степень
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для 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
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
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
Сообщений: 484
19.09.2011, 15:43  [ТС]     Возведение степень #4
Прямо в консоли пишет Domain Error. Сделал n тоже float. Всё заработало.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 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
Сообщений: 484
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
программист С++
 Аватар для 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
программист С++
 Аватар для 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
Сообщений: 484
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
Сообщений: 484
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     Возведение степень
Еще ссылки по теме:

C++ Возведение в степень
Возведение a в степень b 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     Возведение степень
Ответ Создать тему
Опции темы

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