Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

zalo

bilheteira cinema

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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);
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.