floating point invalid operation

Iniciado por Riverxz, 30 Agosto 2016, 04:46 AM

0 Miembros y 1 Visitante están viendo este tema.

Riverxz

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 (cpp) [Seleccionar]
#include<iostream.h>
#include<conio.h>
#include<math.h>

void main()
{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;
gotoxy(10,10);cout<<"Ingrese edad :";cin>>ed;
while(ed>0 && ed<1000)
  {
   n++;
   if(ed<10 && ed>0)
    {
     cant1++;
     sec1=sec1+ed*pow(10,cant1-1);
     n1++;
     if(ed%2==0)
      {
       secPAR1=secPAR1+ed*pow(10,cantPAR1);
       cantPAR1++;
      }
     else
      {
       secIMP1=secIMP1+ed*pow(10,cantIMP1);
       cantIMP1++;
      }
    }
   else
    {
     if(ed<100 && ed>0)
      {
       cant2++;
       sec2=sec2+ed*pow(100,cant2-1);
       n2++;
       if(ed%2==0)
        {
         secPAR2=secPAR2+ed*pow(10,cantPAR2);
         cantPAR2++;
        }
       else
        {
         secIMP2=secIMP2+ed*pow(100,cantIMP2);
         cantIMP2++;
        }
      }
     else
      {
       if(ed<1000 && ed>0)
        {

         sec3=sec3+ed*pow(1000,cant3-1);
         n3++;
         cant3++;
         if(ed%2==0)
          {
           secPAR3=secPAR3+ed*pow(1000,cantPAR3);
           cantPAR3++;
          }
         else
          {
           secIMP3=secIMP3+ed*pow(1000,secIMP3);
           cantIMP3++;
          }


        }
      }
    }
   gotoxy(10,10+n);cout<<"Ingrese edad :";cin>>ed;
  }
if(sec1>0)
  {
   gotoxy(10,12+n);cout<<"Secuencia de un digito :"<<sec1;
  }
else
  {
   gotoxy(10,12+n);cout<<"Secuencia de un digito :No hay";
  }
if(sec2>0)
  {
   gotoxy(10,13+n);cout<<"Secuencia de dos digito :"<<sec2;
  }
else
  {
   gotoxy(10,13+n);cout<<"Secuencia de dos digito :No hay";
  }
if(sec3>0)
  {
   gotoxy(10,14+n);cout<<"Secuencia de tres digito :"<<sec3;
  }
else
  {
   gotoxy(10,14+n);cout<<"Secuencia de tres digito :No hay";
  }
gotoxy(10,16+n);cout<<"TOTAL:";
gotoxy(10,17+n);cout<<n1<<" Edades de una cifra";
gotoxy(10,18+n);cout<<n2<<" Edades de dos cifra";
gotoxy(10,19+n);cout<<n3<<" Edades de tres cifra";
getche();

}

AlbertoBSD

#1
Hola ten encuenta que la función pow es:

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.
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
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Riverxz

Cita de: AlbertoBSD en 30 Agosto 2016, 06:21 AM
Hola ten encuenta que la función pow es:

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.
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