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

suzy

como fazer?

6 mensagens neste tópico

tenho a seguinte duvida!  tenho uma funcao que contadigitos que dados um inteiro n e um inteiro d, devolve quantas vezes o digiot d aparece em n:

ora bem ate aqui tudo bem:)

fiz assim :

int contadigitos(int numero, int d)
     {
     int x,conta=0;
     
     while(numero!=0)
        {
        x=numero%10;
        numero=numero/10;
        
          if(x==d)
             {
             conta=conta+1;
             }
        
        }
       return conta;
     }

acontece que agora usando a funcao anterior, tenho de fazer um programa que le 2 inteiros positivos a e b e verifica se é uma permutação ou nao!

permutação e por exemplo  5412 é uma permutaçao de 4215 mas nao e permutação de 4155

fiz assim, mas nao me da nada :)

opiniões???

main()

 {
 int numeroa, numerob, y,z,res1,res2;

 printf(" qual o numero a\n");
 scanf("%d",&numeroa);
 printf(" qual o numero b\n");
 scanf("%d",&numerob);


 while(numeroa!=0)
        {
        y=numeroa%10;
        numeroa=numeroa/10;
	res1=contadigitos(numeroa,y);
	}

	while(numerob!=0)
        {
        z=numerob%10;
        numerob=numerob/10;
	res2=contadigitos(numerob,z);
	}




	if(res1==res2)
	   {
	   printf(" sao capicuas\n");
	   }
	else
	   {
	   printf(" nao sao capicuas\n");
	   }
	   
	   fflush(stdin);
	   getchar();
	   }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa identação não está famosa :)

Tu estás quase lá, falta um pormenor. Tenta habituar-te a fazer uma coisa: pega num exemplo, pode ser o que deste 4215 e 4155 e simula a execução do programa no papel.

Hint: tu estás a contar os digitos e guardas o valor numa variavel. no fundo só contas o numero de ocorrencias do ultimo digito. Tenta fazer a simulação (trace) manual, para descobrires outro erro grave  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Há aqui uma coisa que não percebo. Falas em permutações, mas no código referes-te a capicuas. Uma capicua é um número que lido da direita para a esquerda ou da esquerda para a direita é idêntico. Para as permutações um main destes:

main()

         {
         int numeroa, numerob, y,z,res1=0,res2,aux;

         printf(" qual o numero a\n");
         scanf("%d",&numeroa);
         printf(" qual o numero b\n");
         scanf("%d",&numerob);

         aux=numeroa;
         while(aux!=0)
        {
        y=aux%10;
        aux=aux/10;
                if(contadigitos(numeroa,y)!=contadigitos(numerob,y))
                res1=1;

        }
                if(res1==1)
                   {
                   printf(" nao sao capicuas\n");
                   }
                else
                   {
                   printf(" sao capicuas\n");
                   }

                   getchar();}

deve servir...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eh pa.. vocês gostam de dar o codigo feito... assim ela não aprende  :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpa ai mogers, foi o tópico "como fazer?" que me influenciou. tens toda a razão. espero que ela ignore o meu último post.

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