Repet_31-Leer+dígitos+y+calcular+numero+representado

=__**Calcular el valor representado por una secuencia de caracteres (dígitos)**__=

Leer cuatro dígitos como máximo (o hasta leer el carácter punto '.') y calcular el valor numérico representado

**Utilizando ReadLn para leer los carateres**

code format="pascal" PROGRAM P_38_E31_A ; USES Crt ; CONST iNUM_MAX_DIGITOS = 4 ; cCARACTER_FINAL = '.' ; VAR cDigitoLeido : Char ; byContDigitos, byDigitoLeido : Byte ; iValorSerie : Integer ; cEspera : Char ;

BEGIN Clrscr ; Writeln ; Writeln (' Cálculo del valor numérico representado por una serie de dígitos') ; Writeln ;

iValorSerie := 0 ;

byContDigitos := 0 ;

Writeln ; WriteLn (' -- Se utiliza el procedimiento READLN --') ; Writeln ;

REPEAT byContDigitos := byContDigitos + 1 ;

Write (' Escribe dígito ( ', cCARACTER_FINAL, ' para terminar) y pulsa RETURN: ') ; Readln (cDigitoLeido) ;

IF cDigitoLeido <> cCARACTER_FINAL THEN BEGIN { Valor numérico del dígito leído } byDigitoLeido := Ord (cDigitoLeido) - Ord ('0') ;

{ El dígito leído es la nuevas unidades y los anteriores } { se desplazan una posición hacia la izquierda } iValorSerie := iValorSerie * 10 + byDigitoLeido ; END

UNTIL (byContDigitos >= iNUM_MAX_DIGITOS) OR (cDigitoLeido = cCARACTER_FINAL) ;

Writeln ; Writeln (' El valor leído es: ', iValorSerie) ; writeln ; cEspera := Readkey ; END. code

**Utilizando ReadKey para leer los carateres**

code format="pascal" PROGRAM P_38_E31_B ; USES Crt ; CONST iNUM_MAX_DIGITOS = 4 ; cCARACTER_FINAL = '.' ; VAR cDigitoLeido : Char ; byContDigitos, byDigitoLeido : Byte ; iValorSerie : Integer ; cEspera : Char ;

BEGIN Clrscr ; Writeln ; Writeln (' Cálculo del valor numérico representado por una serie de dígitos') ; Writeln ;

iValorSerie := 0 ;

byContDigitos := 0 ;

Writeln ; WriteLn (' -- Se utiliza la función READKEY --') ; Writeln ;

REPEAT byContDigitos := byContDigitos + 1 ;

Write (' Escribe dígito ( ', cCARACTER_FINAL, ' para terminar) y pulsa RETURN: ') ;

REPEAT cDigitoLeido := ReadKey ; UNTIL (('0' <= cDigitoLeido) AND (cDigitoLeido <= '9')) OR (cDigitoLeido = cCARACTER_FINAL) ; Writeln (cDigitoLeido) ;

IF cDigitoLeido <> cCARACTER_FINAL THEN BEGIN { Valor numérico del dígito leído } byDigitoLeido := Ord (cDigitoLeido) - Ord ('0') ;

{ El dígito leído es la nuevas unidades y los anteriores } { se desplazan una posición hacia la izquierda } iValorSerie := iValorSerie * 10 + byDigitoLeido ; END ;

UNTIL (byContDigitos >= iNUM_MAX_DIGITOS) OR (cDigitoLeido = cCARACTER_FINAL) ;

Writeln ; Writeln (' El valor leído es: ', iValorSerie) ; writeln ; cEspera := Readkey ; END. code