Otra sugerencia, si declaras main como float main(), que no sé porqué, deberías terminar con un return.
Normalmente se declara int main() para acabar con return 0; así comunica al SO que ha finalizado la ejecución correctamente.
Ahora mismo no se me ocurre cómo calcular el máximo( sería llegar al desbordamiento...), pero entienedo que ese cófigo no funcione, tendría que estar escrito de una forma parecida a esta:
#include
float epsilon(float i) // Sin ; Si haces return de un float, la cabecera debe ser float.
{
float a; //Se declaran dentro de la función, no fuera. Si los declaras en main
float b; // no serán modificados dentro de la función a menos de que pases punteros.
a = (i/2);
b = (i*2);
if(1 != (1+i)) return a; else return b; //No acabo de entender lo que haces, si i = 0
// devuelves b, en caso contrario a.
}
int main (void)
{
float i;
float ema;
i=1;
ema = epsilon (i); //Llama 1 sola vez a la función, por lo que devolverá siempre 0.5,
//ya que i != 0
printf ("Epsilon-en balioa: %f", ema);
getchar();
return 0;
}
Además, esto es c no c++ xDD
Bueno, acabo comentandote algunas pistas para llegar a terminarlo:
· Crea un bucle while que vaya modificando los valores hasta llegar al máximo
while( a != max){
a = a*2;
} //por ejemplo
· Utilizando sizeof(float) sabrás cuantos bytes utiliza un float n memoria, cualquier otro número que sobrepase ese tamaño ya no será float
imaginemos una variable num cualquiera, si sizeof(num) > sizeof(float) ese número sobrepasa el máximo del float...
No se me ocurre mucho más para ayudar... Un saludo!