practico 5, ejercicio 5

practico 5, ejercicio 5

de María Eugenia Sosa Rodríguez -
Número de respuestas: 3

Buenas noches, tengo un problema con el código y no me estoy dando cuenta cuál es el error, al compilar salta error 106. (posible codigo)

En respuesta a María Eugenia Sosa Rodríguez

Re: practico 5, ejercicio 5

de Luis Sierra -
hola eugenia,

en la sección Laboratorio tienes un enlace a la Descripción de errores en tiempo de ejecución provista por free pascal. allí puedes leer:

106 Invalid numeric format
Reported when a non-numeric value is read from a text file, and a numeric value was expected.

en tu código hay solamente dos lugares en los que puede haber sucedido algo así: la línea que dice read (saldo) o la que dice readln (suma). el lugar en que ocurrió ese problema te debería aparecer en el mensaje de error.

acostúmbrate a extraer toda la info posible de los mensajes de error. en este caso, ya sabrías dónde y por qué fue el error.

dicho esto, imagino que el problema te aparece ya en el arranque. supongamos que iniciás con un saldo de 100 y querés depositar 50. supongo que tu sesión es más o menos así.

ponés 100 ENTER d ENTER 50 ENTER
y ahí se rompe.

y supongo que lo que sucede es:
1. se almacena 100 en saldo
2. se almacena ENTER (o algo parecido) en letra
3. se intenta leer el número d, que no es un número, y
4. se rompe.

y me parece que la solución sería asegurarse que al leer el saldo inicial se consuma todo el renglón: usar readln en lugar de read.

saludos
luis
En respuesta a Luis Sierra

Re: practico 5, ejercicio 5

de Michael Ruiz -
Buenas, yo noté un "error" tanto en la solución como en mi programa (mismo error).

El programa pide un saldo ejemplo 1200, luego pide la "letra" sea D, R o X. Si en este momento ingresamos X para indicar que no realizamos movimientos el programa de igual forma entra al WHILE.


No entiendo por qué, ya que debería entrar al WHILE si solo si tipo <> X. Si ingresamos X de primera instancia igualmente queda esperando datos para WHILE.

Esto a que se debe? no debería saltarse el while?

GRacias!
En respuesta a Michael Ruiz

Re: practico 5, ejercicio 5

de Luis Sierra -
(editado por problemas de formato)

hola michael,

supongo que la entrada que te molesta es: 1200X<ENTER>, pero esa no es una entrada válida. la entrada correcta sería 1200<ENTER>X<ENTER>.

la solución publicada queda esperando cuando pones 1200X<ENTER> porque lee el 1200 en una variable real, y luego consume toda la línea (es un readln); de esa forma, el X nunca se cargó en ninguna variable. y el siguiente read queda esperando datos para WHILE

saludos
luis