No nos gusta la S.O.P.A.

Esta pequeña herramienta convierte un número en una cadena de texto. La escribí (modificando una del sistema kForth) para mi sistema Forth 5mx, que carece de las palabras <#, #, #> y demás que hacen la misma función.

Necesita sbuffer para funcionar.

Listado


\ ****************************
CR .( n2str )
\ ****************************

\ Copyright (C) 2001,2005 Marcos Cruz (http://programandala.net)
\ Licencia/License/Permesilo: http://programandala.net/license

\ Programa escrito en ANS Forth.
\ Programo verkita en ANS-Fortho.
\ Program written in ANS Forth.

\ Herramienta para convertir un número en un texto.
\ Ilo por tekstigi nombron.
\ Tool to convert a number into a text.

\ Palabras adaptadas de:
\ Vortoj adaptitaj el:
\ Words adapted from:
\ strings.4th (String utility words for kForth, 1999)

\ ***************************************************************
\ Historial de versiones / Versihistorio / Version history :
\ ***************************************************************

\ 2005.10.18

\  Todas las palabras renombradas en inglés.
\  Chiuj vortoj angle renomitaj.
\  All words renamed into English.

\ 2001

\  Primera versión.
\  Unua versio.
\  First version.

\ ***************************************************************

[undefined] >sbuffer [IF]

	\ Se precisa el búfer circular de texto.
	\ Necesas la cirkla teksta bufro.
	\ Circular string buffer needed.

	INCLUDE sbuffer.fs

[THEN]

32 CONSTANT nlen

: n>str ( n -- c-addr1 u1 )

	\ Kreas chenon el numero.
	\ n = numero
	\ c-addr1 u1 = teksta cheno
	\ +n = numero ekzaminata, pozitiva kaj restanta el dividoj
	\ a = adreso de la cifero kalkulata
	\ b = cifero kalkulita

	nlen +sbuffer
	0 SWAP nlen 1- + C!
	sbuffer nlen 2 - + SWAP
	DUP >R ABS ( a +n ) ( R: n )
	BEGIN
	  10 /MOD SWAP [CHAR] 0 +  \ kalkuli ciferon ( a +n b )
	  >R OVER R> SWAP C! \ konservi ciferon ( a +n )
	  SWAP 1- SWAP  \ celumi al adreso por venonta cifero
	  DUP 0=
	UNTIL
	DROP
	R> 0<
	IF
		[CHAR] - OVER C! 1- \ meti minusan signon
	THEN
	sbuffer nlen 2 - + OVER - \ kalkuli longon de la cheno
	sbuffer+  \ protekti la rezulton
	SWAP 1+ SWAP
;

.(  n2str ok!)

Descarga

n2str.fs (1.91 KiB)

Categorías de esta página

URL: http://programandala.net/es.programa.n2str

Página escrita en 2009-06-09
Última modificación realizada en 2009-12-03