Ir para o conteúdo
lugh

Questão sobre o número de dígitos duma variável do tipo int

Mensagens Recomendadas

pmg

Hmmm ... não directamente.

Mas podes imprimir a variável para um string e calcular o tamanho da string.

int num_digitos(int variavel) {
  char buf[100];
  int len;

  sprintf(buf, "%d", variavel);
  len = strlen(buf);
  if (variavel < 0) len--;
  return len;
}

Não testado

Edit: nova versão, sem strlen()

int num_digitos(int variavel) {
  char buf[100];
  int len;

  len = sprintf(buf, "%d", variavel);
  if (variavel < 0) len--;
  return len;
}


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Também podes fazer sucessivas divisões por 10 e contar o número de iterações até chegar a 0.

Boa ideia, Ferreira ;)

http://paste.portugal-a-programar.org/pastebin.php?show=3040


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

O número de dígitos é um valor fixo, dependente do tamanho do int na plataforma, se souberes o tamanho do int sabes logo quantos dígitos pode ter.

Só para indicar que isto foi a resposta parva de quem tinha acabado de acordar e não leu a pergunta como deve de ser....

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Podes usar a fórmula floor(log10(abs(x)))+1, para saberes quantos dígitos tem o valor x, que funcionará para qualquer x diferente de 0.

Supondo que x é um int ... "qualquer x diferente de 0" e diferente de INT_MIN (*) ;)

(*) isto para máquinas onde os int's são representados com 2's complement.

Nestas máquinas abs(INT_MIN) == INT_MIN /* == -2147483648 */


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrosorio

Eu também pensei que era isso Knitter...

Se fosse necessário bastaria aplicar a fórmula ao valor power(256,sizeof(int))-1


Não respondo a dúvidas por mensagem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
lugh

Eu também pensei que era isso Knitter...

Se fosse necessário bastaria aplicar a fórmula ao valor power(256,sizeof(int))-1

O que pretendia era:

x = 12345678

x tem 8 dígitos

ou

y = 1234

y tem 4 digitas

:)

Partilhar esta mensagem


Ligação 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 os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.