[ Foro de Pascal ]
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.
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.)