• Domingo 22 de Diciembre de 2024, 17:11

Autor Tema:  Resolver error en Pascal (cajero automatico)  (Leído 3521 veces)

SubZeroHack

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Resolver error en Pascal (cajero automatico)
« en: Jueves 13 de Mayo de 2010, 02:25 »
0
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
  1. program cajero;
  2. uses crt;
  3.  
  4. var //Globales
  5. saldo,numgi,numdep,op,gi,dep:integer;
  6.  
  7. (*******************************************************)
  8. procedure giro(var numdep,numgi,saldo:integer;gi:integer);
  9. //realiza giro
  10. begin
  11.   repeat
  12.   write('Ingrese valor a girar = $');
  13.   readln(gi);
  14.   until(gi>0);
  15.   numgi:=numgi+1;
  16.   numdep:=numdep;
  17.   saldo:=saldo-gi;
  18. end;
  19. (*******************************************************)
  20. procedure deposito(var numdep,numgi,saldo:integer;dep:integer);
  21. //realiza deposito
  22. begin
  23.   repeat
  24.   write('Ingrese valor a depositar = $');
  25.   readln(dep);
  26.   until(gi>0);
  27.   numdep:=numdep+1;
  28.   numgi:=numgi;
  29.   saldo:=saldo+dep;
  30. end;
  31. (*******************************************************)
  32. procedure imprime(x,numgi,numdep,saldo:integer);
  33. //imprime operacion
  34. var
  35.   b20,b10,b5,b1,m500,m100,m50,m10,m1:integer;
  36. begin
  37.   b20:=x div 20000;
  38.   x:=x-(20000*b20);
  39.   b10:=x div 10000;
  40.   x:=x-(10000*b10);
  41.   b5:=x div 5000;
  42.   x:=x-(5000*b5);
  43.   b1:=x div 1000;
  44.   x:=x-(1000*b1);
  45.   m500:=x div 500;
  46.   x:=x-(500*m500);
  47.   m100:=x div 100;
  48.   x:=x-(100*m100);
  49.   m50:=x div 50;
  50.   x:=x-(50*m50);
  51.   m10:=x div 10;
  52.   x:=x-(10*m10);
  53.   m1:=x div 1;
  54.   x:=x-(1*m1);
  55.   writeln('| $20000 =',b20:3 ,' |');
  56.   writeln('| $10000 =',b10:3 ,' |');
  57.   writeln('| $5000  =',b5:3  ,' |');
  58.   writeln('| $1000  =',b1:3  ,' |');
  59.   writeln('| $500   =',m500:3,' |');
  60.   writeln('| $100   =',m100:3,' |');
  61.   writeln('| $50    =',m50:3 ,' |');
  62.   writeln('| $10    =',m10:3 ,' |');
  63.   writeln('| $1     =',m1:3  ,' |');
  64.  
  65.   writeln('==============================================================================');
  66.   writeln('Saldo       |Deposito   |Giro       |Num. de Giros  |Num. de Depositos|         ');
  67.   writeln('==============================================================================');
  68.   writeln(saldo:12,dep:12,gi:12,numgi:12,numdep:12);
  69. end;
  70. (*******************************************************)
  71. procedure menu;
  72. begin
  73.   writeln('=================');
  74.   writeln('Banco PrograBank ');
  75.   writeln('=================');
  76.   writeln;
  77.   writeln('1.- Deposito');
  78.   writeln('2.- Retiro o Giro');
  79.   writeln('3.- Saldo');
  80.   writeln('4.- Salir');
  81. end;
  82. (*******************************************************)
  83. (*******************Principal***************************)
  84.  
  85. begin
  86.   saldo:=100000;
  87.   numgi:=0;
  88.   numdep:=0;
  89.   menu;
  90.   repeat
  91.   writeln('Ingrese una opcion');
  92.   read(op);
  93.   case (op) of
  94.   1:begin
  95.       deposito(numdep,numgi,saldo,dep);
  96.       imprime(dep,numgi,numdep,saldo);
  97.     end;
  98.   2:begin
  99.       giro(numdep,numgi,saldo,gi);
  100.       imprime(gi,numgi,numdep,saldo);
  101.     end;
  102.   3:begin
  103.       imprime(0,numgi,numdep,saldo);
  104.     end;
  105.   4:begin
  106.       readkey;
  107.     end
  108.   else
  109.     begin
  110.       writeln('Ingrese una opcion valida');
  111.     end;
  112.   until (op=4);
  113. end.
  114.  

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

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

epayan

  • Miembro activo
  • **
  • Mensajes: 41
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.pillin-slk.blogspot.com
Re: Resolver error en Pascal (cajero automatico)
« Respuesta #1 en: Jueves 13 de Mayo de 2010, 07:41 »
0
creo que en esta parte hay un error de lógica pero no creo que sea tu problema en si

Código: Pascal
  1. # procedure deposito(var numdep,numgi,saldo:integer;dep:integer);
  2. # //realiza deposito
  3. # begin
  4. #   repeat
  5. #   write('Ingrese valor a depositar = $');
  6. #   readln(dep);
  7. #   until(gi>0);
  8.  

mañana checo  tu codigo

epayan

  • Miembro activo
  • **
  • Mensajes: 41
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.pillin-slk.blogspot.com
Re: Resolver error en Pascal (cajero automatico)
« Respuesta #2 en: Jueves 13 de Mayo de 2010, 08:08 »
0
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
  1.     program cajero;
  2.     uses crt;
  3.  
  4.     var //Globales
  5.     saldo:longint;
  6.     numgi,numdep,op,gi,dep:integer;
  7.  
  8.     (*******************************************************)
  9.     procedure giro(var numdep,numgi:integer ;var saldo:Longint;var gi:integer);
  10.     //realiza giro
  11.    begin
  12.      gi:=0;
  13.      repeat
  14.      write('Ingrese valor a girar = $');
  15.      readln(gi);
  16.      until(gi>0);
  17.      numgi:=numgi+1;
  18.      numdep:=numdep;
  19.      saldo:=saldo-gi;
  20.    end;
  21.    (*******************************************************)
  22.    procedure deposito(var numdep,numgi:integer; var saldo:longint;var dep:integer);
  23.    //realiza deposito
  24.    begin
  25.      dep:=0;
  26.      repeat
  27.      write('Ingrese valor a depositar = $');
  28.      readln(dep);
  29.      until(dep>0);
  30.      numdep:=numdep+1;
  31.      numgi:=numgi;
  32.     saldo:=saldo+dep;
  33.    end;
  34.    (*******************************************************)
  35.    procedure imprime(x,numgi,numdep:Integer;var saldo:Longint);
  36.    //imprime operacion
  37.    var
  38.      b20,b10,b5,b1,m500,m100,m50,m10,m1:integer;
  39.    begin
  40.      b20:=x div 20000;
  41.      x:=x-(20000*b20);
  42.      b10:=x div 10000;
  43.      x:=x-(10000*b10);
  44.      b5:=x div 5000;
  45.      x:=x-(5000*b5);
  46.      b1:=x div 1000;
  47.      x:=x-(1000*b1);
  48.     m500:=x div 500;
  49.      x:=x-(500*m500);
  50.      m100:=x div 100;
  51.      x:=x-(100*m100);
  52.      m50:=x div 50;
  53.      x:=x-(50*m50);
  54.      m10:=x div 10;
  55.      x:=x-(10*m10);
  56.      m1:=x div 1;
  57.      x:=x-(1*m1);
  58.      writeln('| $20000 =',b20:3 ,' |');
  59.      writeln('| $10000 =',b10:3 ,' |');
  60.      writeln('| $5000  =',b5:3  ,' |');
  61.      writeln('| $1000  =',b1:3  ,' |');
  62.      writeln('| $500   =',m500:3,' |');
  63.      writeln('| $100   =',m100:3,' |');
  64.      writeln('| $50    =',m50:3 ,' |');
  65.      writeln('| $10    =',m10:3 ,' |');
  66.      writeln('| $1     =',m1:3  ,' |');
  67.  
  68.     writeln('==============================================================================');
  69.      writeln('Saldo       |Deposito   |Giro       |Num. de Giros  |Num. de Depositos|         ');
  70.      writeln('==============================================================================');
  71.      writeln(saldo:12,dep:12,gi:12,numgi:12,numdep:12);
  72.    end;
  73.    (*******************************************************)
  74.    procedure menu;
  75.    begin
  76.     writeln('=================');
  77.      writeln('Banco PrograBank ');
  78.      writeln('=================');
  79.      writeln;
  80.      writeln('1.- Deposito');
  81.      writeln('2.- Retiro o Giro');
  82.     writeln('3.- Saldo');
  83.     writeln('4.- Salir');
  84.   end;
  85.   (*******************************************************)
  86.   (*******************Principal***************************)
  87.  
  88.   begin
  89.     clrscr;
  90.     saldo:=100000;
  91.     numgi:=0;
  92.     numdep:=0;
  93.     repeat
  94.         menu;
  95.         writeln('Ingrese una opcion');
  96.         read(op);
  97.         If Op In [1..4] then
  98.            Begin
  99.               case (op) of
  100.                  1:begin
  101.                      deposito(numdep,numgi,saldo,dep);
  102.                      imprime(dep,numgi,numdep,saldo);
  103.                    end;
  104.                  2:begin
  105.                      giro(numdep,numgi,saldo,gi);
  106.                      imprime(gi,numgi,numdep,saldo);
  107.                    end;
  108.                  3:begin
  109.                      imprime(0,numgi,numdep,saldo);
  110.                    end;
  111.                  4:begin
  112.                      Writeln('Fin del Programa...');
  113.                      readkey;
  114.                    End;
  115.                  End;{Case}
  116.            End
  117.         Else
  118.            writeln('Ingrese una opcion valida');
  119.     until (op=4);
  120.  end.
  121.  
  122.  

SubZeroHack

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Resolver error en Pascal (cajero automatico)
« Respuesta #3 en: Jueves 13 de Mayo de 2010, 16:32 »
0
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!!!