Programación General > Pascal

 Resolver error en Pascal (cajero automatico)

(1/1)

SubZeroHack:
Hola!! espero que me ayuden
les cuento que debo hacer un programa simple (mediante procedimientos y funciones tipicas) que simule un cajero automatico, este debe realizar depositos,giros,estado de saldo,desglosar el giro en billetes de 20000,10000,5000,1000 y monedas de 500,100,50,10,1
esto es lo que llevo basicamente pero aun falta pulir algunas cosas


--- Código: Pascal ---program cajero;uses crt; var //Globalessaldo,numgi,numdep,op,gi,dep:integer; (*******************************************************)procedure giro(var numdep,numgi,saldo:integer;gi:integer);//realiza girobegin  repeat  write('Ingrese valor a girar = $');  readln(gi);  until(gi>0);  numgi:=numgi+1;  numdep:=numdep;  saldo:=saldo-gi;end;(*******************************************************)procedure deposito(var numdep,numgi,saldo:integer;dep:integer);//realiza depositobegin  repeat  write('Ingrese valor a depositar = $');  readln(dep);  until(gi>0);  numdep:=numdep+1;  numgi:=numgi;  saldo:=saldo+dep;end;(*******************************************************)procedure imprime(x,numgi,numdep,saldo:integer);//imprime operacionvar  b20,b10,b5,b1,m500,m100,m50,m10,m1:integer;begin  b20:=x div 20000;  x:=x-(20000*b20);  b10:=x div 10000;  x:=x-(10000*b10);  b5:=x div 5000;  x:=x-(5000*b5);  b1:=x div 1000;  x:=x-(1000*b1);  m500:=x div 500;  x:=x-(500*m500);  m100:=x div 100;  x:=x-(100*m100);  m50:=x div 50;  x:=x-(50*m50);  m10:=x div 10;  x:=x-(10*m10);  m1:=x div 1;  x:=x-(1*m1);  writeln('| $20000 =',b20:3 ,' |');  writeln('| $10000 =',b10:3 ,' |');  writeln('| $5000  =',b5:3  ,' |');  writeln('| $1000  =',b1:3  ,' |');  writeln('| $500   =',m500:3,' |');  writeln('| $100   =',m100:3,' |');  writeln('| $50    =',m50:3 ,' |');  writeln('| $10    =',m10:3 ,' |');  writeln('| $1     =',m1:3  ,' |');   writeln('==============================================================================');  writeln('Saldo       |Deposito   |Giro       |Num. de Giros  |Num. de Depositos|         ');  writeln('==============================================================================');  writeln(saldo:12,dep:12,gi:12,numgi:12,numdep:12);end;(*******************************************************)procedure menu;begin  writeln('=================');  writeln('Banco PrograBank ');  writeln('=================');  writeln;  writeln('1.- Deposito');  writeln('2.- Retiro o Giro');  writeln('3.- Saldo');  writeln('4.- Salir');end;(*******************************************************)(*******************Principal***************************) begin  saldo:=100000;  numgi:=0;  numdep:=0;  menu;  repeat  writeln('Ingrese una opcion');  read(op);  case (op) of  1:begin      deposito(numdep,numgi,saldo,dep);      imprime(dep,numgi,numdep,saldo);    end;  2:begin      giro(numdep,numgi,saldo,gi);      imprime(gi,numgi,numdep,saldo);    end;  3:begin      imprime(0,numgi,numdep,saldo);    end;  4:begin      readkey;    end  else    begin      writeln('Ingrese una opcion valida');    end;  until (op=4);end. 
el problema esta en que me da un error el cual no me puedo percatar el cual es el siguiente:

--- Citar ---112 / 3   Fatal: Syntax error, END expected but UNTIL found
--- Fin de la cita ---

por favor ayudenme necesito realizar este trabajo luego, desde ya gracias

epayan:
creo que en esta parte hay un error de lógica pero no creo que sea tu problema en si


--- Código: Pascal ---# procedure deposito(var numdep,numgi,saldo:integer;dep:integer);# //realiza deposito# begin#   repeat#   write('Ingrese valor a depositar = $');#   readln(dep);#   until(gi>0); 
mañana checo  tu codigo

epayan:
siguiendo tu código, corrigiendo dos que tres cosas por ahí , respetando tu lógica este es el resultado.. verifica bien  tu lógica si es lo que deseas que arroje en el procedimiento imprime..

 

--- Código: Pascal ---    program cajero;    uses crt;     var //Globales    saldo:longint;    numgi,numdep,op,gi,dep:integer;     (*******************************************************)    procedure giro(var numdep,numgi:integer ;var saldo:Longint;var gi:integer);    //realiza giro   begin     gi:=0;     repeat     write('Ingrese valor a girar = $');     readln(gi);     until(gi>0);     numgi:=numgi+1;     numdep:=numdep;     saldo:=saldo-gi;   end;   (*******************************************************)   procedure deposito(var numdep,numgi:integer; var saldo:longint;var dep:integer);   //realiza deposito   begin     dep:=0;     repeat     write('Ingrese valor a depositar = $');     readln(dep);     until(dep>0);     numdep:=numdep+1;     numgi:=numgi;    saldo:=saldo+dep;   end;   (*******************************************************)   procedure imprime(x,numgi,numdep:Integer;var saldo:Longint);   //imprime operacion   var     b20,b10,b5,b1,m500,m100,m50,m10,m1:integer;   begin     b20:=x div 20000;     x:=x-(20000*b20);     b10:=x div 10000;     x:=x-(10000*b10);     b5:=x div 5000;     x:=x-(5000*b5);     b1:=x div 1000;     x:=x-(1000*b1);    m500:=x div 500;     x:=x-(500*m500);     m100:=x div 100;     x:=x-(100*m100);     m50:=x div 50;     x:=x-(50*m50);     m10:=x div 10;     x:=x-(10*m10);     m1:=x div 1;     x:=x-(1*m1);     writeln('| $20000 =',b20:3 ,' |');     writeln('| $10000 =',b10:3 ,' |');     writeln('| $5000  =',b5:3  ,' |');     writeln('| $1000  =',b1:3  ,' |');     writeln('| $500   =',m500:3,' |');     writeln('| $100   =',m100:3,' |');     writeln('| $50    =',m50:3 ,' |');     writeln('| $10    =',m10:3 ,' |');     writeln('| $1     =',m1:3  ,' |');     writeln('==============================================================================');     writeln('Saldo       |Deposito   |Giro       |Num. de Giros  |Num. de Depositos|         ');     writeln('==============================================================================');     writeln(saldo:12,dep:12,gi:12,numgi:12,numdep:12);   end;   (*******************************************************)   procedure menu;   begin    writeln('=================');     writeln('Banco PrograBank ');     writeln('=================');     writeln;     writeln('1.- Deposito');     writeln('2.- Retiro o Giro');    writeln('3.- Saldo');    writeln('4.- Salir');  end;  (*******************************************************)  (*******************Principal***************************)   begin    clrscr;    saldo:=100000;    numgi:=0;    numdep:=0;    repeat        menu;        writeln('Ingrese una opcion');        read(op);        If Op In [1..4] then           Begin              case (op) of                 1:begin                     deposito(numdep,numgi,saldo,dep);                     imprime(dep,numgi,numdep,saldo);                   end;                 2:begin                     giro(numdep,numgi,saldo,gi);                     imprime(gi,numgi,numdep,saldo);                   end;                 3:begin                     imprime(0,numgi,numdep,saldo);                   end;                 4:begin                     Writeln('Fin del Programa...');                     readkey;                   End;                 End;{Case}           End        Else           writeln('Ingrese una opcion valida');    until (op=4); end.  

SubZeroHack:
oh muchas gracias es justo como queria que funcionara mi programa. con el codigo que me publicaste corre de lo mas bien y como tu decias habia problemas en mi logica .
Muchas gracias!!!

Navegación

[0] Índice de Mensajes

Ir a la versión completa