#1 problema con una operacion matematica en c++
Hola les pongo el trozo de codigo q m declara error y q es entendible sin el resto del programa.
while (h<Elemento)
{
if ((strcmp(vector[h].secuencia,s2))!=0)
{
Probabilidad=vector[h].frecuencia/Total;
Logaritmo=log10(1/Probabilidad)/log10(2);
vector[h].Entropia=Probabilidad*Logaritmo;
Entropia_T=Entropia_T+vector[h].Entropia;
h++;
}
else
break;
}
el problema del bucle es que hace la operacion de Probabilidad y da un valor pero luego cuando pasa a la operacion de Logaritmo, Probabilidad se ha convertido en un cero y me eleva este error en pantalla "Project Project2.exe raised exception class EZeroDivide with message 'Floating point division by zero'. Process stopped.Use Step or Run to continue." Total, frecuencia son int, Entropia_T Probabilidad y Logaritmo son doubles aunque los he probado como float.
Si alguien me da una solucion a este error se lo agradecere enormemente, hasta luego y gracias de antemano.
while (h<Elemento)
{
if ((strcmp(vector[h].secuencia,s2))!=0)
{
Probabilidad=vector[h].frecuencia/Total;
Logaritmo=log10(1/Probabilidad)/log10(2);
vector[h].Entropia=Probabilidad*Logaritmo;
Entropia_T=Entropia_T+vector[h].Entropia;
h++;
}
else
break;
}
el problema del bucle es que hace la operacion de Probabilidad y da un valor pero luego cuando pasa a la operacion de Logaritmo, Probabilidad se ha convertido en un cero y me eleva este error en pantalla "Project Project2.exe raised exception class EZeroDivide with message 'Floating point division by zero'. Process stopped.Use Step or Run to continue." Total, frecuencia son int, Entropia_T Probabilidad y Logaritmo son doubles aunque los he probado como float.
Si alguien me da una solucion a este error se lo agradecere enormemente, hasta luego y gracias de antemano.
0