elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  floating point invalid operation
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: floating point invalid operation  (Leído 2,632 veces)
Riverxz

Desconectado Desconectado

Mensajes: 8


Ver Perfil
floating point invalid operation
« en: 30 Agosto 2016, 04:46 am »

Buenas colegas del foro  :D
He estado haciendo el código de un programa que bota secuencias de edades y sus repeticiones. El problema es que para valores de más de 9 edades el programa se corrompe y expulsa valores absurdos e inclusive llega a crashearse botando el siguiente error:
Threat1 stopped
Fault: floating point invalid operation at 0x4097db

Mi código es este:
Código
  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<math.h>
  4.  
  5. void main()
  6. {int ed,n=0,cant1=0,cantPAR1=0,cantIMP1=0,cant2=0,cantPAR2=0,cantIMP2=0,cant3=0,cantPAR3=0,cantIMP3=0,sec1=0,secPAR1=0,secIMP1=0,sec2=0,secPAR2=0,secIMP2=0,sec3=0,secPAR3=0,secIMP3=0,n1=0,n2=0,n3=0;
  7. gotoxy(10,10);cout<<"Ingrese edad :";cin>>ed;
  8. while(ed>0 && ed<1000)
  9.  {
  10.   n++;
  11.   if(ed<10 && ed>0)
  12.    {
  13.     cant1++;
  14.     sec1=sec1+ed*pow(10,cant1-1);
  15.     n1++;
  16.     if(ed%2==0)
  17.      {
  18.       secPAR1=secPAR1+ed*pow(10,cantPAR1);
  19.       cantPAR1++;
  20.      }
  21.     else
  22.      {
  23.       secIMP1=secIMP1+ed*pow(10,cantIMP1);
  24.       cantIMP1++;
  25.      }
  26.    }
  27.   else
  28.    {
  29.     if(ed<100 && ed>0)
  30.      {
  31.       cant2++;
  32.       sec2=sec2+ed*pow(100,cant2-1);
  33.       n2++;
  34.       if(ed%2==0)
  35.        {
  36.         secPAR2=secPAR2+ed*pow(10,cantPAR2);
  37.         cantPAR2++;
  38.        }
  39.       else
  40.        {
  41.         secIMP2=secIMP2+ed*pow(100,cantIMP2);
  42.         cantIMP2++;
  43.        }
  44.      }
  45.     else
  46.      {
  47.       if(ed<1000 && ed>0)
  48.        {
  49.  
  50.         sec3=sec3+ed*pow(1000,cant3-1);
  51.         n3++;
  52.         cant3++;
  53.         if(ed%2==0)
  54.          {
  55.           secPAR3=secPAR3+ed*pow(1000,cantPAR3);
  56.           cantPAR3++;
  57.          }
  58.         else
  59.          {
  60.           secIMP3=secIMP3+ed*pow(1000,secIMP3);
  61.           cantIMP3++;
  62.          }
  63.  
  64.  
  65.        }
  66.      }
  67.    }
  68.   gotoxy(10,10+n);cout<<"Ingrese edad :";cin>>ed;
  69.  }
  70. if(sec1>0)
  71.  {
  72.   gotoxy(10,12+n);cout<<"Secuencia de un digito :"<<sec1;
  73.  }
  74. else
  75.  {
  76.   gotoxy(10,12+n);cout<<"Secuencia de un digito :No hay";
  77.  }
  78. if(sec2>0)
  79.  {
  80.   gotoxy(10,13+n);cout<<"Secuencia de dos digito :"<<sec2;
  81.  }
  82. else
  83.  {
  84.   gotoxy(10,13+n);cout<<"Secuencia de dos digito :No hay";
  85.  }
  86. if(sec3>0)
  87.  {
  88.   gotoxy(10,14+n);cout<<"Secuencia de tres digito :"<<sec3;
  89.  }
  90. else
  91.  {
  92.   gotoxy(10,14+n);cout<<"Secuencia de tres digito :No hay";
  93.  }
  94. gotoxy(10,16+n);cout<<"TOTAL:";
  95. gotoxy(10,17+n);cout<<n1<<" Edades de una cifra";
  96. gotoxy(10,18+n);cout<<n2<<" Edades de dos cifra";
  97. gotoxy(10,19+n);cout<<n3<<" Edades de tres cifra";
  98. getche();
  99.  
  100. }


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: floating point invalid operation
« Respuesta #1 en: 30 Agosto 2016, 06:21 am »

Hola ten encuenta que la función pow es:

Código
  1. double pow(double x, double y);

Lo que significa que espera parametros double y tambien regresa un double, todos tus datos son enteros.

Ahora si agregaras algunos comentarios sobre tu codigo tal vez seria mas facil encontrar el error.

Si solo pasa con valores mayores que nueve entonces revisa bien tu parte del codigo donde esta el siguiente if.
Código
  1. if(ed<100 && ed>0)

Y la otra... cuando estas aprendiendo a programar... Olvidate de darle formato al texto evita el uso de gotoxy ademas no es una funcion  estandar, solo funciona para el turboC, no uses ninguna de las funciones de la libreria CONIO.

Concentrate en el algoritmo y deja un codigo mas sencillo.

Saludos


« Última modificación: 30 Agosto 2016, 06:23 am por AlbertoBSD » En línea

Riverxz

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: floating point invalid operation
« Respuesta #2 en: 31 Agosto 2016, 02:40 am »

Hola ten encuenta que la función pow es:

Código
  1. double pow(double x, double y);

Lo que significa que espera parametros double y tambien regresa un double, todos tus datos son enteros.

Ahora si agregaras algunos comentarios sobre tu codigo tal vez seria mas facil encontrar el error.

Si solo pasa con valores mayores que nueve entonces revisa bien tu parte del codigo donde esta el siguiente if.
Código
  1. if(ed<100 && ed>0)

Y la otra... cuando estas aprendiendo a programar... Olvidate de darle formato al texto evita el uso de gotoxy ademas no es una funcion  estandar, solo funciona para el turboC, no uses ninguna de las funciones de la libreria CONIO.

Concentrate en el algoritmo y deja un codigo mas sencillo.

Saludos

Gracias! :D  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines