[ Foro de C ]
Estimados; tengo un problema con un programita que hice para el control de unos materiales donde trabajo, y creo que tengo problema en el while principal, les dejo el codigo para que lo prueben y lo vean, me pasa que cuando uso el programa, elijo la opcion 1, cargo la cantidad de stock, vuelvo al menu principal, elijo la opcion 2, entrego los materiales (cantidad), y cuando vuelvo al menu principal y elijo cualquier opcion, ya sea la uno o las dos, no me deja entrar y solo me muestra el stock actual...porque puede ser esto?¡
Espero me puedan ayudar, desde ya muchas gracias...
PROGRAM STOCKADM (INPUT,OUTPUT);
USES CRT;
VAR
RTA,RTA1,RTA2:CHAR;
OP,OPC,CANTI,I:INTEGER;
MAT:ARRAY[1..6]OF INTEGER;
BEGIN
CLRSCR;
GOTOXY(15,12); TEXTCOLOR(1); WRITELN('BIENVENIDOS AL CONTROL DE STOCK DE ADM DE NILSO TORRE S.A.');
GOTOXY(25,14); TEXTCOLOR(15); WRITELN('PRECIONE UNA TECLA PARA CONTINUAR'); READLN();CLRSCR;
FOR I:=1 TO 6 DO
BEGIN
MAT[I]:=0
END;
RTA:='n'; RTA1:='s'; RTA2:='s';
WHILE RTA='n' DO
BEGIN
GOTOXY(30,10);TEXTCOLOR(1);
WRITELN('ELIJA UNA OPCION DEL MENé: ');
GOTOXY(15,12);
WRITELN('1-ENTRADA DE MATERIAL 2-SALIDA DE MATERIAL');
REPEAT
READLN(OP)
UNTIL (OP=1) OR (OP=2);
CLRSCR;
IF OP=1 THEN
BEGIN
WHILE RTA1='s' DO
BEGIN
GOTOXY(25,10);TEXTCOLOR(1);
WRITELN('ELIJA QUE MODELO DE ADM DESEA CARGAR: ');
GOTOXY(10,12);
WRITELN('1-ADM66 2-ADM92 3-ADM125 4-ADM150 5-ADM180 6-ADM240');
REPEAT
READLN(OPC)
UNTIL (OP>=1) AND (OP<=6);
GOTOXY(1,13);DELLINE();GOTOXY(2,14);
WRITE('INGRESE LA CANTIDAD DE MATERIAL: '); READLN(CANTI);
CASE OPC OF
1:MAT[1]:=MAT[1]+CANTI;
2:MAT[2]:=MAT[2]+CANTI;
3:MAT[3]:=MAT[3]+CANTI;
4:MAT[4]:=MAT[4]+CANTI;
5:MAT[5]:=MAT[5]+CANTI;
6:MAT[6]:=MAT[6]+CANTI;
END;
CLRSCR;GOTOXY(20,12);TEXTCOLOR(4);
WRITELN('DESEA HACER LA ENTRADA DE MATERIAL DE OTRO ADM?¨');
READLN(RTA1);
CLRSCR;
END;
END
ELSE BEGIN
IF OP=2 THEN
BEGIN
WHILE RTA2='s' DO
BEGIN
GOTOXY(25,10);TEXTCOLOR(1);
WRITELN('ELIJA QUE MODELO DE ADM DESEA ENTREGAR: ');
GOTOXY(10,12);
WRITELN('1-ADM66 2-ADM92 3-ADM125 4-ADM150 5-ADM180 6-ADM240 0-SALIR');
REPEAT
READLN(OPC)
UNTIL (OP>=0) AND (OP<=6);
GOTOXY(1,13);DELLINE();GOTOXY(2,14);
WRITE('INGRESE LA CANTIDAD DE MATERIAL: '); READLN(CANTI);
CASE OPC OF
1:MAT[1]:=MAT[1]-CANTI;
2:MAT[2]:=MAT[2]-CANTI;
3:MAT[3]:=MAT[3]-CANTI;
4:MAT[4]:=MAT[4]-CANTI;
5:MAT[5]:=MAT[5]-CANTI;
6:MAT[6]:=MAT[6]-CANTI;
END;
CLRSCR;CLRSCR;GOTOXY(20,12);TEXTCOLOR(4);
WRITELN('DESEA ENTREGAR MATERIAL DE OTRO ADM?¨');
READLN(RTA2);
GOTOXY(1,13);DELLINE();
CLRSCR;
END;
END;
GOTOXY(25,8);TEXTCOLOR(15);
WRITELN('STOCK ACTUAL: ');
WRITELN(' ADM66 ADM92 ADM125 ADM150 ADM180 ADM240 ');
WRITELN(MAT[1]:3, MAT[2]:8, MAT[3]:8, MAT[4]:8, MAT[5]:8, MAT[6]:8);
CLRSCR;
END;
GOTOXY(30,8);TEXTCOLOR(15);
WRITELN('LISTA DE STOCK ACTUALIZADA: ');
GOTOXY(20,10);
WRITELN(' ADM66 ADM92 ADM125 ADM150 ADM180 ADM240 ');
GOTOXY(21,11);
WRITELN(MAT[1]:3, MAT[2]:7, MAT[3]:8, MAT[4]:7, MAT[5]:8, MAT[6]:8);
GOTOXY(22,13);TEXTCOLOR(4);
WRITELN('DESEA SALIR DEL PROGRAMA DE STOCK DE ADMïS?¨');
READLN(RTA);
CLRSCR;
END;
END.
(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.)