Programación General => Pascal => Mensaje iniciado por: susicarlos4 en Martes 9 de Septiembre de 2008, 18:20
Título: No logro encontrar error
Publicado por: susicarlos4 en Martes 9 de Septiembre de 2008, 18:20
Hola, Ante todo Gracias Anticipadas. No logro conseguir que funcione esta aplicacion. Concretamente no realiza una sencilla operacion de Resta. Me he pasado todo el dia y no encuentro el error. Es como si el procedimiento Test_Operacion no procesara el procedimiento Nuevo_Saldo. Lenguaje de programacion Pascal. Utilizo Free Pascal IDE. Un saludo. Codigo:
procedure Introducir(var Saldo : real; Importe : real); begin Write ('Introduce el Saldo actual de la cuenta: '); Readln (Saldo); Write ('Introduce Importe del Cheque: '); Readln (Importe); end;
if Importe < Saldo Then Nuevo_Saldo(Saldo, Importe, Mensaje) else Fondos_Insuficientes(Mensaje) end;
procedure Visualizar(var Saldo : real; Mensaje : string); begin Write ('Saldo actual = ',Saldo:4:2,' ',Mensaje); end;
BEGIN (* programa principal *) ClrScr; Introducir(SaldoActual, ImporteCheque); Test_Operacion(SaldoActual, ImporteCheque, Mensaje); Visualizar(SaldoActual, Mensaje); Writeln; Readln
END.
Título: Re: No logro encontrar error
Publicado por: CristhianUNSa en Jueves 23 de Octubre de 2008, 18:19
Creo que debes fijarte bien si el "mensaje" lo pasas por valor o por referencia.
Veo que le asignas un valor a "mensaje" en dos modulos, y en uno lo pasas por valor, pero si no lo pasas por referencia, mensaje queda en otra ubicacion de memoria, y no lo muestra nunca.
En otro modulo tienes el mismo problema
Ese es un error que veo
Título: Re: No logro encontrar error
Publicado por: eternity en Jueves 23 de Octubre de 2008, 21:20
procedure Introducir(var Saldo :real; var Importe :real);
es decir, hay que pasar por referencia tanto SALDO como IMPORTE
:good:
Título: Re: No logro encontrar error
Publicado por: eternity en Viernes 24 de Octubre de 2008, 04:57
efectivamente es en esa linea:
Código: Pascal
procedure Introducir(var Saldo :real; var Importe :real);
te explico, como estas usando variables globales, y se las estas pasando por parametros a un procedimiento que les carga un valor a las mismas, si lo pasas por valor como lo estabas haciendo con IMPORTE, vos estas ingresando un valor, en una copia en memoria de IMPORTE, no en IMPORTE, al pasar IMPORTE por referencia (con la palabra reservada VAR) estas agregando el valor a la variable misma!