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.