[C] Error Excepcion coma flotante

W

Hola, os pongo el enunciado del ejercicio.

Calcular i imprimir los numeros perfectos que sean mas pequeños que un numero introducido por teclado. (Un numero es perfecto si la suma de sus divisores (excepto el mismo) es igual al mismo numero.

#include <stdio.h>

void main(void) {

int n=0;
int i;
int suma;

while ( n<=0 ) {
	system("clear");
	printf ("Introduce el numero.nNumero: ");
	fflush (stdin);
	scanf("%d",&n);
}

while ( n > 0 ) {

	suma = 0;
	i = 0;
	while ( i <= n ) {
	
		if ( i == n ) {
			if ( suma == n ) {
				printf ("%d es un numero perfecto.",n);
			}
		} else if ( (n%i) == 0 ) { 
			suma=suma+i;
		}
		i++;
	}	
	n--;
}

}

La cosa es que me da un "Excepcion de coma flotante" y no se el motivo. Si podeis explicarme un poco os lo agradeceria.

NeB1

vaya puto sinsentido, si no gastas ningún float! lo único que se me ocurre es que cambies n%i==0 por n%i==0.0

#3 tienes razón, no me había fijado, pero todo apunta aello...

dagavi

Primera iteración:

n = leído;
i = 0; <---------

if ( (n%-----> i <-----) == 0 )

Solución
W

Mmm gracias por las respuestas, luego lo probare, si es eso vaya fallo mas tonto.

Usuarios habituales

  • willy__chaos
  • dagavi
  • NeB1