Hola, he estado intentando sacar este ejercicio:
Y aqui el codigo que he estado picando:
#include <stdio.h>
#include <math.h>
#define N 5
int funcion(int num);
void main(){
int num, contmain;
int y;
while(scanf("%d", &num) && num!= 0){ //para que el 0 marque el finales de la cadena
while(num/10!=0){ //while(el numero tenga como minimo, decenas)
y=funcion(num);
if(y==1){ contmain ++;
printf("\n%d cumple la condicion", num);
}
if(contmain<N)printf("%d numeros que cumplen la condicion", contmain);
}
}
}
int funcion(int num){
int i, suma=num%10, cont=1; //este contador cuenta en numero de cifras del numero y la variable suma empieza con el valor de las unidades del numero
int primeracifra;
for(i=10;i<=1000000;i*10){
if(num/i!=0){
cont++; //contador de cifras
suma+=num/i; //para ir sumando las cifras, recordemos que suma ya tiene asignado el valor de las unidades
}
}
i=10;
primeracifra=num/pow(i,cont-1); //la primera cifra es el numero divido entre i elevado al contador -1
if(primeracifra==suma) return 1; //si se cumple la condicion retorna 1
else return 0;
}
el codigo compila con 0 errores y 0 warnings pero a la hora de ejecutarlo y meter los numeros se cuelga.
Agradezco cualquier aportacion
EDIT: disculpas por no indentar el codigo pero soy un inutil incapaz