program estacionamento;

type vagas = record
            placa : string;
            chegada_min : integer;
            chegada_hr : integer;
            ocupado : boolean;
        end;

type vetor = array [0..11] of vagas;

var comando, disponiveis : integer;
var v : vetor;

procedure menu ();
begin
    writeln('Estacionamento do Chaves');
    writeln('[1] Entrada de veículo ');
    writeln('[2] Saída de veículo ');
    writeln('[3] Listagem de veículos ');
    writeln('[4] Sair');
end;

procedure inicializar (var disponiveis : integer; var v : vetor);
var i : integer;
begin  
    disponiveis := 10;
    for i := 1 to 10 do
        v[i].ocupado := false;
end;

procedure entrada (var v : vetor; var disponiveis : integer);
var i : integer;
begin
    if disponiveis = 0 then
        writeln('Estacionamento lotado')
    else    
    begin
        i := 1;
        while v[i].ocupado do
            i := i + 1;
        v[i].ocupado := true;
        writeln('Qual o horário de chegada?');
        readln(v[i].chegada_hr, v[i].chegada_min);
        writeln('Qual a placa?');
        read(v[i].placa);
        disponiveis := disponiveis - 1;
        writeln('Vaga: ', i, ' preenchida com sucesso!');
        writeln('Vagas disponíveis: ', disponiveis);
    end;
end;

procedure listagem (var v : vetor ; disponiveis : integer);
var i : integer;
begin
    writeln('Nr. vaga   Placa   Entrada');
    writeln('--------------------------');
    for i := 1 to 10 do 
        if v[i].ocupado then   
            writeln(i, '    ', v[i].placa, '    ', v[i].chegada_hr:02, ':', v[i].chegada_min:02);
    writeln('--------------------------');
    writeln('Vagas disponiveis: ', disponiveis);
end;

(*programa principal*)

begin
    inicializar (disponiveis, v);

    repeat  
        menu();
        read(comando);
        if comando = 1 then
            entrada(v, disponiveis)
        // else if comando = 2 then
        //     saida()
        else if comando = 3 then
            listagem(v, disponiveis);
    until comando = 4;
end.