Túnel do Tempo: a função itoa()

Em uma discussão no fórum de Programação em C e C++ do Viva o Linux, seu proponente perguntava acerca da função itoa(), desejoso de compreender seu funcionamento. Julguei interessante transportá-la, com algumas melhorias, para este espaço, até porque aqui posso fazer algo que não posso fazer naquele fórum, que é dar um exemplo explícito da implementação com código fonte em C.

[ Hits: 16.202 ]

Por: Paulo em 14/06/2017 | Blog: http://unixntools.blogspot.com.br/


Algoritmo para formação do numeral a partir do valor do número



A forma de resolver o último exercício acima era dada pelo seguinte algoritmo.

1) Começa-se a composição do numeral na posição mais à direita.

2) Divide-se o valor a ser convertido pela quantidade n de algarismos de algarismos do sistema de numeração, guardando-se o quociente e o resto dessa divisão.

3) O resto da divisão corresponde ao algarismo que ocupa essa posição do numeral.

4) Se o quociente for zero, a conversão está encerrada.

5) Caso contrário, desloca-se uma posição à esquerda na composição do numeral.

6) O valor a ser convertido passa a ser igual ao quociente da divisão.

7) Volta-se ao passo 2.

Podemos testar o algoritmo acima. Por exemplo, vamos resolver o último exercício mostrado anteriormente neste artigo, que pede para representar o número 129 num sistema de numeração com base igual a 4, e algarismos 'A' (valor absoluto 0), 'B' (valor absoluto 1), 'C' (valor absoluto 2) e 'D' (valor absoluto 3).
  • 129/4 produz 32, com resto 1. Logo o algarismo da casa mais à direita é "B".
  • 32/4 produz 8, com resto 0. Logo o algarismo da segunda casa a partir da direita é "A".
  • 8/4 produz 2, com resto 0. Logo o algarismo da terceira casa a partir da direita é "A".
  • 2/4 produz 0, com resto 2. Logo o algarismo da quarta casa a partir da direita é "C".

O numeral que representa 129 no sistema de numeração pedido é expresso como "CAAB".

O algoritmo acima é uma possível implementação de itoa(), pois ele de fato produz um numeral formado por um conjunto de símbolos utilizando notação posicional a partir de um valor de número.

Página anterior     Próxima página

Páginas do artigo
   1. Apresentação do problema
   2. A implementação da itoa() do antigo Turbo C (e seus problemas)
   3. Alguns conceitos para a implementação da função
   4. Algoritmo para formação do numeral a partir do valor do número
   5. "my_itoa()", uma implementação segura de conversão de número em string
   6. Variações de "my_itoa()"
   7. Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Criando um sistema operacional com ASM e C++

Escrevendo o caos em C

Apreendendo a utilizar o GNU Debugger (parte 2)

Utilizando a biblioteca NCURSES - Parte II

LivreNFE - O emissor Nfe open source para Linux

  
Comentários
[1] Comentário enviado por uNclear em 19/06/2017 - 01:55h

ótimo artigo, quando tiver tempo vou fazer alguns testes

[2] Comentário enviado por uilianries em 19/06/2017 - 11:23h

Muito bem detalhado. Parabéns pelo conteúdo, Paulo.

[3] Comentário enviado por Nick-us em 01/03/2019 - 20:08h

Valeu a pena ler e guardar! informação nunca é demais!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts