¿Cómo degradar un Numero en C?
Estoy tratando de hacer el siguiente algoritmo en C. Un algoritmo que acepte como entrada un numero, y despliegue la suma de cada uno de sus dígitos, hasta que se vaya degradando y quede en el un solo dígito, es decir: si mi intrudujera 99984562489, por citar un ejemplo, el agoritomo debe hacer lo siguiente:
9999845624892=83.. O sea, es la suma cada uno de sus digitos de 9+9+9+9+8+4+5+6+2+4+8+9+2=83. A los de mas resultados que haya obtenido, aplicar el mismo procedimiente, hasta llevarlo a un solo dígito. Como se ve mas abajo.
83=11("8+3")
11=2("1+1")
Esta seria la salida:
Lasuama de los dígitos de 9999845624892 es 83
La suama de los dígitos de 83 es 11
La suma de los dígitos de 11 es 2
Acá dejo el pseudocódigo:
===========================================================================
#include<stdio.h>
main()
{
int i=0,ones=0,num,sum=0;
char temp[15]; //Cantidad de digitos
printf("Introducir el numero ");
scanf("%i",&num);
while (num != 0)
{
ones=num%10; //Aqui obtengo las cifras actulales
temp=(char)(ones+48); //48=(int)'0';
num=num/10; //Aca elimono las cifras actuales
i++; //Obtengo la longitud del numero
//printf("%i",ones);
sum = sum + ones; //sumo cada ciffra
if (num == 0)
{
Ones=sum; //Aca hago que ones tome el valor de la suma, para que vuelva a iterar sobre el resultado
//printf("%i\n",sum);
printf("%i",ones);
}
}
printf("\n");
//printf("%i\n",sum);
printf("%i\n",sum);
}
Pero solo imprime el la suma del número introducido. ¿Dónde está mi falla? Cual otro método me recomendarías..
9999845624892=83.. O sea, es la suma cada uno de sus digitos de 9+9+9+9+8+4+5+6+2+4+8+9+2=83. A los de mas resultados que haya obtenido, aplicar el mismo procedimiente, hasta llevarlo a un solo dígito. Como se ve mas abajo.
83=11("8+3")
11=2("1+1")
Esta seria la salida:
Lasuama de los dígitos de 9999845624892 es 83
La suama de los dígitos de 83 es 11
La suma de los dígitos de 11 es 2
Acá dejo el pseudocódigo:
===========================================================================
#include<stdio.h>
main()
{
int i=0,ones=0,num,sum=0;
char temp[15]; //Cantidad de digitos
printf("Introducir el numero ");
scanf("%i",&num);
while (num != 0)
{
ones=num%10; //Aqui obtengo las cifras actulales
temp=(char)(ones+48); //48=(int)'0';
num=num/10; //Aca elimono las cifras actuales
i++; //Obtengo la longitud del numero
//printf("%i",ones);
sum = sum + ones; //sumo cada ciffra
if (num == 0)
{
Ones=sum; //Aca hago que ones tome el valor de la suma, para que vuelva a iterar sobre el resultado
//printf("%i\n",sum);
printf("%i",ones);
}
}
printf("\n");
//printf("%i\n",sum);
printf("%i\n",sum);
}
Pero solo imprime el la suma del número introducido. ¿Dónde está mi falla? Cual otro método me recomendarías..
1 Respuesta
Respuesta de sentahc
1