Ir ao conteúdo
  • Cadastre-se

C++ Problema com código de gerenciamento de cinema


Posts recomendados

Boa tarde, alguém pode me ajudar com duas coisas que não estou conseguindo fazer com o programa?

a primeira seria quando der todos lugares ocupados o programa avisar ao usuário

a segunda seria mostrar a taxa de ocupação do cinema.

 

segue o código

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main (void)
{
    
    int Caso_cadeira, i, j, lin, col, condi, n, lugar_cheio, lugar_vazio;
    int poltrona[3] [3];
    

    
    for(i=0 ; i<3; i++)
    {
        for(j=0 ; j<3 ; j++)
        {
            poltrona [j]=0;
        }
    }
    do
    {            
            printf("[1] - Escolher lugar\n");
            printf("[2] - Ver disposicao dos lugares\n");
            scanf("%d", &Caso_cadeira);
            
            switch(Caso_cadeira)
            {    
                case 1: //Escolher Cadeira
                    printf("Qual fila gostaria de sentar de 1 a 3 ? ");
                    scanf("%d", &lin);
                    printf("Qual coluna gostaria de sentar de 1 a 3 ? ");
                    scanf("%d",&col);
                    if (lin<3 && col<3)
                    {
                        if (poltrona [lin] [col]==0)
                        {
                            poltrona [lin] [col]=1;
                            printf("\nCADEIRA ESCOLHIDA COM SUCESSO");
                        }
                        
                    
                        else
                        {
                            printf("\nDESCULPE A CADEIRA ESCOLHIDA ESTA OCUPADA");
                        }
                    }
                    else
                    {
                        printf("\nCADEIRA INEXISTENTE");
                    }
                        
                
                    printf("-------------------------------------------------------------\n");
                    break;
                case 2: //ver caideiras
                    n=1;
                    
                    printf("0-Lugar disponivel || 1-Lugar ocupado\n\n");
                    
                            for(i=1 ; i<3; i++)
                    {
                                
                                for(j=1 ; j<3 ; j++)
                                {
                                    if(poltrona [j]==0)
                                    {
                                        printf("%d ",0);
                                    }    
                                    else
                                        printf("%d ",1);
                                }
                            
                            printf("\n");
                    }
                
                    printf("\n\n");
                    break;
                
                default:
                    Caso_cadeira=0;
                
            }
        
    }while(Caso_cadeira!=0);
    system("pause");
    return(0);
    
}

 

Link para o comentário
Compartilhar em outros sites

Fiz algumas modificações. Veja se é o resultado que quer:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int Caso_cadeira, i, j, lin, col;
    int poltrona[4][4];



    for(i=0 ; i<=3; i++)
    {
        for(j=0 ; j<=3 ; j++)
        {
            poltrona[i][j]=0;
        }
    }
    do
    {
        printf("[1] - Escolher lugar\n");
        printf("[2] - Ver disposicao dos lugares\n");
        scanf("%d", &Caso_cadeira);

        switch(Caso_cadeira)
        {
        case 1: //Escolher Cadeira
            printf("Qual fila gostaria de sentar de 1 a 3 ? ");
            scanf("%d", &lin);
            printf("Qual coluna gostaria de sentar de 1 a 3 ? ");
            scanf("%d",&col);
            if (lin<=3 && col<=3)
            {
                if (poltrona [lin] [col]==0)
                {
                    poltrona [lin] [col]=1;
                    printf("\nCADEIRA ESCOLHIDA COM SUCESSO");
                }


                else
                {
                    printf("\nDESCULPE A CADEIRA ESCOLHIDA ESTA OCUPADA");
                }
            }
            else
            {
                printf("\nCADEIRA INEXISTENTE");
            }


            printf("-------------------------------------------------------------\n");
            break;
        case 2: //ver caideiras
            //n=1;

            printf("0-Lugar disponivel || 1-Lugar ocupado\n\n");

            for(i=1 ; i<=3; i++)
            {

                for(j=1 ; j<=3 ; j++)
                {
                    if(poltrona[i][j]==0)
                    {
                        printf("%d ",0);
                    }
                    else
                        printf("%d ",1);
                }

                printf("\n");
            }

            printf("\n\n");
            break;

        default:
            Caso_cadeira=0;

        }

    }
    while(Caso_cadeira!=0);
    return(0);
}

 

Link para o comentário
Compartilhar em outros sites

Boa noite Allanxd, sim, o problema é que eu não estou conseguindo ele dizer que o cinema esta cheio quando ocupa todas cadeiras e mostrar a taxa de ocupação do cinema, tipo quando todas cadeiras form 1, o sistema dizer uma mensagem "Cinema lotado" e calcular a taxa quando for requisitada, tipo a % de pessoas em relação ao total de cadeiras

 

sei que a conta seria o total de cadeiras que contas o numero 1/ 9 cadeiras*100. mas estou com a duvida como fazer.

 

mas obrigado pela ajuda, vi que modificou algumas coisas e deixou até melhor

Link para o comentário
Compartilhar em outros sites

Você pode colocar um else if correspondente ao if (poltrona [lin] [col]==0), testando se lin e col tem o valor 1.

 

Se tem a fórmula pronta do cálculo é só passar pra linguagem (poderia passar o enunciado pra eu analisar melhor).

Edit:

Na verdade a minha ideia não vai funcionar. Então fiz uma função aqui (no meu código poltronas são char) que funcionou comigo, aí acho que dá pra adaptar ao seu código:

int verifica(char poltronas[4][4])
{
    int x, y;
    int q = 0;
    for(x = 1; x <= 3; x++)
    {
        for(y = 1; y <= 3; y++)
        {
            if(poltronas[x][y] == '1')
                q++;
        }
    }
    if(q == 9)
        return true;
    return false;
}

Como eu disse é só adaptar para o seu código.

Link para o comentário
Compartilhar em outros sites

Bom dia, Allanxd segue o enunciado para dar uma olhada, no enunciado esta uma matriz 10x20, mas depois eu vou alterar, esta com 4x4 só para deixar mais rápido para fazer a parte de final de reservas.

 

Um cinema faz o controle de reservas do filme em exibição por meio de uma matriz OCUPACAO, tendo ao todo 10 filas com 20 poltronas em cada fila. As poltronas ocupadas serão assinaladas na matriz através do valor 1 e as desocupadas através de 0.

Faça um algoritmo utilizando a linguagem C para:

• assinalar uma poltrona como ocupada, sendo fornecida sua fila e sua posição (poltrona);

• o algoritmo deve processar diversas reservas de lugar, até que seja fornecido um sinal de final de reservas;

• ao final das reservas, o programa deve verificar quantas poltronas estão livres e quantas estão ocupadas;

• imprimir o mapa de ocupação do cinema;

• verificar, quando informadas a fileira e a posição, se a poltrona está ou não ocupada;

• mostrar o percentual da taxa de ocupação.

 

vou tentar adaptar a sua ideia no código, vou ver se roda, obrigado mais uma vez

Link para o comentário
Compartilhar em outros sites

Deu certo a função que te passei? Você pode dividir seu código em várias funções, assim fica mais fácil de dar manutenção e criar coisas novas no código.

 

Quanto ao cálculo de porcentagem você mesmo deu a fórmula, só passar isso para a linguagem (com o uso de funções fica mais fácil).

Link para o comentário
Compartilhar em outros sites

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main ()
{
    int cadeira, i, j, lin, col, condi, n, total, x, y, q=0;
    int Ocupacao[11] [21], poltronas[x][y];    
    for(i=0 ; i<11; i++)
    {
        for(j=0 ; j<21 ; j++)
        {
            Ocupacao [j]=0;
        }
    }
    do
    {            
            printf("[1] - Escolher lugar\n");
            printf("[2] - Ver disposicao dos lugares\n");
            scanf("%d", &cadeira);
            
            switch(cadeira)
            {    
                case 1: 
                    printf("Qual fila gostaria de sentar de 1 a 10 ? ");
                    scanf("%d", &lin);
                    printf("Qual coluna gostaria de sentar de 1 a 20 ? ");
                    scanf("%d",&col);
                    
                    int verifica(char poltronas[4][4]);
    

    for(x = 1; x <= 3; x++){
    }
    
        for(y = 1; y <= 3; y++){
        }
        
            if(poltronas[x][y] == '1'){
                q++;
        }
    }
    if(q == 9){
    } 
}
                    if (lin<11 && col<21)
                    {
                        if (Ocupacao [lin] [col]==0)
                        {
                            Ocupacao [lin] [col]=1;
                            printf("\nCADEIRA ESCOLHIDA COM SUCESSO\n");
                        }
                        else
                        {
                            printf("\nDESCULPE A CADEIRA ESCOLHIDA ESTA OCUPADA\n");
                        }
                    }
                    else
                    {
                        printf("\nCADEIRA INEXISTENTE\n");
                    }    
                    printf("\n");
                    break;
                case 2: 
                    n=1;
                    printf("0-Lugar disponivel || 1-Lugar ocupado\n\n");
                    
                            for(i=1 ; i<11; i++)
                    {
                                for(j=1 ; j<21 ; j++)
                                {
                                    if(Ocupacao [j]==0)
                                    {
                                        printf("%d ",0);
                                    }    
                                    else
                                        printf("%d ",1);
                                }
                            printf("\n");
                    }
                    printf("\n\n");
                    break;
                default:
                    cadeira=0;
            }
    }while(cadeira!=0);
    system("pause");
    return(0);
    
}

 

ao compilar e executar esta dando erro, acho que vou ter que começar o program desde o começo, ta difícil. 

Link para o comentário
Compartilhar em outros sites

Realmente não funciona porque está errado. A lógica está boa, mas recomendo refazer o código usando funções (o código que te passei está no lugar errado, e você não adaptou para o seu código). Esse exercício não requer muito da linguagem, pode procurar alguns tutoriais na internet sobre funções.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...