SISTEMA AUTOMATIZADO DE INFORMACIÓN TELEFONICA ,24 HORAS

    91 398 65 34 ( preinscripción,acuse de recibo de matrícula,calificacións en selectividade ,info xeral Uned )

o programa  en módula-2 para o disfrute de quen lle saque probeito.

Viernes, 21 de Abril de 2000 14:10:14


 MODULE Butacas;
    (*  PROGR. PARA INTENTAR RESOLVER UN PROBLEMA DUN EXAME DE CONTROL DE
      BUTACAS DE 5 * 7 DUN RECINTO (LIBRES / OCUPADAS )*)
 FROM InOut IMPORT WriteLn, WriteString, WriteInt, ReadInt ,Read ,
        OpenOutput, CloseOutput, OpenInput , CloseInput;
 FROM Storage IMPORT ALLOCATE, DEALLOCATE;
 CONST
	oco = 0;
 TYPE
     Recinto = ARRAY [1..100] OF ARRAY [1..100]OF BOOLEAN ;
 VAR
	filas, columnas : INTEGER;
(*________________________________________________________________________*)

 
 PROCEDURE Tronco(fil,col: INTEGER );
 VAR
        resposta, suma ,i ,j,data: INTEGER;
 feito,seguir : BOOLEAN;
   (* versions extendidas *)
   nomeficheiro: ARRAY [1..100] OF CHAR;
        P_array : POINTER TO Recinto;
   sair: CHAR ;
(*___________________________________________________________________*)
 PROCEDURE Datos(VAR f,c: INTEGER);
 BEGIN
	WriteString(" ---------------- XESTION DE BUTACAS -------------"); WriteLn;
	WriteLn;WriteString(" Selecione o tama¤o en butacas do recinto (100 POR 100 MAX.) .");WriteLn;
	WriteString( "   _ Filas de asentos : ");ReadInt( f );WriteLn;
	WriteString( "   _ Asentos por fila : ");ReadInt( c );WriteLn;
	WriteString(" O numero de prazas escollido e ");WriteInt( f*c ,20);
 END Datos;

 (*=======================================================================*)
 BEGIN
  (*---------   POSTA A 0  ---------------*)
   NEW(P_array);
    FOR i:= 1 TO fil DO
     FOR j:= 1 TO col DO
        P_array^ [i,j]:= FALSE ;
     END;
    END;
  (*----------- E/S DE DATOS DE COMEZO -------------*)
  Datos(fil,col);  
  REPEAT
        WriteLn;WriteLn;
        WriteString(" ---------------- XESTION DE BUTACAS -------------"); WriteLn;WriteLn;
        WriteString(" Opcions do menu ( 1: Ocupaci¢n ? / 2: Asignar / 3: Libertar / 4: Sair )  ");
        WriteLn;
        WriteString("   Outras ( 5: Abrir-Gardar / 6: Abrir-Ler /7: Novo ) ");WriteLn;
        WriteString("   Escollo a ... "); ReadInt( resposta ); WriteLn;
  (* ------------ OPCIONS DE MENU ----------------- *)
  seguir:= TRUE;     (* EN CONDICION DE CONTINUAR NO PROGR. *)
  CASE resposta OF
        1:
           suma := 0;
           FOR i:= 1 TO fil DO
                     FOR j:= 1 TO col DO
                        IF P_array^ [i,j] = FALSE THEN INC ( suma , 1) END;
                     END;
           END;
           WriteLn;
           WriteString("  Quedan dispo¤ibles ");
           WriteInt(suma, 10);WriteString(" butacas ");WriteLn;        |
        2:
          feito := FALSE ; (* EN CONDIC. DE PODER CALCULAR A BUTACA LIBRE *)
          FOR i:= 1 TO fil DO
              FOR j:= 1 TO col DO
                  IF feito = FALSE THEN
                       IF  P_array^ [i,j] = FALSE THEN
                                P_array^ [i,j]:= TRUE;
                                WriteLn;
                                WriteString("  Primera butaca libre : ");
                                WriteLn;
                                WriteString("   Fila ");WriteInt( i, 10 );
                                WriteString("  , n§ col. ");WriteInt( j,10 );
                                feito := TRUE ;
				

                       END;
                   END;
              END;
           END             |
          3: WriteLn;
             WriteString("  Entre butaca a liberar : ");WriteLn;
             WriteString("  Fila = ");
             ReadInt( i );
             WriteString("  Col. = ");
             ReadInt( j );
             P_array^ [ i,j] := FALSE |
           4: seguir := FALSE |
           5:
              WriteLn;
              WriteString(" Nome do arquivo de saida : ");
              OpenOutput( nomeficheiro );
		WriteInt(fil,oco);WriteLn;
		WriteInt(col,oco);WriteLn;
               FOR i:= 1 TO fil DO
                        FOR j:= 1 TO col DO
                            WriteInt( ORD(P_array^ [i,j]),oco ) ;
				WriteLn;
                        END;
                    END;
                CloseOutput; |
             6:
               WriteLn;
               WriteString(" Ficheiro ? ");
               OpenInput ( nomeficheiro );
		 ReadInt(fil);WriteLn;
		 ReadInt(col);WriteLn;
                FOR i:= 1 TO fil DO
                        FOR j:= 1 TO col DO
			 ReadInt(data);
  			 P_array^[i,j]:= ODD(data);
			  WriteLn;
                        END;
                    END;
                CloseInput;
		WriteString(' Aberto : ');
		WriteInt(fil,0);WriteString(' POR ');
		WriteInt(col,0); |
		7:
		  Datos(fil,col);
        END;
     UNTIL seguir = FALSE
	END Tronco;
  BEGIN
	Tronco(filas, columnas);
  END Butacas.