[ Foro de Pascal ]
begin
repeat
writeln('Aqui tienes el menu donde puedes empezar una cesta nueva, o modificar una ya existente.');
writeln;
writeln(' 1. Mostrar nombres de cestas existentes.');
writeln(' 2. Abrir cesta de compra existente.');
writeln(' 3. Comenzar cesta de compra nueva.');
writeln(' 4. Mostrar cesta actual.');
writeln(' 5. Añadir producto a la cesta.');
writeln(' 6. Eliminar producto de la cesta.');
writeln(' 7. Modificar producto de la cesta.');
writeln(' 8. Guardar cesta.');
writeln(' 9. Cerrar cesta.');
writeln(' 10. Salir del programa.');
writeln;
write(' Elija una de las opciones anteriores: ');
readln(opcion);
clrscr;
if (opcion='1') then
fichero_ver_pedidos();
if (opcion='2') then
recupera_cesta(Nfichero);
if (opcion='3') then
comenzar_cesta();
if (opcion='4') then
begin
if (num_productos>0) then
ver_cesta()
else
ver_cesta2();
clrscr;
end;
if (opcion='5') then
begin
if (mi_cesta[0].en_cesta=false) then
anadir_prod();
if (mi_cesta[0].en_cesta=true) then
begin
write('Lo siento pero no se puede modificar este pedido debido a que ya se ha realizado.');
readln;
end;
clrscr;
end;
if (opcion='6') then
begin
if (mi_cesta[0].en_cesta=false) then
begin
if (num_productos>0) then
eliminar_prod()
else
eliminar_prod2();
end;
if (mi_cesta[0].en_cesta=true) then
begin
write('Lo siento pero no se puede modificar este pedido debido a que ya se ha realizado.');
readln;
end;
clrscr;
end;
if (opcion='7') then
begin
if (mi_cesta[0].en_cesta=false) then
begin
if (num_productos>0) then
modificar_prod()
else
modificar_prod2();
end;
if (mi_cesta[0].en_cesta=true) then
begin
write('Lo siento pero no se puede modificar este pedido debido a que ya se ha realizado.');
readln;
end;
clrscr;
end;
if (opcion='8') then
guarda_cesta(mi_cesta, Nfichero);
if (opcion='9') then
calcula_pedido(mi_cesta);
num_productos:= 0;
for i:=1 to tamxcesta do
if (mi_cesta[i].en_cesta=true) then
num_productos:= num_productos+1;
until (opcion='10');
readln;
end.
Lo que he dejado aqui es el modulo principal de mi programa. Lo que quiero es que me digais si veis algo que no esta bien, o si esta todo bien ??
Porque yo he repasado las cosas, pero no veo nada mal, pero siempre que ejecuto el programa y quiero salir del programa, se supone que le doy a la opcion 10 para salir, pero no se sale. Lo que hace es que se abre la opcion 1, es decir, si le doy a la opcion 10 (se supone que se tiene que salir del programa) en vez de salirse el programa se abre la opcion 1.
Alguien sabe porque pasa eso ?
Antonio, como estas? Antes que nada yo, en mi caso, usuario un MIENTRAS y no un REPETIR, ya que puede poner la opción del MIENTRAS que se repita mientras la opción sea distinto de 10....
Segundo, me gustaría saber, la variable opcion, como la declaraste, como int o como char? Te pregunto esto porque en el código pones, por ejemplo, opción ='10'; es decir, pones comillas simples....si es char, te va a tomar el primer carácter solamente, que en este caso es el 1, te conviene declarar la variable como int.
La variable opcion la tengo como char. Pero gracias, ahora lo cambio por int.
Sí, seguramente declaraste la variable opcion como char y te toma unicamente el primer caracter de '10'. Eso lo puedes solucionar, también, declarandola como un string[2].
Saludos.
Avisa si se soluciono con la ayuda que te dimos todos.....
Gracias...
Gracias por la ayuda. Me funciona con las 2 soluciones. Gracias.
(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.)