[ Foro de Pascal ]

Un error grave

24-Jan-2017 03:48
Invitado (Andres franco)
1 Respuestas

Buenas, mi nombre es andres, primer semestre en informática, el día de hoy elimine una función que estaba demás en el código que cree, pero por alguna razón, empezó a dar un error, posteriormente me percate que había eliminado por accidente una función de tipo repeat until, y aunque trate de repararlo, no fui capaz de hacer que el programa funcionase y desafortunadamente, había cerrado el programa así que no tengo forma de recuperarme del problema amenos que logre volver en mis pasos o rehacer el programa, alguien podría ayudarme a ubicar los problemas con este programa?

Program Control_de_sacos_en_camiones;

Uses crt;

var
R,ER,PDC,P,N,PS,CC,SC,CA,SL,ST:integer;
UI:string;

begin
    R:=0;
    ER:=0;
    SL:=0;
    CA:=0;
    CC:=0;
    N:=0;
    PS:=0;
    P:=0;
    SC:=0;
    PDC:=0;
    writeln;
    writeln('Bienvenido');
    writeln('Por favor lea atentamente antes de continuar');
    writeln;
    writeln;
    writeln;
    writeln('este programa a sido creado para llevar seguimiento a la carga de un camion respecto a una serie de sacos');
    writeln;
    writeln;
    writeln;
    writeln('por favor sepa que este programa esta limitado a:');
    writeln('1.aceptar unicamente camiones con capacidad de carga de entre 18000kg y 28000kg');
    writeln('2.aceptar unicamente sacos que poseen un peso de entre 3000kg y 9000kg');
    writeln('3.aceptar unicamente 20 camiones');
    Repeat
          writeln;
          writeln;
          writeln('ingrese el numero 1 para iniciar el programa');
          writeln('ingrese el numero 2 para cerrarlo');
          readln(UI);
          clrscr;
          val(UI,ST,ER);
          If (ER<>0) then
             begin
             clrscr;
             writeln;
             writeln('se introdujo algo distinto a un numero entero, intente nuevamente');
             writeln;
             writeln('presione cualquier tecla para continuar');
             readkey;
             clrscr;
             end
          else
              if (ST<1) or (ST>2) then
                 begin
                 writeln;
                 writeln('solo se permite introducir el 1 o el 2');
                 writeln;
                 writeln('presione cualquier tecla para continuar');
                 readkey;
                 clrscr;
                 end
              else
                  if (ST=1) then
                     Begin
                     repeat
                           P:=P+1;
                                  repeat
                                        clrscr;
                                        writeln;
                                        writeln('por favor indique la capacidad del camion');
                                        readln(UI);
                                        val(UI,CC,ER);
                                        if (ER<>0) then
                                           begin
                                           clrscr;
                                           writeln;
                                           writeln('se introdujo algo distinto a un numero entero, intente nuevamente');
                                           writeln;
                                           writeln('presione una tecla para continuar');
                                           readkey;
                                           clrscr;
                                           end
                                        else
                                            clrscr;
                                  Until ER=0;
                                  if (CC<18000) or (CC>28000) then
                                     begin
                                     clrscr;
                                     writeln;
                                     writeln('el camion esta fuera de los limites permitidos');
                                     writeln;
                                     writeln('la capacidad permitida es entre 18000 y 28000 kg');
                                     writeln;
                                     writeln('presione cualquier tecla para continuar');
                                     P:=0
                                     end
                                  else
                                      repeat
                                            SC:=SC+1;
                                            N:=0;
                                            repeat
                                                  writeln;
                                                  writeln('por favor indique el peso del saco');
                                                  readln(UI);
                                                  val(UI,PS,ER);
                                                  if (ER<>0) then
                                                     begin
                                                     clrscr;
                                                     writeln;
                                                     writeln('se introdujo algo distinto a un numero entero, intente nuevamente');
                                                     writeln;
                                                     writeln('presione una tecla para continuar');
                                                     readkey;
                                                     clrscr;
                                                     end
                                                  else
                                                      clrscr;
                                            until ER=0;
                                            if (PS<3000) or (PS>9000) then
                                               begin
                                               writeln;
                                               writeln('el saco esta fuera de los limites permitidos');
                                               writeln;
                                               writeln('La capacidad permitida es entre 3000 y 9000 kg');
                                               SC:=SC-1
                                               end
                                            else
                                            begin
                                            PDC:=PDC+PS;
                                            if (PDC>CC) then
                                               begin
                                               writeln;
                                               writeln('despache el camion');
                                               writeln;
                                               writeln('ponga el saco sobrante en el siguiente camion');
                                               writeln;
                                               writeln('presione cualquier tecla para continuar');
                                               readkey;
                                               N:=1;
                                               SC:=0;
                                               CA:=CA+P;
                                               PDC:=0;
                                               clrscr
                                               end;
                                               if PDC=0 then
                                                  begin
                                                  SC:=1;
                                                  PDC:=PS
                                                  end
                                               else
                                                  begin
                                                  SC:=SC+SL;
                                                  writeln;
                                                  writeln('introduzca el saco y pase al siguiente');
                                                  writeln;
                                                  writeln('peso dentro del camion');
                                                  writeln(PS);
                                                  writeln;
                                                  writeln('numero de camiones atendidos:');
                                                  writeln(CA);
                                                  writeln;
                                                  writeln('Sacos dentro del camion:');
                                                  writeln(SC);
                                                  writeln
                                                  end;
                                                  until(N=1)
                     R:=1;
                     until(P=20);
                     end
                  else
                      R:=1
    until(R=1)
end.


01-Feb-2017 23:25
Luis Torres (+18)

Si estás comenzando lo mejor es escribir el programa con el mínimo de líneas posibles para que funcione bien con la entrada de datos correctos, es decir, dejar la validación de los datos (repeat-until) para un paso posterior, de esa forma habrá menos confusión y los errores serán más fácil de solucionar.
Al correr el programa pone un error: 113 Error in Statement, si mal no recuerdo. Esto es así porque se te olvidó colocar un "End", el cual debe ir donde te indico a continuación (revisa en las últimas líneas del programa):
    end;
    {  Aquí debe ir un End;  }
    until(N=1)

Espero haberte orientado.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)