Jump to content

bilheteira cinema


zalo
 Share

Recommended Posts

Boa noite a todos, queria uma ajuda para desenvolver um sistema de compra de bilhetes de teatro. Deve-se

definir uma sala com F filas e L lugares em cada fila. Desenhar a sala

vazia e antes de pedir a opção, pede a Fila e o Lugar, e deverá ter a

opção de Saída.

a) Opção Compra: Redesenha a sala com a indicação que o bilhete

do lugar foi comprado. Não aceita lugares inexistentes. Antes da

opção de compra indica o estado do lugar (livre ou com bilhete

comprado) [6 valores]

👍 Opção Reserva: Possibilidade de escrever o nome a quem está

reservado ou efectivar a compra. Não deixar comprar um bilhete de

um lugar já comprado [6 valores. Questão Avançada]

c) Libertar o lugar reservado ou comprado.

cumps 🙂

Link to comment
Share on other sites

ja tenho um codigo feito mas nao consigo fazer reserva com nomes e quando estou a escolher para comprar ou reservar so consigo escolher a linha nao consigo escolher coluna eu mostro o codigo :

#include <stdio.h>
#define DIM 3

typedef struct cadeira{
int posicao;
char situacao;
}cadeira;

int main(void)
{
cadeira ***mat1, ***mat2;
int tamanhodalinha, tamanhodacoluna, i,j, posicao_cadeira=1, opcao, _posicao_cadeira, cadeira_vendida=0, cadeira_reservada=0, opcao1;
printf("\n\n Sistema On-line compras de bilhetes para entrada no teatro\n\n\n\n");
printf("QUAL O NUMERO DE LINHAS)");
scanf("%d",&tamanhodalinha);
printf("\nQUAL O NUMERO DE COLUNAS:");
scanf("%d",&tamanhodacoluna);

//Alocaar Matrizes
                    
mat1 = (cadeira ***)malloc(sizeof(int)*tamanhodacoluna);
mat2 = (cadeira ***)malloc(sizeof(int)*tamanhodacoluna);
for(i = 0; i < tamanhodalinha; i++)
{
mat1[i] = (cadeira **)malloc(sizeof(int)*tamanhodalinha);
mat2[i] = (cadeira **)malloc(sizeof(int)*tamanhodalinha);
}

for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
mat1[i][j] = (cadeira *) malloc(sizeof(cadeira));
mat2[i][j] = (cadeira *) malloc(sizeof(cadeira));
}
}
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
mat1[i][j]->posicao = posicao_cadeira;
mat1[i][j]->situacao = 'L';
posicao_cadeira++;
}
}
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
mat2[i][j]->posicao = posicao_cadeira;
mat2[i][j]->situacao = 'L';
posicao_cadeira++;
}
}
system("clear");
do{
printf(" Comprar/Reservar cadeira -- 1 --\n");
printf(" Cancelar Reservas -- 2 -- \n");
printf(" Listar cadeiras Vendidas -- 3 --\n");
printf(" Listar cadeiras Reservadas -- 4 --\n");
printf(" Listar Todas as cadeiras -- 5 --\n");
printf(" Mostrar como estao as Vendas e Reservas -- 6 -- \n");
printf(" Sair do Sistema EsPeCsHoW... -- 0 --\n");
scanf("%d",&opcao);

switch(opcao)
{
case 1:
{

for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
printf("%d ------------> ",mat1[i][j]->posicao);
printf("%c\n",mat1[i][j]->situacao);
}
}
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
printf("%d ------------> ",mat2[i][j]->posicao);
printf("%c\n",mat2[i][j]->situacao);
}
}
printf("\n\n\334\334 Livre \334\334 \334\334 Vendida \334\334 \334\334 Reservada \334\334\n\n\n");
printf("-- 1-- Comprar --2-- Reservar --0-- Para retornar ao menu principal\n");
scanf("%d",&opcao1);
if(opcao1 ==1)
{
printf("cadeira: ");
scanf("%d", & _posicao_cadeira);
cadeira_vendida++;
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if(mat1[i][j]->posicao == _posicao_cadeira)
{
mat1[i][j]->situacao = 'V';
}
if(mat2[i][j]->posicao == _posicao_cadeira)
{
mat2[i][j]->situacao = 'V';
}
}
}
cadeira_vendida+1;
}
if(opcao1 ==2)
{
printf("cadeira: ");
scanf("%d", & _posicao_cadeira);
cadeira_reservada++;
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if(mat1[i][j]->posicao == _posicao_cadeira)
{
mat1[i][j]->situacao = 'R';
}
if(mat2[i][j]->posicao == _posicao_cadeira)
{
mat2[i][j]->situacao = 'R';
}
}
}
cadeira_reservada+1;
}
system("clear");
break;
}
case 2:
{
system("clear");
printf("\t\tRESERVAS CANCELADAS\n\n ");
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if(mat1[i][j]->situacao == 'R')
{
printf("=>cadeira %d\n",mat1[i][j]->posicao);
}
}
}
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if(mat2[i][j]->situacao == 'R')
{
printf("=>cadeira %d\n",mat2[i][j]->posicao);
}
}
}
printf("cadeira: ");
scanf("%d", & _posicao_cadeira);
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if((mat1[i][j]->posicao == _posicao_cadeira) && (mat1[i][j]->situacao == 'R'))
{
mat1[i][j]->situacao = 'L';
}
if((mat2[i][j]->posicao == _posicao_cadeira) && (mat2[i][j]->situacao == 'R'))
{
mat2[i][j]->situacao = 'L';
}
}
}
break;
}
case 3:
{
system("clear");
printf("\t\tLISTA DE CADEIRAS VENDIDAS\n\n ");
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if(mat1[i][j]->situacao == 'V')
{

printf("=>cadeira %d\n",mat1[i][j]->posicao);
}
}
}
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if(mat2[i][j]->situacao == 'V')
{
printf("=>cadeira %d\n",mat2[i][j]->posicao);
}
}
}
break;
}
case 4:
{
system("clear");
printf("\t\tLISTA DE CADEIRAS RESERVADAS\n\n ");
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if(mat1[i][j]->situacao == 'R')
{
printf("=>cadeira %d\n",mat1[i][j]->posicao);
}
}
}
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
if(mat2[i][j]->situacao == 'R')
{
printf("=>cadeira %d\n",mat2[i][j]->posicao);
}
}
}
break;
}
case 5:
{
system("clear");
printf("cadeira Situacao\n");
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
printf("%d \333\333\333\333\333\333\333\333\333\333\333\333\333\333> ",mat1[i][j]->posicao);
printf("%c\n",mat1[i][j]->situacao);
}
}
for(i = 0; i < tamanhodalinha; i++)
{
for(j = 0; j < tamanhodacoluna; j++)
{
printf("%d \333\333\333\333\333\333\333\333\333\333\333\333\333\333> ",mat2[i][j]->posicao);
printf("%c\n",mat2[i][j]->situacao);
}
}
printf("\n\n\334\334 Livre \334\334 \334\334 Vendida \334\334 \334\334 Reservada \334\334\n\n\n");
break;
}
case 6:
{
system("clear");
printf("\t\tSITUACAO ACTUAL NO INTERIOR DO TEATRO\n\n ");
printf("\n=>cadeiras Vendidas %d\n", cadeira_vendida);
opcao==2;
{
}
printf("=>cadeiras Reservadas %d\n", cadeira_reservada);
break;
}
}
}while(opcao !=0);

return(0);
}
Link to comment
Share on other sites

zalo, antes de mais vê este Link.

Agora, assim numa olhadela muito rápida:

if(opcao1 ==2)
{
  printf("cadeira: ");
  scanf("%d", & _posicao_cadeira);
  cadeira_reservada++;
  for(i = 0; i < tamanhodalinha; i++)
  {
    for(j = 0; j < tamanhodacoluna; j++)
    {
      if(mat1[j]->posicao == _posicao_cadeira)
     {
        mat1[j]->situacao = 'R';
     }
     if(mat2[j]->posicao == _posicao_cadeira)
     {
       mat2[j]->situacao = 'R';
     }
    } 
  }
  cadeira_reservada+1;
}

- Porque fazes "cadeira_reservada++;" no início do código, e "cadeira_reservada+1;" no fim?

- Antes de reservares uma cadeira, não deverias ver se esta já se encontra ocupada?

- Parece-me que o teu problema está no ciclo "For". A melhor solução, parece-me a mim, seria usares um array de duas dimensões, uma para a linha e outra para a coluna. Depois bastava usares apenas um "If" para verificares se a posição "[i,j]", ou seja "[linha,coluna]", do array se encontra, ou não, ocupada e fazeres a respectiva reserva.

Cumps

"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.