[ Foro de C ]

Problema con estructura While

15-Dec-2011 13:03
Lucas Matias Guardn
0 Respuestas

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.)