Programación General > C/C++
Problemas con Exponentes (Pow)
(1/1)
Dany Solis:
Hola saludos a todos soy nuevo en este foro, en el cual pretendo ampliar mis conocimientos y porque no demostrar lo aprendido.
Bueno, paso a mi pregunta.
Tengo el siguiente codigo en DevC++, necesito leer un numero ingresado por el teclado y si es primo elevarlo al cuadrado si no es primo entonces elevarlo al cubo.
El problema es que que si ingreso el valor 5 ^2 el resultado deberia de ser 25, 11^2 deberia de ser 121.
Pero me esta dando como resultado para 5^2 me da 24, 11^2 me da 120, para 3 si me da el resultado correcto 9 para 7 tambien me da el resultado correcto 49 por lo cual no se donde este el error.
Espero me puedan ayudar este es el codigo que tengo:
--- Código: ---#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <math.h>
int main()
{
system("color 0E");
int Num,i,Divisores,R;
Divisores=0;
printf("Ingrese un numero cualquiera:\n");
scanf("%d",&Num);
for(i=1;i<=Num;i++)
{
if(Num%i==0)
Divisores++;
}
if(Divisores==2)
{
R=pow(Num,2);
printf("El numero %d es primo: \n",Num);
printf("y su potencia al ^2 es %d: \n",R);
}
else
{
R=pow(Num,3);
printf("El numero %d no es primo: \n",Num);
printf("y su potencia al ^3 es %d: \n",R);
}
getch();
return 0;
}
--- Fin del código ---
Gracias de antemano por la ayuda que se me pueda brindar....!
DS :ayuda:
Dany Solis:
Listo, solo cambie el tipo de dato de la variable a R a float.
float R;
Con esto solucione mi problema.
Gracias pueden cerrar el hilo.
DS :bravo:
chenech:
Buenas tardes, he compilado el código que has puesto sin variar ni una coma y me da los resultados bien.
Me lleva a pensar en el compilador o redondeo o algo así.
Yo uso Borland C++ 5 y ya te digo, da perfecto, no es el programa ni código, sino configuración, compilador, etc.
Un saludo.
Edito: Pues era redondeo :-)
Navegación
Ir a la versión completa