[C con Clase] conversion de numero a texto

Steven Davidson steven en conclase.net
Mie Mar 14 06:41:53 CET 2007


Hola Pedro,

El pasado 2007-03-14 01:44:36, Pedro Mateo escribió:

Primeramente, ten presente que las clases-plantillas en las STL ya tienen la definición escrito en código fuente. Si no has visto el tema de plantillas, seguramente no lo sabías. Puedes elegir cualquier fichero de las STL, como <iostream>, <iomanip>, <stringstream>, <algorithm>, <string>, etc., en cualquier editor de texto para ver su implementación. Lo más probable es que veas muchísimo código que pueda o no que entiendas.
 
PM> me gustaria conocer el algoritmo para convertir de numero a texto se que existen funciones std pero me gustaria entender la mecanica de las mismas

Típicamente, se aplican operaciones aritméticas para formar el valor numérico que interesa. Por ejemplo,

num = 123;

digito = num % 10;
num /= 10;

car = '0'+digito;

digito = num % 10;
num /= 10;

car = '0'+digito;

Y así sucesivamente, hasta terminar; o sea, hasta que 'num' sea 0.

El algoritmo empleado es algo parecido a lo anterior.

PM> tambien me gustaria encontrar los algoritmos utilizados en la funciones de std 
PM> existe algun sitio donde se encuentra progamas sensillos de que indiquen su funcionamiento interno

Me temo que no conozco ninguno, pero si de verdad te interesa tanto, sugiero encontrar el código fuente de las funciones estándares de alguna distribución. Por ejemplo, donde encuentres un compilador de GNU, probablemente encontrarás su código fuente. Encontré este enlace para DJGPP: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/gcc336s.zip  Son unos 27 MB. Me temo que es el código fuente completo de GNU junto con las bibliotecas.

PM> las funciones de texto con strcpy strcat las encontre y fue muy interesante estudiarlas y entenderlas
PM> pero necesito encontrar las demas como las matematicas y las de I/O

Las funciones matemáticas típicamente se basan en aproximaciones de Taylor, seguramente, para aquellas funciones más difíciles como 'sin()', 'cos()', 'tan()', 'log()', 'log10()', etc..

Para las funciones de E/S, me temo que te vas a topar con llamadas a funciones del sistema. Ten presente que no todos los entornos manejan los puertos de E/S de la misma manera que los demás. Por lo tanto, al final, obtendrás una llamada a una función dependiente del entorno en el que estés.


Espero haber aclarado las dudas.

Steven


Más información sobre la lista de distribución Cconclase