Pascal/Turbo Pascal - ayuda porfavor

 
Vista:

ayuda porfavor

Publicado por Melvin (13 intervenciones) el 28/02/2007 23:41:07
Hola que tal, fijense que necesito su ayuda.

pasa lo siguiente: estoy desarrollando un programa en el cual se ingresa un año vigente entre 1000 y 2000 y que le despliegue la respuesta en letras.

por ejemplo: el usuario ingresa el año 1984 y el programa debe de desplegar "mil novecientos ochenta y cuatro".

El problema esta en que cuando deseo expresar las decenas como ONCE en letras; con un case estoy desempeñando para que lea los millares, centenas, decenas y unidades. pero el problema es que cuando las decenas son por ejemplo "ONCE", el case no me puede desplegar esa palabra.

ya que si por ejemplo ingreso el año 1913 me tendría que desplegar en letras lo siguiente "MIL NOVECIENTOS TRECE" ... y con el case lo expresa asi: "MIL NOVECIENTOS DIEZ TRES" ya que lee por aparte las unidades, decenas, centenas y millares. entonces necesito una ayudadita de como poder resolver ese problemita se los agradecería mucho.

Gracias... Melvin Leal
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda porfavor

Publicado por Carlos Guimaraenz (265 intervenciones) el 01/03/2007 04:28:24
Hola Melvin! No lo he probado con todos los números, pero parece funcionar... espero que te sirva. Un abrazo!

program AnoLetras;
uses crt;

procedure EnLetras(ano : integer);
var
m,c,d,u : byte;
begin
m:=ano div 1000;
u:=ano mod 10;
ano:=ano div 10;
d:=ano mod 10;
ano:=ano div 10;
c:=ano mod 10;
{escribo la unidad de mil}
if (m = 2) then
write('DOS ');
write('MIL ');
{escribo la centena}
case c of
1 : begin
write('CIEN');
if (d > 0) or ((d = 0) and (u > 0)) then
write('TO');
write(' ');
end;
2 : write('DOSCIENTOS ');
3 : write('TRESCIENTOS ');
4 : write('CUATROCIENTOS ');
5 : write('QUINIENTOS ');
6 : write('SEISCIENTOS ');
7 : write('SETECIENTOS ');
8 : write('OCHOCIENTOS ');
9 : write('NOVECIENTOS ');
end;
{escribo la decena, quizá con teens...(del diez al quince)}
case d of
1 : begin
if (u >= 0) and (u <= 5) then
case u of
0 : write('DIEZ');
1 : write('ONCE');
2 : write('DOCE');
3 : write('TRECE');
4 : write('CATORCE');
5 : write('QUINCE');
else
write('DIECI');
end;
end;
2 : write('VEINT');
3 : write('TREINT');
4 : write('CUARENT');
5 : write('CINCUENT');
6 : write('SESENT');
7 : write('SETENT');
8 : write('OCHENT');
9 : write('NOVENT');
end;
if u = 0 then
begin
if d > 2 then
write('A');
if d = 2 then
write('E');
end
else
if d > 1 then
write('I');
{escribo la unidad}
case u of
1 : if d <> 1 then write('UNO');
2 : if d <> 1 then write('DOS');
3 : if d <> 1 then write('TRES');
4 : if d <> 1 then write('CUATRO');
5 : if d <> 1 then write('CINCO');
6 : write('SEIS');
7 : write('SIETE');
8 : write('OCHO');
9 : write('NUEVE');
end;
end;

var
ano : integer;
begin
clrscr;
write('Año: '); readln(ano);
EnLetras(ano);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda porfavor

Publicado por melvin (13 intervenciones) el 01/03/2007 04:41:51
gracias por tu ayuda, si funciona con los demas numeros.. te lo agradezco mucho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar