lugh 0 Posted January 2, 2009 Report Share Posted January 2, 2009 Boas! Existe alguma função em C para determinar o numero de dígitos duma variável do tipo int? Obrigado. Link to post Share on other sites
pmg 85 Posted January 2, 2009 Report Share Posted January 2, 2009 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! Link to post Share on other sites
Ferreira 0 Posted January 2, 2009 Report Share Posted January 2, 2009 Também podes fazer sucessivas divisões por 10 e contar o número de iterações até chegar a 0. http://twitter.com/ferreira Link to post Share on other sites
Knitter 101 Posted January 2, 2009 Report Share Posted January 2, 2009 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. www.sergiolopes.eu Link to post Share on other sites
pmg 85 Posted January 2, 2009 Report Share Posted January 2, 2009 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! Link to post Share on other sites
Rui Carlos 359 Posted January 2, 2009 Report Share Posted January 2, 2009 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. 1 Report Rui Carlos Gonçalves Link to post Share on other sites
Knitter 101 Posted January 2, 2009 Report Share Posted January 2, 2009 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.... www.sergiolopes.eu Link to post Share on other sites
pmg 85 Posted January 2, 2009 Report Share Posted January 2, 2009 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! Link to post Share on other sites
Baderous 31 Posted January 2, 2009 Report Share Posted January 2, 2009 Oh Knitter, não foi assim tão descabido, eu também pensei que era isso. Link to post Share on other sites
lugh 0 Posted January 2, 2009 Author Report Share Posted January 2, 2009 Estão aí algoritmos muito interessantes. Obrigadão a todos! Link to post Share on other sites
pedrosorio 4 Posted January 2, 2009 Report Share Posted January 2, 2009 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. Link to post Share on other sites
lugh 0 Posted January 3, 2009 Author Report Share Posted January 3, 2009 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 Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now