Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2014, 12:40   #1
jihot
Начинающий кодер
Пользователь
 
Аватар для jihot
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию Корень из отрицательного числа в нечетной степени, NaN

Здравствуйте, Друзья!

Требовалось написать программку вычисления X и Y, сумма кубов которых равна N;
Вх.данные - N;

2 цикла перебора было бы проще, но по времени конечно очень долго, поэтому:
Код:
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
	double X,Y,N;
	cin >> N;
	for (X=-100; X<=100; X++) //Маленький цикл сделал пока для наглядности, чтоб проверить на маленьких числах. Сути это не меняет
	{
	 Y=round(pow(N-round(pow(X,3)),1.0/3));
	 if (X*X*X+Y*Y*Y==N)  
	cout << X << ' ' << Y << endl;
    }
}
Round в вычислениях пришлось использовать т.к pow просто возвращает 4.9999[9] и это дробная отбрасывается.

Но далее обнаружилась проблема в том, что при вычислении Y, если N-X^3 отрицательное число, то проблема возведения в степень.
Это моя догадка, судя по результатам.

=> кубический корень из отрицательного числа возвращает NaN


Собственно, у меня и возник вопрос - почему так происходит?


P.S. Когда писал вопрос сюда, пришла идея - возводить в степень число по модулю. А потом, возвращать знак. Если число было отрицательное.
По сути это бы наверно все исправило.
with love ^.^
jihot вне форума Ответить с цитированием
Старый 27.11.2014, 18:02   #2
Zenon
Пользователь
 
Регистрация: 03.07.2014
Сообщений: 32
По умолчанию

У вас правильная идея, pow может не поддерживать отрицательное основание типа double, даже если оно округлено до целого (зависит от реализации). Можете еще попробовать сделать N целым, но то, что вы задумали - самый корректный подход.
Zenon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корень из отрицательного числа Baizer Помощь студентам 1 12.12.2011 14:34
Вычислить корень 5 степени из положительного числа Dartchuwak Общие вопросы C/C++ 4 12.12.2009 22:08
Вычислить корень 5-ой степени из числа a с точностью E С++ Dartchuwak Помощь студентам 0 10.12.2009 18:07
Кубический корень от отрицательного числа Vito89 Помощь студентам 9 29.09.2009 14:40