Discussion:
Problema de cálculo
(demasiado antiguo para responder)
Juan
2004-11-03 09:41:47 UTC
Permalink
La expresión [ x ^ (1 / n) ] es usada para el cálculo de la raiz n de
un número. En C, dicha expresión equivale a [ pow(x, (1 / n)) ], pero
al usarla obtengo como valor resultante "1", como si hubiese elevado
el término x a 0. No obstante expresiones como [ pow(x, 0.3) ] sí
proporcionan el resultado correcto. ¿Cómo es esto posible?. Utilizo
Turbo C++ 1.01

--------------------

/* Calcular la raiz n de un número */

#include <stdio.h>
#include <math.h>

main()

{
float num1, num2, raiz;

do {
printf("\nCifra: ");
scanf("%f", &num1);
} while(num1 < 0);

do {
printf("\Exponente: ");
scanf("%f", &num2);
} while(num2 <= 0);

raiz = pow(num1, (1 / num2));
printf("\nRaiz = %.2f", raiz);
}

-------------------

El desarrolo del programa es correcto hasta que se calcula "raiz",
donde siempre obtengo como resultado "1.00". ¿Cómo podría
solucionarlo?

Gracias.
Martin J. Sanchez
2004-11-03 14:14:41 UTC
Permalink
Post by Juan
La expresión [ x ^ (1 / n) ] es usada para el cálculo de la raiz n de
un número. En C, dicha expresión equivale a [ pow(x, (1 / n)) ], pero
al usarla obtengo como valor resultante "1", como si hubiese elevado
el término x a 0. No obstante expresiones como [ pow(x, 0.3) ] sí
proporcionan el resultado correcto. ¿Cómo es esto posible?. Utilizo
Turbo C++ 1.01
...
float num1, num2, raiz;
...
raiz = pow(num1, (1 / num2));
...
Creo recordar un problema debido a un error en la evaluacion de
expresiones de alguna version de turbo c++ . Es evidente que te esta
evaluando la expresion (1/n) como un entero. Prueba a poner: 1.0/n. Es
decir en tu programa:
raiz = pow(num1, 1.0 / num2);



Un saludo,
Martin.
Juan
2004-11-03 17:26:34 UTC
Permalink
On Wed, 03 Nov 2004 15:14:41 +0100, Martin J. Sanchez
Post by Martin J. Sanchez
Creo recordar un problema debido a un error en la evaluacion de
expresiones de alguna version de turbo c++ . Es evidente que te esta
evaluando la expresion (1/n) como un entero. Prueba a poner: 1.0/n. Es
raiz = pow(num1, 1.0 / num2);
En efecto, ahora el programa funciona. Muchas gracias.

Loading...