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

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

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

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

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

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

Возведение в степень - C++
Почему, когда я пытаюсь возвести в квадрат x с типом int, то получается 24, а когда с типом double, то все хорошо и получается 25? ...

Возведение в степень - C++
напишите программный код для С++ Builder

Возведение в степень - C++
Срочно, помогите записать выражение cos^4(x)

Возведение в степень - C++
Дано число n и его нужно возвести в степень s. Можно ли это как-то сделать не используя циклы. Заранее спасибо...

Возведение в степень - C++
Подскажите оператор для возведения числа в n-ую степень. Зарание спасиба

Возведение a в степень b - C++
Пользователь вводит числа а и b, программа считает "а" в степени "b". Помогите написать код

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
19.09.2011, 15:34 #2
maest, pow принимает вещественные аргументы, по крайней мере студия такое не скомпилит
http://www.cplusplus.com/reference/clibrary/cmath/pow/
1
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));
0
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 489
19.09.2011, 15:43  [ТС] #4
Прямо в консоли пишет Domain Error. Сделал n тоже float. Всё заработало.
0
Mиxaил
533 / 438 / 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));
0
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 489
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));
Неа
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
19.09.2011, 21:45 #7
Mиxaил, показатель степени тоже должен быть вещественным числом
0
-=ЮрА=-
Заблокирован
Автор 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 то же самое и с показателем степени
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
19.09.2011, 22:26 #9
-=ЮрА=-, там точки, а не запятые надо
0
-=ЮрА=-
Заблокирован
Автор 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));
1
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 489
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.
0
-=ЮрА=-
Заблокирован
Автор FAQ
19.09.2011, 22:43 #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
maest, вот так коректная запись выглядит
float i=pow((1.0*(n-1)/(n+1)), 1.0*n*(n-1));
- ругался компилятор скорее всего из за запятых после единиц...
0
maest
79 / 34 / 3
Регистрация: 11.11.2010
Сообщений: 489
19.09.2011, 22:44  [ТС] #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- да точно, как то не обратил внимания, благодарю за поправкуТут норм писал , а вот в ответе расскладку не поменял, но благодарю за бдительнось
maest, вот так коректная запись выглядит
C++
1
float i=pow((1.0*(n-1)/(n+1)), 1.0*n*(n-1));
Так работает,спасибо!
0
-=ЮрА=-
Заблокирован
Автор FAQ
19.09.2011, 22:54 #14
Цитата Сообщение от maest Посмотреть сообщение
Так работает,спасибо!
- неявное преобразование может ещё пригодиться, например нужно вывести процент копирования чего нибудь. Допустим nCount - общее число элементов (байт, вобщем структурных единиц) nCur - текущий объём данных, так вот 100,0*nCur/nCount позволит выводить точное число процентов, тогда как такая запись 100*nCur/nCount на многих старых компиляторах до момента nCount==nCur будет давать 0
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2011, 22:54
Привет! Вот еще темы с ответами:

Возведение в степень - C++
Совсем недавно начал изучать C++. Учу по книге. Было задание: Вводишь число Вводишь степень в которую надо возвести это число ...

Возведение в степень! - C++
Возник вопрос - Возможно пока не понятна в чем мысль! Попробую на примере объяснить! Возведение числа 2 в 1000 - ую степень будет...

возведение в степень! - C++
Кто помнит функцию возведения в степень.?? "трам-пам-пам" (a,b) ???? Добавлено через 3 минуты И еще желательно...

Возведение в степень. C++ - C++
можно ли написать программу для возведения в вводимую степень вводимого числа с помощью рекурсивной функции


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.09.2011, 22:54
Ответ Создать тему
Опции темы

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