Illegal use of floating point

Iniciado por Riverxz, 11 Septiembre 2016, 08:40 AM

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

Riverxz

Buenas colegas,  :D. Estoy programando un simulador de datos y no puedo corregir el error del floating point. Lo que pasa es que estoy asignando un valor de un vector de doubles a un auxiliar que tambien he declarado como double. No entiendo cual es el error aqui.

Aca el código.

Código (cpp) [Seleccionar]
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>

#define linea "-------------------------------------------------------------------"
void main()
{int n,i,num;
float x[50],m,a,b,aux=0,j,sup[50],inf[50];
double ran,prob[50],aux2;

do
{
  gotoxy(5,5);clreol();
  gotoxy(5,5);cout<<"ingrese cantidad de intervalos :";cin>>n;
}while(!(n>0 && n<=50));

gotoxy(5,7);cout<<"Nro Cota sup.   Cota inf.       Media     Prob.";
gotoxy(5,8);cout<<linea;
gotoxy(5,9+n);cout<<linea;
for(i=1;i<=n;i++)
{
  gotoxy(5,8+i);cout<<i<<".-";
}
aux=0;
m=100;
for(i=1;i<=n;i++)
{
  if(i==1) //para el primer dato//
   {
    do
     {
      gotoxy(18,8+i);clreol(); //cota inferior de intervalo//
      gotoxy(18,8+i);cin>>a;
     }while(!(a>=aux));
    inf[i]=a;
    do
     {
      gotoxy(35,8+i);clreol(); //cota superior de intervalo//
      gotoxy(35,8+i);cin>>b;
     }while(!(b>=a));
    sup[i]=b;
    aux=b;
    x[i]=(a+b)/2;
    gotoxy(51,8+i);cout<<x[i];
    if(i!=n)
     {
      if(m!=0)
       {
        do
         {
          gotoxy(61,8+i);clreol();  //ingresar la probabilidad//
          gotoxy(61,8+i);cin>>prob[i];

         }while(!(prob[i]>=0 && prob[i]<=m));
        gotoxy(68,8+i);cout<<"%";
       }
      else
       {
        gotoxy(61,8+i);cout<<"0";
        gotoxy(68,8+i);cout<<"%";
        prob[i]=0;
       }
      m=m-prob[i];
     }
    else
     {
      gotoxy(61,8+i);cout<<"m";
      gotoxy(68,8+i);cout<<"%";
      prob[i]=m;
     }

   }
  else
   {
     gotoxy(18,8+i);cout<<aux;
     inf[i]=aux;
     do
     {
      gotoxy(35,8+i);clreol();
      gotoxy(35,8+i);cin>>b;
     }while(!(b>=aux));
     sup[i]=b;
     x[i]=(aux+b)/2;
     aux=b;
    gotoxy(51,8+i);cout<<x[i];
    if(i!=n)
     {
      if(m!=0)
       {
        do
         {
          gotoxy(61,8+i);clreol();  //ingresar la probabilidad//
          gotoxy(61,8+i);cin>>prob[i];

         }while(!(prob[i]>=0 && prob[i]<=m));
        gotoxy(68,8+i);cout<<"%";
       }
      else
       {
        gotoxy(61,8+i);cout<<"0";
        gotoxy(68,8+i);cout<<"%";
        prob[i]=0;
       }
      m=m-prob[i];
     }
    else
     {
      gotoxy(61,8+i);cout<<m;
      gotoxy(68,8+i);cout<<"%";
      prob[i]=m;
     }
   }
}
gotoxy(5,11+n);cout<<"Ingrese cantidad de datos a simular :";cin>>num;

system("cls");

gotoxy(5,7);cout<<"Nro Random Resultado";
gotoxy(5,8);cout<<linea;
gotoxy(5,9+num);cout<<linea;
for(i=1;i<=num;i++)
{
  gotoxy(5,8+i);cout<<i<<".-";
}
for(i=1;i<=num;i++)
{
  ran = (rand() % 100 + 1)/1.0;
  gotoxy(15,8+i);cout<<ran;
  for(j=1;j<=n;j++)//aca ocurre el error//
   {
    if(j==1)
     {
      if((ran>=0))
       {
        aux2=x[j]; //->Esta asignacion bota el error<-//
        gotoxy(30,8+i);cout<<aux2;
       }
     }
   }

}
getche();
}

BloodSharp

#1
Jamás uses variables con float u double para especificar el elemento de un vector, en este caso j modifícalo como entero...

EDIT: j y n son de diferentes tipos... por lo que va a ver pérdida de datos, cuidado con eso en el futuro...


B#