Hola,
quiero crear un programa que yo dé un número n y calcule la suma de sus cifras.
Manualmente lo que debería hacer el programa es: Ej. el número 423
Dividiría el 423 entre 10, 423/10= 42 (Divisor) y 3 (Residuo), 42/10= 4(Divisor) y 2 (Residuo) y 4/10= 0 (Divisor) y 1 (Residuo), entonces en el programa se debería sumar todos los residuos es decir 3+2+1 y sumarle el último numerador 4 y restarle el último residuo 1.
((3+2+1)+(4))-1=9 Da el número de cifras de n.
Yo he echo esto, pero no me calcula exactamente lo que quiero, si me pudierais corregir estaría muy agradecido. :rolleyes:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int suma=0;
while(n>0)
{
suma=(n%10);
suma=(n%10)+n-1;
n=n/10;}
cout<<suma<<endl;
system ("PAUSE");
return 0;
}
El problema con tu programa se debe a que en cada iteracion del bucle estas asignando un nuevo valor al acumulador (la variable "suma"). Cambia el bucle a:
int suma = 0;
do {
suma += n % 10;
}while ((n /= 10) != 0);
Un saludo
gracias rir3760 por tu ayuda :).
Ahora quiero hacer algo más simple, es calcular la suma de los residuos de un número entero dado. He echo esto pero no me lo calcula. Espero que veáis que le falta al programa.
#include<iostream>
using namespace std;
int main()
{
int n;
int mod, suma=0;
cin>>n;
while(n>0)
{
mod=n%10;
suma=suma+mod;}
cout<<suma<<endl;
system ("PAUSE");
return 0;
}
la suma de los residuos de un numero dado? osea si te dan 4 pues el residuo de dividir 4 entre x?
el residuo de 4 sería 1. El de 426 por ejemplo sería 6 + 2 + 1
Cita de: indict en 17 Octubre 2012, 22:06 PM
el residuo de 4 sería 1. El de 426 por ejemplo sería 6 + 2 + 1
pero eso depende de por k lo dividas
4%4=0
4%2=0
así perdón, es dividido siempre entre 10, n/10.
La suma de los residuos al dividir continuamente el numero por diez no es mas que ... la suma de los dígitos del numero.
Tu programa no funciona correctamente porque en el bucle no modificas la variable "n". Cámbialo a:
while (n > 0){
suma += n % 10;
n /= 10;
}
Un saludo
Gracias rir3760