Devuelve la forma escrita de un numero entero
Uses Crt; { Este programa devuelve, dado un n£mero entero, el valor del n£mero escrito en palabras, por ejemplo: Si se ingresa 17854 el programa escribe "Diecisiete mil ochocientos cincuenta y cuatro" Esta tarea la realiza principalmente el procedimiento "Num_Pal" que puede en algunos casos llamarse recursivamente para terminar de resolver el n£mero dado. Nota: El programa acepta valores enteros entre -32768 y 32767 (Rango num‚rico del tipo "Integer"). Puede ser extendido igualmente para aceptar enteros largos (Longint) y en tal caso ser necesario que el procedimiento reconozca los millones. Este programa fue escrito por Nicol s Rozas Salgado. } { Procedure Num_Pal(Var S: String; Num: Integer); Convierte el n£mero especificado a trav‚s de "Num" en palabra y guarda esa palabra en la variable "S". En caso de ser necesario se llama recursivamente (a s¡ mismo) para terminar de resolver la palabra. } Procedure Num_Pal(Var S: String; Num: Integer); Begin If Num < 0 Then Begin S:= 'Menos '; Num:= Abs(Num); {Lo convierto a positivo} End; Case Num Of 0: S:= S + 'cero'; 1: S:= S + 'uno'; 2: S:= S + 'dos'; 3: S:= S + 'tres'; 4: S:= S + 'cuatro'; 5: S:= S + 'cinco'; 6: S:= S + 'seis'; 7: S:= S + 'siete'; 8: S:= S + 'ocho'; 9: S:= S + 'nueve'; 10: S:= S + 'diez'; 11: S:= S + 'once'; 12: S:= S + 'doce'; 13: S:= S + 'trece'; 14: S:= S + 'catorce'; 15: S:= S + 'quince'; 16..19: Begin S:= S + 'dieci'; Dec(Num,10); Num_Pal(S,Num); End; 20: S:= S + 'veinte'; 21..29: Begin S:= S + 'veinti'; Dec(Num,20); Num_Pal(S,Num); End; 30: S:= S + 'treinta'; 31..39: Begin S:= S + 'treinta y '; Dec(Num,30); Num_Pal(S,Num); End; 40: S:= S + 'cuarenta'; 41..49: Begin S:= S + 'cuarenta y '; Dec(Num,40); Num_Pal(S,Num); End; 50: S:= S + 'cincuenta'; 51..59: Begin S:= S + 'cincuenta y '; Dec(Num,50); Num_Pal(S,Num); End; 60: S:= S + 'sesenta'; 61..69: Begin S:= S + 'sesenta y '; Dec(Num,60); Num_Pal(S,Num); End; 70: S:= S + 'setenta'; 71..79: Begin S:= S + 'setenta y '; Dec(Num,70); Num_Pal(S,Num); End; 80: S:= S + 'ochenta'; 81..89: Begin S:= S + 'ochenta y '; Dec(Num,80); Num_Pal(S,Num); End; 90: S:= S + 'noventa'; 91..99: Begin S:= S + 'noventa y '; Dec(Num,90); Num_Pal(S,Num); End; 100: S:= S + 'cien'; 101..199: Begin S:= S + 'ciento '; Dec(Num,100); Num_Pal(S,Num); End; 200: S:= S + 'doscientos'; 201..299: Begin S:= S + 'doscientos '; Dec(Num,200); Num_Pal(S,Num); End; 300: S:= S + 'trescientos'; 301..399: Begin S:= S + 'trescientos '; Dec(Num,300); Num_Pal(S,Num); End; 400: S:= S + 'cuatrocientos'; 401..499: Begin S:= S + 'cuatrocientos '; Dec(Num,400); Num_Pal(S,Num); End; 500: S:= S + 'quinientos'; 501..599: Begin S:= S + 'quinientos '; Dec(Num,500); Num_Pal(S,Num); End; 600: S:= S + 'seiscientos'; 601..699: Begin S:= S + 'seiscientos '; Dec(Num,600); Num_Pal(S,Num); End; 700: S:= S + 'setecientos'; 701..799: Begin S:= S + 'setecientos '; Dec(Num,700); Num_Pal(S,Num); End; 800: S:= S + 'ochocientos'; 801..899: Begin S:= S + 'ochocientos '; Dec(Num,800); Num_Pal(S,Num); End; 900: S:= S + 'novecientos'; 901..999: Begin S:= S + 'novecientos '; Dec(Num,900); Num_Pal(S,Num); End; 1000: S:= S + 'mil'; 1001..1999: Begin S:= S + 'mil '; Dec(Num,1000); Num_Pal(S,Num); End; Else {2000..32767} Begin Num_Pal(S,Num Div 1000); S:= S + ' mil '; Num:= Num Mod 1000; If Num <> 0 Then Num_Pal(S,Num); End; End; {Case} End; {Principal} Var S: String; I: Integer; C: Char; Begin Repeat ClrScr; WriteLn('El valor que especifique debe estar entre -32768 y 32767'); WriteLn; Write('Escriba el n£mero a pronunciar: '); ReadLn(I); S:= ''; Num_Pal(S,I); S[1]:= Upcase(S[1]); {Hago may£scula de la primera letra (Para embellecer)} WriteLn; WriteLn('El n£mero ingresado es: ',S); WriteLn; Repeat Write('¨Desea ingresar otro n£mero (S-N)? '); C:= UpCase(ReadKey); WriteLn; Until C In ['S','N']; Until C = 'N'; End.
17854 -Diecisiete mil ochocientos cincuenta y cuatro ¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)
Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.
Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:
- Si es lenguaje C [c]Código en C[/c]
- Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].
De esta manera el código coloreas el código.
Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.
¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)