Ir ao conteúdo

Posts recomendados

Postado

Gente comecei a fazer um exercício em C só que não deu certo, alguém pode me ajudar?! Ai vai o enunciado e a minha resolução:

 

Construa um programa em C para ler um valor inteiro do teclado e apresentar na tela cada um dos seus dígitos em separado, sejam eles quantos forem.

 

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
   
 int main()
   {
       int contaDigitos = 0, valor, base, result, resto;
       
       printf("\nDigite um numero inteiro: ");
       scanf("%d", &valor);
       
       //contando os digitos do nº digitado
       do
       {
           contaDigitos = contaDigitos + 1;
           valor = valor / 10;
       }
       while (valor != 0);
       
       
      //separando os digitos
      if(contaDigitos==1) 
              printf("\nDigito %d", &valor);
      else
       {
               int v[contaDigitos];
               base = pow(10, (contaDigitos-1));
               
               
               for(int i=0; i<contaDigitos; i++)
               {
                   
               if(i==0)
               { 
                  result= valor/base;
                  resto= valor % base;
                  v[i]= result;
               }
               
               else
               {
                     if(resto >=10)
                     {
                         result= resto/base;
                         v[i]= result;
                  }
                  
                  else
                  {
                      v[i]= resto;
                  }
                 
               }
                   
                   
                   base= base/10;
                   
                   //mostrando os digitos
                   printf("\nDigito %d", v[i]);
                   
            }
           
       }
       
       
       printf("\n");
    
       system("PAUSE"); 
       return 0;
   }

 

  • Obrigado 1
Postado

@sabrinaoliv     dividindo e depois multiplicando pode ser que dê certo também , mas é bem trabalhoso ,  seria melhor usar o comando mod que na linguagem c é esse aqui  % , e ele pega o resto da divisão do número pelo que estiver depois desse sinal % ,  e em seguida você divide o valor por 10 pois está na base decimal , para pegar o outro dígito e assim vai até o final ,  e seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>  
/*
    o tipo int pode ter valores entre  ( -2147483648 até  2147483647  )
    valores maiores ou menores resultarão em Erro !
*/
int main(){
    printf("Menor valor de um inteiro: %d\n", INT_MIN);
    printf("Maior valor de um inteiro: %d\n", INT_MAX);
    int contaDigitos = 0,i, valor, base, result, resto,vetor[20],cont=0;
    printf("\nDigite um numero inteiro: ");
    scanf("%d",&valor);
    //contando os digitos do nº digitado
    do{
        contaDigitos++;
        vetor[cont] = valor % 10;
        valor /= 10;
        cont++;
    }while( valor > 9 );
    vetor[cont]=valor;
    printf("\n");
    for(i=cont; i>=0; i--)
        printf("Digito %d -> %d\n",
        cont-i+1,vetor[i]);
    printf("\n\n\n");
    system("pause");
    printf("\n\n\n");
    return 32768;
}

 

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!