dev_geral:pascal:pronto-a-usar:cinema
Gestão de salas de cinema
program cinema; uses crt; type espaco=record filme:string; {defini‡oes de uma variavel para ser usada nos arrays} preco:real; lugares:integer; disp:boolean; end; var op,quantsalas,quantfilmes:integer; {vari veis} sala:array[1..50] of espaco; {vai inserir em cada casa do array um valor} procedure inserir(var qts:integer); {1} var a:integer; begin repeat clrscr; textcolor(white); writeln('Insira a quantidade de salas que o cinema tˆm: (m x.50)'); readln(qts); {este procedimento serve para inserir as salas que o cinema tem.} if (qts<=0) or (qts>50) then {sem este passo feito, nÆo ser poss¡vel inserir filmes} begin textcolor(red); writeln('O m ximo de salas ‚ de 50!!'); writeln('CLIQUE ENTER'); readln; end; until (qts>0) and (qts<=50); for a:=1 to qts do begin writeln('Insira o numero de lugares da ',a,'¦ sala:'); readln(sala[a].lugares); end; end; {qts=quantidade salas} procedure inserir_filmes(var qts:integer; var qtfl:integer); {2} {qtfl=quantidade filmes} var a,b,conta:integer; marca:boolean; begin clrscr; textcolor(white); marca:=false; {este procedimento serve para inserir os filmes a estrear, o nome e o respectivo pre‡o avulso} for a:=1 to qts do begin if sala[a].lugares<>0 then begin marca:=true; end; end; if marca=true then begin repeat clrscr; textcolor(white); writeln('Quantos filmes deseja inserir?'); readln(qtfl); if (qtfl<=0) or (qtfl>qts) then begin textcolor(red); writeln('NÆo pode inserir mais do que ',qts,' filmes!'); writeln('CLIQUE ENTER'); readln; end; until (qtfl>0) and (qtfl<=qts); begin conta:=0; repeat conta:=conta+1; repeat writeln('Insira o numero da sala:'); readln(b); if (b<1) or (b>qts) then begin writeln('Sala inexistente!'); readln; end; if sala[b].filme<>'' then begin writeln('Essa sala ja tem filmes a estrear!'); readln; end; until (b>=1) and (b<=qts) and (sala[b].filme=''); writeln('Insira o filme a estrear na sala ',b); readln(sala[b].filme); writeln('Insira o respectivo pre‡o/avulso:'); readln(sala[b].preco); until conta=qtfl; end; end; if marca=false then begin writeln('Ainda nÆo existem salas!'); writeln('CLIQUE ENTER'); readln; end; end; procedure listar_lugares(qts:integer); {6} {este procedimento serve para listar uma determinada sala, mostrando logo no inicio as salas e filmes a estrear} var a,i,x,y,conta:integer; begin clrscr; textcolor(white); for a:=1 to qts do begin if sala[a].filme='' then begin sala[a].filme:='(por definir)'; end; writeln('SALA ',a,' ir estrear: ',sala[a].filme,'. Pre‡o/bilhete: ',sala[a].preco:3:2,'. Quantidade Lugares: ',sala[a].lugares); end; textcolor(white); writeln(''); writeln('Qual ‚ a sala que deseja ver?'); readln(a); for a:=1 to sala[a].lugares do begin if sala[a].disp=true then begin textcolor(red); writeln('Lugar ',a,', ocupado!'); end; if sala[a].disp=false then begin textcolor(green); writeln('Lugar ',a,', dispon¡vel!'); end; end; readln; writeln('CLIQUE ENTER'); readln; end; procedure reservar(qts,qtfl:integer); {4} {este procedimento serve para reservar um bilhete para um determinado filme, verificando se o lugar esta disponivel ou nao} var film:string; a,lug:integer; marca:boolean; begin marca:=false; clrscr; textcolor(white); for a:=1 to qts do begin if sala[a].filme<>'' then begin marca:=true; end; end; if marca=true then begin writeln('Deseja reservar bilhete para que filme?'); readln(film); for a:=1 to qts do if sala[a].filme=film then begin repeat textcolor(white); writeln('O filme ',sala[a].filme,' ir estrear na sala ',a,' e tem o custo de ',sala[a].preco:3:2,' euros por bilhete'); writeln('Qual ‚ o lugar que deseja reservar?'); readln(lug); if (lug<=0) or (lug>sala[a].lugares) then begin writeln('Esta sala apenas tem ',sala[lug].lugares,' lugares!'); writeln('CLIQUE ENTER'); readln; end; if sala[lug].disp=true then begin textcolor(red); writeln('Esse lugar j est ocupado! Por favor, escolha outro'); readln; end; until (lug>0) and (lug<=sala[a].lugares) and (sala[lug].disp=false); sala[lug].disp:=true; textcolor(green); writeln('Lugar ocupado com sucesso!'); writeln('CLIQUE ENTER'); readln; end; end; if marca=false then begin writeln('NÆo existem filmes a estrear!'); writeln('CLIQUE ENTER'); readln; end; end; procedure anular_reserva(qts,qtfl:integer); {5} var film:string; {este procedimento serve para anular uma reserva. caso o lugar esteja livre, nao anula nada} a,lug:integer; marca:boolean; begin marca:=false; clrscr; textcolor(white); for a:=1 to qts do begin if sala[a].filme<>'' then begin marca:=true; end; end; if marca=true then begin writeln(''); writeln('Deseja anular qual bilhete? Digite o respectivo filme'); readln(film); for a:=1 to qts do if sala[a].filme=film then begin repeat textcolor(white); writeln('O filme ',sala[a].filme,' ir estrear na sala ',a,' e tem o custo de ',sala[a].preco:3:2,' euros por bilhete'); writeln('Qual ‚ o lugar que deseja remover?'); readln(lug); if (lug<=0) or (lug>sala[a].lugares) then begin writeln('Esta sala apenas tem ',sala[lug].lugares,' lugares!'); writeln('CLIQUE ENTER'); readln; end; until (lug>0) or (lug<=sala[a].lugares) or (sala[lug].disp=true); if sala[lug].disp=false then begin textcolor(red); writeln('Esse lugar ainda est livre!'); readln; end; if sala[lug].disp=true then begin sala[lug].disp:=false; textcolor(green); writeln('Removido com sucesso!'); writeln('CLIQUE ENTER'); readln; end; end; end; if marca=false then begin writeln('NÆo existe nada para remover!'); writeln('CLIQUE ENTER'); readln; end; end; procedure anular_filme(qts,qtfl:integer); {3} {este procedimento serve para anular um filme que tenha saido da sala. anula automaticamente todos os lugares, deixando-os dispon¡veis} var film:string; a,b:integer; marca:boolean; begin marca:=false; {esta marca serve para ver se existem filmes. se nao existirem, nao ir pedir nada} clrscr; textcolor(white); for a:=1 to qts do begin if sala[a].filme<>'' then begin marca:=true; end; end; if marca=true then begin writeln('Deseja anular qual filme?'); readln(film); for a:=1 to qts do if sala[a].filme=film then begin sala[a].filme:=''; sala[a].preco:=0; for b:=1 to sala[a].lugares do begin sala[b].disp:=false; end; textcolor(green); writeln('Removido com sucesso!'); writeln('CLIQUE ENTER'); readln; end; end; if marca=false then begin writeln('NÆo existem filmes para remover!'); writeln('CLIQUE ENTER'); readln; end; end; begin repeat clrscr; textcolor(white); writeln('______________________________________'); writeln('| Menu - CINEMAS X |'); writeln('|____________________________________|'); writeln('| |'); writeln('| 1 - Inserir quantidade de salas |'); writeln('| 2 - Inserir filmes/pre‡os |'); {menu do programa, que aparece logo ao iniciar} writeln('| 3 - Anular filmes |'); writeln('| 4 - Reservar |'); writeln('| 5 - Anular reserva |'); writeln('| 6 - Listar sala/filmes/lugares |'); writeln('| 7 - SAIR |'); writeln('|____________________________________|'); writeln('| Op‡Æo:___ |'); writeln('|____________________________________|'); gotoxy(18,13); readln(op); gotoxy(1,1); case op of 1:begin inserir(quantsalas); {chama o procedimento inserir} end; 2:begin inserir_filmes(quantsalas,quantfilmes); end; 3:begin anular_filme(quantsalas,quantfilmes); end; 4:begin reservar(quantsalas,quantfilmes); end; 5:begin anular_reserva(quantsalas,quantfilmes); end; 6:begin listar_lugares(quantsalas); end; 7:begin clrscr; textcolor(green); writeln('Obrigado por usar este programa!'); writeln('CLIQUE ENTER'); readln; end else begin clrscr; textcolor(red); writeln('Op‡Æo inv lida!'); {caso o utilizador nao escolha uma op‡ao que esteja no menu, da mensagem de erro} textcolor(white); writeln('CLIQUE ENTER'); readln; end; end; until op=7; end.
- Tópico de origem, por sexys.
dev_geral/pascal/pronto-a-usar/cinema.txt · Última modificação em: 2018/05/14 21:37 por 127.0.0.1