Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Un teatro venderá entradas para la obra “Romeo y Julieta”, que tendrá lugar en su única sala con 30
- //filas y 50 butacas por fila.
- //El teatro dispone una estructura donde para cada fila (1..30) almacena el costo de la entrada. Además
- //debe manejar otra estructura que represente la sala, de forma de saber que butaca está ocupada o
- //disponible y el DNI de la persona que la reservó (en caso que esté ocupada).
- //Se pide:
- //a) Leer desde teclado la información de las personas desean comprar una entrada. A cada una se
- //solicita: su DNI, el numero de fila (1.30) y el numero de butaca que quiere (1..50). La lectura
- //finaliza cuando llega la persona con DNI 0. A cada persona se le debe informar si la localidad
- //solicitada está libre o no, y en caso de estar libre debe ocuparla y almacenar el DNI de la
- //persona.
- //Luego de realizar el punto a) calcular e informar
- //b) El número de la fila con menos espectadores.
- //c) El monto total recaudado por el teatro.
- //d) El DNI del espectador más adulto (se considera la persona más adulta aquella que tenga
- //menor número de DNI).
- program PEPS.Ej4
- type
- filas = 1..30;
- columnas = 1..50;
- matriz = array [filas,columnas] of integer;
- vector = array [filas] of integer;
- personas = record
- dni:integer;
- f:filas;
- c:columnas;
- end;
- var m:matriz; p:personas; v:vector;
- procedure leer (var p:personas )
- begin
- with personas do begon
- read(dni);
- read(f);
- read(c);
- end;
- end;
- procedure inicializarM (var m:matriz ) /////////////////// INICIALIZAR LA MATRIZ CON -1 ///////////////////
- var i,j:integer;
- begin
- for i:= 1 to 30 do
- for i:= 1 to 50 do
- v[i,j]:= 0;
- end;
- function chequearB (m:matriz, p:persona): boolean;
- begin
- if (m[f,c] = 0 ) then
- chequearB:= true;
- else chequearB:= false;
- end;
- procedure cargarM ( var m:matriz; p:persona )
- begin
- m[p.f,p.c]:= p.dni;
- end;
- procedure minimo (v:vector)
- var i,min, minF:integer;
- begin
- min:= 9999999
- for i:= 1 to 50 do begin
- if ( v[i] < min ) then
- min:= v[i];
- minF:= i;
- end;
- write ('La fila con menos espectadores, es la fila: ',minF);
- end;
- procedure incisoB (m:matriz; var v:vector)
- var i,j,k:integer
- begin
- for i:=1 to 30 do
- cont:=0;
- for j:= 1 to 50 do begin
- if ( v[j] <> 0 ) then
- cont:=cont +1;
- v[j]:= cont;
- end;
- minimo(v);
- procedure incisoC ( m:matriz )
- var i,j:integer;
- begin
- for i:=1 to 30 do begin
- for j:= 1 to 50 do
- if ( m[i,j] <> 0 ) then
- cont:= cont + 1;
- end;
- write ('El total recaudado es de: ', cont*precioDeLaEntrada); // en ningun momento se especifica el precio de la entrada.
- end;
- procedure incisoD (m:matriz)
- var i,j,min:integer;
- begin
- min:=99999999;
- for i:=1 to 30 do begin
- for j:= 1 to 50 do begin
- if (p.dni <> 0) then
- if (p.dni < min) then
- min:= p.dni;
- end;
- write ('El espectador mas adulto es el dni: ', min);
- end;
- procedure procesar ( p:persona; m:matriz )
- begin
- leer(p);
- while ( p.dni <> 0 ) do begin
- if (chequear(m,p)) then begin
- cargarM(m,p);
- end;
- leer(p);
- end;
- end;
- begin
- inicializarM(m);
- procesar(p,m);
- incisoB();
- incisoC();
- incisoD();
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement