Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
zalo

bilheteira cinema

Recommended Posts

zalo

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]

:thumbsup: 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 :)

Share this post


Link to post
Share on other sites
Strabush

Fiz isso já, é um work de fau pra entregar amanhã.

Mas fi-lo em C .

Precisas de ajuda em quê concretamente?

Share this post


Link to post
Share on other sites
zalo

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);
}

Share this post


Link to post
Share on other sites
Ziwdon

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)

Share this post


Link to post
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
Sign in to follow this  

×

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.