Ir ao conteúdo
  • Cadastre-se
carloszexa4

C Contar quantos digitos tem em um número n.

Recommended Posts

Receba dois inteiros do usuário, o primeiro sendo o dígito que se quer saber quantas vezes aparece e o segundo sendo o número. A entrada tem que ser um valor inteiro qualquer para A entre 1 e 9, e um valor inteiro para B. E na saida deve mostrar quantas vezes o digito A aparece no número B. A reposta tem que ser um programa básico usando for ou while.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola...! Não é nada "difícil"

#include<stdio.h>/*!< Incluir as rotinas que fazem Entra e Saída (E/S). */
#include<ctype.h>/*!< incluir as rotinas com tratamento de caracteres.  */

/** *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
 * func principal -  aqui você vai encontrar as seguintes palavras chaves:
 * isdigit, while, break, if, else, sprintf, getchar, char, int,
 * strings em C. <<! Estude cada uma delas !>>
 **/
int main( void )
{ char digito;            /*< para o dígito A */
  int  numero;            /*< para o número B */
  char numero_str[ 0xFF ];/*< para o numero B strings */
  char aux;
  int qtd_digitos_iguais_digitos; /*< para o número de ocorrencias de A->B.*/

  /*! pegar o digito A */
  while( !isdigit( digito = getchar()));

  /*! força o numero B */
  while ( 1 != scanf( " %d", &numero))(void)getchar();

  sprintf( numero_str, "%d", numero );/*< imprimir número no strings.      */

  aux = 0; qtd_digitos_iguais_digitos = 0;
  while( numero_str[ aux ] !=   '\0' )/*< escaneando em busca do digito A. */
  { if ( numero_str[ aux ] == digito )
      qtd_digitos_iguais_digitos++;
    aux++; }

  printf( "%d\n", qtd_digitos_iguais_digitos );/*< resultado final         */
  /*! FIM */
  return( 0x0 ); }

 

~~ / ~~

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mauro Britivaldo    de acordo com o enunciado,  a entrada precisa ser um inteiro e não um char, e ele não disse que seja positivo, mas creio que seja apenas positivo,   e para inteiro o valor positivo máximo que se pode entrar é 2.147.483.647 , então o código seria assim :

#include <stdio.h>
#include <ctype.h>
#include <conio.h>
int main(){
    int a,b,d,i,c=15,rep=0;
    int vetor[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    do{
        printf("Digite Um Numero Inteiro De 1 ate 9 ");
        fflush(stdin);
        scanf("%d",&a);
        if(a<0||a>9)
            printf("Numero Fora De Faixa, Digite outro !\n");
    }while(a<0 || a>9);
    do{
        printf("   Digite Um Numero Qualquer\n");
        printf("Positivo De 0 ate 2.147.483.647 -%c",16);
        fflush(stdin);
        scanf("%d",&b);
        if(b<0||b>2147483647)
            printf("Numero Fora De Faixa, Digite Outro !\n");
    }while(b <0 || b>2147483647);/*eh o valor maximo para inteiros*/
    d=b;
    while(b>0){
        vetor[c]=b%10;
        b/=10;
        c--;
    }
    for(i=15;i>-1;i--){
        if(vetor[i]==a)
            rep++;
    }
    if(rep>0){
        printf("O Digito %d Apareceu %d Vez",a,rep);
        if(rep>1)printf("es");
        printf(" no Numero %d . . . !\n\n",d);
    }
    else
        printf("O Numero %d Nao Teve Nenhum Numero Repetido . . . !\n\n",b);
    return 0;
}

 

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>

int main()
{
    int numeroA = 0, numeroB = 0;
    
    printf("Informe um numero(Na faixa de 1 a 9): ");
    scanf("%i", &numeroA);
        
    if (numeroA < 0 || numeroA > 9)
    {
        printf("O numero informado esta fora da faixa.\nTente novamente com um numero na faixa de 1 a 9.\n");
        return 0;
    }
    
    printf("Informe um numero qualquer: ");
    scanf("%i", &numeroB);
    
    int qntVezes = 0, tempNum = numeroB;
    
    while (tempNum)
    {
        if (numeroA == (tempNum % 10))
            qntVezes++;
        
        tempNum /= 10;
    }
    
    printf("O numero %i apareceu %i %s no numero %i.\n", numeroA, qntVezes, (qntVezes != 1) ? "vezes" : "vez", numeroB);
    
    return 0;
}

 

Só precisa de uma verificação simples se o número informado é maior que o limite de um int(2147483647).

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos...

 

@Mauro Britivaldo, @devair1010 e @cyer... tá. Gostaria de aproveitar a oportunidade para tirar uma dúvida: qual foi a produtividade do "exercício proposto" ao @carloszexa4?

 

 

Então, sobre o contexto desse tópico... pelo que eu entendi, o "exercício" passou a ser algo como:

Citação

Encontre alguém para fazer por você o seguinte algoritmo: Receba dois inteiros do usuário, o primeiro sendo o dígito que se quer saber quantas vezes aparece e o segundo sendo o número. A entrada tem que ser um valor inteiro qualquer para A entre 1 e 9, e um valor inteiro para B. E na saida deve mostrar quantas vezes o digito A aparece no número B. A reposta tem que ser um programa básico usando for ou while.

 

:lol:

 

 

 

adicionado 0 minutos depois

No caso: #missãoCumprida

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 minutos atrás, Simon Viegas disse:

qual foi a produtividade do "exercício proposto"

Foi um exercício fácil do qual já tenho lido bastante e faço sem esforço, existe muitos livros gratuitos de C onde qualquer pessoa com força de vontade pode ler antes de vir aqui. Sempre que tenho tempo os leio, então penso que todos podem fazer igual a mim, esse é meu hobby! Eu mal consigo acreditar que exista ainda pessoas com esse tipo de dúvida, só espero que ao ver os exemplos de hoje tome alguma atitude.

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas  em resposta a sua pergunta: talvez passando um pouco o tempo.

 

"Encontre alguém para fazer por você o seguinte algoritmo...", realmente foi isso que aconteceu, mas talvez não tenha sido em vão, talvez ele olhe como o código funciona e estude o que cada linha faz e consiga aprender algo, resultando no ganho de conhecimento ou talvez ele apenas de um Ctrl+C e Ctrl+V e envie para o professor da faculdade para ganhar os seus pontos.

 

De qualquer forma acredito estar ajudando ele(Seja passando conhecimento ou ajudando ele ganhar os pontos na faculdade ou ambos).

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×