Programación General > Pascal
No logro encontrar error
(1/1)
susicarlos4:
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:
program CuentaBanco;
uses crt;
var
SaldoActual, ImporteCheque : Real;
Mensaje : string;
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;
procedure Fondos_Insuficientes(var Mensaje : string);
begin
Mensaje := 'Fondos Insuficientes'
end;
procedure Nuevo_Saldo(var Saldo : real; Importe : real; Mensaje : string);
begin
Mensaje := 'Cantidad descontada en cuenta';
Saldo := Saldo - Importe
end;
procedure Test_Operacion(var Saldo : real; Importe : real; Mensaje : string);
begin
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.
CristhianUNSa:
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
eternity:
no lo compile, pero me parece que esto
--- Cita de: "susicarlos4" ---procedure Introducir(var Saldo : real; Importe : real);
--- Fin de la cita ---
esta mal y deberia ser asi:
--- Código: Pascal ---procedure Introducir(var Saldo : real; var Importe : real);
es decir, hay que pasar por referencia tanto SALDO como IMPORTE
:good:
eternity:
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!
suerte amigo!
:good:
Navegación
Ir a la versión completa