Ir ao conteúdo
  • Cadastre-se

C Exercicio para imprimir o contrário de um número lido


Ir à solução Resolvido por 1freakday,

Posts recomendados

Olá!

Estou fazendo um programa que mostre o contrário de um número inserido pelo usuário. Porém estou com dificuldade quanto aos números que comecem com mais de um zero como por exemplo: 0001 que deve retornar 1000. Eu consegui resolver somente para o 01, mas quando contem mais zeros eu não consigo o resultado. Para medir o tamanho do número digitado eu uso a seguinte função: 

int intlen(int num){
	int count=0, countz = 0;
	while(num != 0){
		count += 1;
		num /= 10;
		if(num == 0) countz+=1; //descobrir a quantidade do zeros
	}
	return count + countz;
}

O if é onde eu consigo descobrir o zero, porém ele não vai funcionar obviamente devido a falta de um laço que é o que deveria funcionar, porém ocorre o oposto e o programa fica em looping. Então se alguém conseguir me ajudar nisso, agradeço muito.

Link para o comentário
Compartilhar em outros sites

  • Solução

@Lucas Da Silva Rezende

Na forma como você está fazendo, você apenas descobre os zeros e divide, não está invertendo.

 

Você pode usar o mesmo que notação ou pares.  Usando % você pode sempre obter o resto, ou seja, o ultimo numero.Por exemplo:

 

Vamos supor que você receba os dígitos 213 na variável num. Usando %, podemos pegar 3, 1 e 2 na sequência, assim:

 

1 - Usamos % em 213 por 10, ficando:       21,3

//213 = 21,3 = 3
resto = (num % 10);

 

 

2 - Assim recebemos 3, e acrescentamos a uma variável de retorno ( que será o nosso resultado final ).

//puxa a variavel para o final
resultado *= 10; 
//se o resto for maior que zero, ascrescenta a variavel
//se for zero, continua igual
resultado = (resto > 0 ? (x+y):x);

3 - Agora num precisa ser dividido por 10, para eliminar o ultimo valor e, para ser verificado pelo while.

num /= 10;

 

4 - Sobra 21, e dividindo por 10, fica:  2,1

Apenas repita o 2 e o 3 caso no while.

 

 

 

 

.....

Segue o código:

int intlen(int num){ 
        int x = 0, y = 0;
		//se num for 0, não tem mais o que fazer...
        while(num > 0){ 
                y = num % 10;
                num /= 10;
                //multiplica por 10, para adicionar 0
                x = (y > 0 ? ((x*10)+y):(x*10));
        }
        return x;
}

 

 

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!