Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: indict en 17 Octubre 2012, 17:25 pm



Título: ayuda en calcular un programa
Publicado por: indict en 17 Octubre 2012, 17:25 pm
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:

Código:
#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;
}



Título: Re: ayuda en calcular un programa
Publicado por: rir3760 en 17 Octubre 2012, 18:23 pm
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:
Código
  1. int suma = 0;
  2. do {
  3.   suma += n % 10;
  4. }while ((n /= 10) != 0);

Un saludo


Título: Re: ayuda en calcular un programa
Publicado por: indict en 17 Octubre 2012, 21:04 pm
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.

Código:
#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;
}


Título: Re: ayuda en calcular un programa
Publicado por: Stakewinner00 en 17 Octubre 2012, 21:45 pm
la suma de los residuos de un numero dado? osea si te dan 4 pues el residuo de dividir 4 entre x?


Título: Re: ayuda en calcular un programa
Publicado por: 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


Título: Re: ayuda en calcular un programa
Publicado por: Stakewinner00 en 17 Octubre 2012, 22:10 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


Título: Re: ayuda en calcular un programa
Publicado por: indict en 17 Octubre 2012, 23:27 pm
así perdón, es dividido siempre entre 10, n/10.


Título: Re: ayuda en calcular un programa
Publicado por: rir3760 en 18 Octubre 2012, 02:28 am
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:
Código
  1. while (n > 0){
  2.   suma += n % 10;
  3.   n /= 10;
  4. }

Un saludo


Título: Re: ayuda en calcular un programa
Publicado por: indict en 19 Octubre 2012, 19:10 pm
Gracias rir3760