C/Visual C - calculo de raices en c++

 
Vista:

calculo de raices en c++

Publicado por jose (1 intervención) el 02/07/2017 04:11:51
Hola estoy haciendo un programa de práctica en el que pretendo capturar un numero al cual sacarle la raíz correspondiente que capturo en un segundo número, es decir si capturo 2 y 4 sacaría raíz cuarta de 2, pero cuando capturo el primer número negativo cualquier raíz que intente obtener me da "nan" y se supone son las raíces pares las que no puedo calcular con números negativos, el código es el siguiente:

double x=0, y, r;
cin >> y;
cin >> r;
r=1.0/r;
x = pow(y, r);
cout << x;
cin.get();

saludos y gracias anticipadas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 265
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

calculo de raices en c++

Publicado por dario (11 intervenciones) el 02/07/2017 11:55:32
Te dejo esto a ver si te sirve.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main() {
    double a,b,r;
 
    cout << "Primer numero: ";
    cin >> a;
    cout << "Segundo numero: ";
    cin >> b;
 
    if (a < 0)
        cout << "\nNo se puede calcular raices negativas";
    else {
        r = pow(a,(1/b));
        cout << "El resultado es " << r << endl;
    }
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 2 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

calculo de raices en c++

Publicado por Héctor Murcia (5 intervenciones) el 02/07/2017 17:59:44
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
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
 
int main() {
    double b, r, a;
 
    cout << "\nBase: ";  cin >> b;
    do {
        cout << "\nRaiz: ";  cin >> r;
        if (r != int(r))
            cout << "\nEspecifique una raiz entera.\n";
        else
            if (int(r) % 2 == 0 && b < 0)
                cout << "\nNo es posible obtener una raiz par para un numero negativo.\n";
    } while(r != int(r) || int(r) % 2 == 0 && b < 0);
 
    if (b < 0)
        a = pow(-b, 1/r);
    else
        a = pow(b, 1/r);
 
    cout << "\n\nRaiz " << r << " de " << b << " = " << (b < 0 ? -a : a);
    system("pause>nul");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

calculo de raices en c++

Publicado por Tom (619 intervenciones) el 03/07/2017 09:20:31
Hay muchos casos en los que pow() puede retornar NaN, te recomiendo que mires con atención la documentación de esta rutina.
Creo que, en tu caso aplicaría esto, copiado del standard de c:

"A domain error occurs if x is finite and negative and y is finite and not an integer value."
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar