Ir para conteúdo
Fórum Script Brasil
  • 0

Soma De Conteúdo De Uma Variavel


Jonathan M carvalho

Pergunta

exercício é o seguinte

escreva um algoritmo em c recebe um inteiro como entrada e imprime na tela o número de digitos e sua soma. Por exemplo, para 12345, o algoritmo imprimiria 5 digitos e soma igual a 15.

não consigo fazer a soma.

tentei achar uma função e faça isso e não tive sucesso, tentei fazer na mão e não to conseguindo, o mais proxímo q cheguei foi:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
    int n, c = 0, soma = 0;
    
    while ((n = getch()) != '.')
    {
        printf("%c", n);
        soma = n + soma;
        c++;
    }    
    printf("\nNº de dígitos: %d", c);
    printf("\nSoma dos dígitos: %d", soma);    
    
    getch();

}

O Número de digitos está funcionando corretamente, mas a soma não. Ao invés dele soma o número ele está somando seu valor na tabela ASCII

Não sei se estou indo pelo caminho certo. alguém tem uma solução para esse problema???

Obrigado.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Caro colega,

Segue um pequeno exemplo, verifique se é o que está buscando.

Boa Sorte

elsd

#include <stdio.h>
#include <string.h>

int contar_digitos( int __numero )
{
    int digitos;
    int numero_dividido;

    digitos = 0;
    if( __numero < 0 )
        __numero *= -1;

    numero_dividido = __numero;
    while( numero_dividido != 0 )
    {
        digitos ++;
        numero_dividido /= 10;
    }

    return( digitos );
}

int somar_digitos( int __numero )
{
    int soma;
    int valor_digito;
    int mascara;
    int mascara2;

    if( __numero < 0 )
        __numero *= -1;

    mascara2 = contar_digitos( __numero );
    mascara = 1;

    for( soma = 1; soma < mascara2; soma ++ )
        mascara *= 10;

    soma = 0;
    mascara2 = 0;
    while( mascara != 0 )
    {
        valor_digito = __numero / mascara;
        soma += ( valor_digito - mascara2 );
        mascara2 = valor_digito * 10;
        mascara /= 10;
    }

    return( soma );
}

int main()
{
    char numero[ 30 ];

    printf( "Entre com um numero: " );
    memset( numero, 0, sizeof( numero ) );
    fgets( numero, 29, stdin );
    numero[ strlen( numero ) - 1 ] = 0;

    printf( "Digitos: [ %d ]\n", contar_digitos( atoi( numero ) ) );
    printf( "Soma...: [ %d ]\n", somar_digitos( atoi( numero ) ) );

    return( 0 );
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...