with text_io, Ada.float_text_io; use text_io, Ada.float_text_io; procedure LeerReal is numero, signo, parteDecimal: float; valorDigito: integer range 0..9; letra: character ; begin get(letra); while (letra=' ') loop get(letra); end loop; if (letra='+') then signo:= 1.0; get(letra) ; elsif (letra='-') then signo:= -1.0; get(letra); else signo:= 1.0; end if; numero:=0.0; parteDecimal:= 1.0; if (letra >='0') AND (letra<='9') then while (letra >='0') AND (letra<='9') loop valorDigito:= CHARACTER'POS(letra) - CHARACTER'POS('0'); numero:= numero*10.0+ float(valorDigito); get(letra); end loop; if (letra='.') then get(letra); if (letra >='0') AND (letra<='9') then while (letra >= '0') AND (letra<= '9') loop valorDigito:= CHARACTER'POS(letra) - CHARACTER'POS('0'); parteDecimal:= parteDecimal / 10.0; numero:= numero+ float(valorDigito)*parteDecimal; get(letra); end loop; put("El numero leido es: "); put(numero*signo); else put("Un numero real debe tener parte decimal"); end if; else put("Un numero real debe tener un punto"); end if; else put("Un numero real debe empezar por un digito o un signo seguido de un digito"); end if; end LeerReal;