• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

que acham?

10 mensagens neste tópico

:P Viva!

Faça uma função contadigitos que dados um inteiro n e um inteiro d, 0<d<9, devole quantas vez o digitos d aparece em n






int contadigitos(int n [],int d, int DIM)
      {
      int i;
      printf(" qual o numero\n");
      scanf("%d",&n[i]);
      printf(" qual o digito\n");
      scanf("%d",&d);
      
        for(i=0;i<=DIM;i++)
        {
          if(d==n[i])
             {
             total=total+1;
             }
             
        }
  return total;
   
   
      }

acho que alguma ta mal, tive dificuldade no ciclo










0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para comparar algarismos de um número ou usas caracteres/strings ou recorres ao operador '%'.

para que é que estás a receber as variáveis n (por que razão é um array?), d e DIM (o DIM é suposto ser um número fixo? se sim devias usar macros) ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites


















int contadigitos(int n ,int d)
      {
      int i;
      printf(" qual o numero\n");
      scanf("%d",&n);
      printf(" qual o digito\n");
      scanf("%d",&d);
      
        while(n!=0)
        {
          resto=n%10;
          n=n/10;
          if(d==resto)
             {
             total=total+1;
             }
             
        }
  return total;
   
   
      }

talvez seja assim :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash:

assim ta correcto






















int contadigitos(int n ,int d)
      {
      
     
      
        while(n!=0)
        {
          resto=n%10;
          n=n/10;
          if(d==resto)
             {
             total=total+1;
             }
             
        }
  return total;
   
   
      }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agora só precisas de declarar (e inicializar) a variável 'total'.

o resto penso que está correcto (não testei!!).

EDIT: poderias fazer algumas melhorias como trocar total=total+1 por total++.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

resto também. Ou então desaparecer com ela.

nem tinha reparado nessa...

colocar a divisão directamente no 'if' é capaz de ser a melhor opção...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou seja ficamos com a coisa bem resumida. :P

int contadigitos(int n ,int d)
{
      int total = 0;
      while(n!=0){
           if(d==(n%10))  total++;
           n/=10;
      }
return total;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

//usando a função contadigitos faça um programa que l~e dois inteiros positivos  a e b e responda se a é permutação de b

isto é exemplo 5412 é permutação de 4215 e nao de 4155























#include<stdio.h>

int contadigitos(int n ,int d) // os argumentos sao sempre a função principal que da
      {
      
      int resto,total;
      
        while(n!=0)
        {
          resto=n%10;
          n=n/10;
          if(d==resto)
             {
             total=total+1;
             }
             
        }
  return total;
   
   
      }
      
main()
{
int numeroa, numerob,restob,res;
printf(" introduza o numero a\n");
scanf("%d",&numeroa);
printf(" introduza o numero b\n");
scanf("%d",&numerob);

   while(numerob>=0) //tou a retirar o digito de b
    {
    restob=numerob%10;
    numerob=numerob/10;
    res=contadigitos(numeroa,restob);
    
    
    
         if(numeroa==restob)
            {
            printf(" é permutação\n");
            }
   }
    
fflush(stdin);
getchar();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que existe já um topico com este assunto.

De qualquer forma a função contadigitos não é a melhor forma de fazer isso.

Se te for possivel trazer o input como um char* é mais fácil, porque podes comparar directamente os digitos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora