Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

ber0x88

[Resolvido] int lenght

Mensagens Recomendadas

ber0x88    0
ber0x88

Boas pessoal...

Para ver o comprimento de uma string é "strlen()", mas para numeros inteiros, por exemplo "10", como faço para saber que são dois numeros?!?

Tenho que converter o inteiro para string?!?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pcaldeira    0
pcaldeira

Podes converter o inteiro para string, mas não é a solução mais directa nem a mais rápida. Podes ver directamente o número de algarismos com um ciclo como este:

for(i=0; num!=0; i++, num/=10);

Basicamente, num é uma variável que tem uma cópia do número em questão. Sucessivamente, divide-se o número por 10 e vai-se contando o número de divisões feitas. Quando n é 0, não é possível dividir novamente. Aí, o número de divisões feitas (no código acima armazenado na variável i) será o número de algarismos que se pretende saber. Não te esqueças que num é uma cópia do número que queres "medir"; não podes usar este ciclo directamente na variável que tem o número sem copiá-la, a menos que não precises do número depois de o "medires".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Uma outra alternativa é dares uma vista de olhos à função log10 no math.h mas acho que será mais pesada para o sistema que o método dado pelo pcaldeira.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MX+    0
MX+

Já precisei várias vezes disso e a solução do pcaldeira é o que uso. Podes fazer a função inline para ser mais rapida.

inline unsigned int length(int n);

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade