none
Preciso de ajuda em um exercicio de C# RRS feed

  • Pergunta

  • Precisamos criar um teatro, onde utilizaremos os conceitos de uma matriz em C#. Esta matriz, deverá ter, no máximo, 150 lugares.

    O programa deverá reservar uma poltrona, cobrando para isso do usuário 40% do valor total do ingresso, que deverá ser informado na tela inicial do programa.

    Quando ocupada uma poltrona, o usuário poderá pagar 60% ou 100% do valor total (caso esteja ou não reservada anteriormente). No caso de desmarcação de reserva, deverá ser devolvido 50% do valor da reserva (portanto, 20% do valor total do ingresso).

    O programa poderá ocupar, reservar, liberar poltronas.
    Um espetáculo somente poderá acontecer se a arrecadação total for maior ou igual a 51% do valor total do teatro. 

    Quando o teatro for fechado, pede-se para que se informe:
    Total de Lugares reservados: XX
    Valor total das reservas: R$00,00
    Total de Lugares Ocupados: YY
    Valor total de Ocupantes: R$00,00
    Total de Lugares Livres: ZZ

    Mínimo para realização do Evento: R$999,99. Valor Total Arrecadado: R$989,00
    Se o valor arrecadado for MAIOR que 51% do mínimo para realização, deverá ACONTECER o espetáculo, caso contrário, mostrar quantos locais ainda precisariam ser ocupados, da seguinte forma: Precisaríamos de 10 lugares Ocupados ou 30 lugares reservados para que o espetáculo pudesse ocorrer.

    O visitante deverá ter o “mapa” de cadeiras a sua disposição.

    O visitante irá escolher sua posição informando fileira e cadeira desejada.

    EXEMPLO DE EXECUÇÃO
    PREÇO DO INGRESSO: R$100,00

    ***** ***** ****** Mapa do Teatro ***** ***** *****

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    ***** ***** ****** Mapa do Teatro ***** ***** *****

    O que você deseja fazer?
    [0] - Finalizar o programa
    [1] - Abrir Espetáculo
    [2] - Reservar uma poltrona
    [3] - Liberar poltrona reservada
    [4] - Vender poltrona
    [7] - Finalizar vendas
    [9] - Parciais do Espetáculo

    Resumo das Operações:
    0 - Finaliza o programa e retorna para o sistema operacional.
    1 - Libera a sala do teatro, para que o programa possa ser executado outras vezes, para outros espetáculos (Zera todas as variáveis).
    2 - Reservar poltrona (Cobrar 40% do valor do ingresso)
    3 - Liberar poltrona reservada (Devolve 20% do valor do ingresso)
    4 - Vender poltrona (Recebe valor integral do ingresso - 100%)
    7 - Finalizar vendas (listar todos os resultados)
    9 - Parciais (saber quanto esta pago em cada situação. Reservas, vendas, etc.) Pode ser solicitado a qualquer momento.

    terça-feira, 12 de março de 2019 13:35

Todas as Respostas

  • Olá, Valéria! Para começarmos, sempre haverá 150 lugares, os quais poderão estar todos ocupados ou não, correto?

    “First do it, then do it right, then do it better.” - Addy Osmani

    terça-feira, 12 de março de 2019 13:51
  • Sim, isso mesmo. Correto !
    terça-feira, 12 de março de 2019 13:54
  • OK! E qual é a sua dúvida, especificamente? Alguma parte do seu código está com problemas de compilação? Ou ainda não conseguiu desenvolver a lógica de funcionamento da aplicação? Diz aí para nós! :D


    “First do it, then do it right, then do it better.” - Addy Osmani

    terça-feira, 12 de março de 2019 14:55
  • Olá, sou o irmão da Valeria255 ! Ela teve problemas ao fazer o login e não está conseguindo entrar.

    Ela disse que ainda não conseguiu desenvolver a lógica de funcionamento, ela começou o curso recentemente e está um pouco perdida!

    O que ela conseguiu fazer, foi exibir o mapa dos acentos com esse código: 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Teatros
    {
    class Program
    {
    static void Main(string[] args)
    {
    char[,] teatro = new char[10, 15];
    int linha, coluna = 0;

    for (linha = 0; linha < 10; linha++)
    {
    for (coluna = 0; coluna < 15; coluna++)
    {
    teatro[linha, coluna] = 'L';
    }
    }

    Console.WriteLine();
    Console.WriteLine("* * * EXIBINDO O TEATRO * * *");
    Console.WriteLine("L - POSIÇÕES LIVRES");
    Console.WriteLine("R - POSIÇÕES RESERVADAS");
    Console.WriteLine("O - POSIÇÕES OCUPADAS (NÃO DISPONÍVEIS)");
    Console.WriteLine();

    for (linha = 0; linha < 10; linha++)
    {
    for (coluna = 0; coluna < 15; coluna++)
    {
    Console.Write(' '.ToString()+teatro[linha,coluna].ToString() + ' '.ToString());
    }
    Console.WriteLine();
    }

    Console.WriteLine();
    Console.WriteLine("* * * EXIBINDO O TEATRO * * *");
    Console.WriteLine();

    Console.ReadKey();
    }
    }

    }

    terça-feira, 12 de março de 2019 19:17
  • Isso é tudo o que ela tem, e conseguiu desenvolver !

    Obrigado por estar ajudando ela! Ela é grata por isso :D

    terça-feira, 12 de março de 2019 19:21
  • Sem problemas! Estamos aqui para ajudar!!

    Bem, para dar uma ajuda fiz a implementação da funcionalidade de encerrar o sistema! Observe que eu só coloquei um loop do tipo WHILE para garantir que nossa aplicação continuará sendo executada até que o número 7 seja digitado (e encerre a aplicação)

    static void MostrarAcoesDisponiveis()
            {
                Console.WriteLine();
                Console.WriteLine("Escolha uma das opções e tecle ENTER:");
                Console.WriteLine("[1] - Abrir Espetáculo");
                Console.WriteLine("[2] - Reservar uma Poltrona");
                Console.WriteLine("[3] - Liberar uma Poltrona Reservada");
                Console.WriteLine("[4] - Vender Poltrona");
                Console.WriteLine("[7] - Finalizar Vendas");
                Console.WriteLine("[9] - Parciais do Espetáculo");
                Console.WriteLine();
            }
    
            static void Main(string[] args)
            {
                // Variável para iniciar o loop WHILE
                int continuar = 1;
    
                while(continuar != 7)
                {
                    char[,] teatro = new char[10, 15];
                    int linha, coluna = 0;
    
                    for (linha = 0; linha < 10; linha++)
                    {
                        for (coluna = 0; coluna < 15; coluna++)
                        {
                            teatro[linha, coluna] = 'L';
                        }
                    }
    
                    Console.WriteLine("* * * INFORMATIVOS * * *");
                    Console.WriteLine("L - POSIÇÕES LIVRES");
                    Console.WriteLine("R - POSIÇÕES RESERVADAS");
                    Console.WriteLine("O - POSIÇÕES OCUPADAS (NÃO DISPONÍVEIS)");
                    Console.WriteLine("* * * * * * * * * * * * *");
                    Console.WriteLine();
    
                    Console.WriteLine("* * * EXIBINDO O TEATRO * * *");
    
                    for (linha = 0; linha < 10; linha++)
                    {
                        for (coluna = 0; coluna < 15; coluna++)
                        {
                            Console.Write(' '.ToString() + teatro[linha, coluna].ToString() + ' '.ToString());
                        }
    
                        Console.WriteLine();
                    }
    
                    Console.WriteLine();
                    Console.WriteLine("* * * EXIBINDO O TEATRO * * *");
                    Console.WriteLine();
    
                    // Exibe o menu de opções
                    MostrarAcoesDisponiveis();
                    
                    // Recebe o que o usuário digitou
                    int.TryParse(Console.ReadLine(), out continuar);
                }
    
            }


    “First do it, then do it right, then do it better.” - Addy Osmani


    terça-feira, 12 de março de 2019 22:51
  • Hm verdade, que bacana!


    terça-feira, 12 de março de 2019 23:34
  • Amigo ,continuando com o raciocínio, como ela faria para reservar, liberar ou vender uma poltrona?

    terça-feira, 12 de março de 2019 23:38
  • Fiz uma implementação bem simples para dar uma noção de como fazer! Já está fazendo reservas e fazendo alguns cálculos, porém precisa de mais acertos (experimente reservar a mesma poltrona duas vezes e imprima as parciais)

    static void MostrarAcoesDisponiveis()
            {
                Console.WriteLine();
                Console.WriteLine("Escolha uma das opções e tecle ENTER:");
                Console.WriteLine("[1] - Abrir Espetáculo");
                Console.WriteLine("[2] - Reservar uma Poltrona");
                Console.WriteLine("[3] - Liberar uma Poltrona Reservada");
                Console.WriteLine("[4] - Vender Poltrona");
                Console.WriteLine("[7] - Finalizar Vendas");
                Console.WriteLine("[9] - Parciais do Espetáculo");
                Console.WriteLine();
            }
    
            static void Main(string[] args)
            {
                int continuar = 1;
                double valorIngresso = 100.00;
                double arrecadacaoReservas = 0.00;
                double arrecadacaoOcupados = 0.00;
                int totalLugaresLivres = 150;
                int totalLugaresReservados = 0;
                int totalVagasOcupadas = 0;
    
    
    
                char[,] teatro = new char[10, 15];
                char[] marcacaoLinhas = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
                string[] marcacaoColunas = {" ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14" };
                int linha, coluna = 0;
    
                // Preenche o teatro
                for (linha = 0; linha < 10; linha++)
                {
                    for (coluna = 0; coluna < 15; coluna++)
                    {
                        teatro[linha, coluna] = 'L';
                    }
                }
    
                while (continuar != 7)
                {
    
                    Console.WriteLine("* * * INFORMATIVOS * * *");
                    Console.WriteLine("VALOR DO INGRESSO: R$ " + valorIngresso);
                    Console.WriteLine("L - POSIÇÕES LIVRES");
                    Console.WriteLine("R - POSIÇÕES RESERVADAS");
                    Console.WriteLine("O - POSIÇÕES OCUPADAS (NÃO DISPONÍVEIS)");
                    Console.WriteLine("* * * * * * * * * * * * *");
                    Console.WriteLine();
    
                    Console.WriteLine("* * * EXIBINDO O TEATRO * * *");
                    Console.WriteLine();
    
                    // Imprime a numeração de marcação das colunas
                    for (coluna = 0; coluna <= 15; coluna++)
                    {
                        Console.Write(marcacaoColunas[coluna] + "  ");
                    }
                    Console.WriteLine();
    
                    // Imprime o teatro
                    for (linha = 0; linha < 10; linha++)
                    {
                        // Imprime a numeração de marcação das linhas
                        Console.Write(marcacaoLinhas[linha].ToString() + " ");
    
                        for (coluna = 0; coluna < 15; coluna++)
                        {
                            Console.Write(' '.ToString() + teatro[linha, coluna].ToString() + ' '.ToString());
                        }
    
                        Console.WriteLine();
                    }
    
                    Console.WriteLine();
                    Console.WriteLine("* * * EXIBINDO O TEATRO * * *");
                    Console.WriteLine();
    
                    MostrarAcoesDisponiveis();
    
                    int.TryParse(Console.ReadLine(), out continuar);
    
                    // Bloco de operações
                    // 2 - reservar poltrona
                    // 3 - liberar poltrona
                    // 4 - vender poltrona
                    // 7 - encerrar vendas
                    // 9 - parciais
    
                    if (continuar == 2)
                    {
                        // Imprime mensagem
                        Console.WriteLine();
                        Console.WriteLine("Reservar uma Poltrona: (linhas de 0 a 9 e colunas de 0 a 14)");
                        Console.WriteLine();
    
                        int colunaSelecionada = 0;
                        int linhaSelecionada = 0;
    
                        Console.Write("Digite o número da linha: ");
    
                        // Se der para converter em inteiro, continua
                        // se não for possível, imprime mensagem de erro e continua
                        if (int.TryParse(Console.ReadLine(), out linhaSelecionada) && linhaSelecionada >= 0 && linhaSelecionada <= 9 )
                        {
                            Console.Write("Digite o número da coluna: ");
                            if (int.TryParse(Console.ReadLine(), out colunaSelecionada) && colunaSelecionada >= 0 && colunaSelecionada <= 14)
                            {
                                // Preeche a vaga no teatro
                                teatro[linhaSelecionada, colunaSelecionada] = 'R';
    
                                // Atualiza as informações dos lugares
                                totalLugaresLivres = totalLugaresLivres - 1;
                                totalLugaresReservados = totalLugaresReservados + 1;
    
                                // Arrecada o valor
                                arrecadacaoReservas = arrecadacaoReservas + 0.4 * valorIngresso;
    
                                // Imprime mensagem de confirmação
                                Console.WriteLine("Reserva concluída com sucesso! Tecle para continuar");
                                Console.ReadLine();
                            }
                            else
                            {
                                Console.WriteLine();
                                Console.WriteLine("* * * Opção digitada não é válida! Cancelando! * * *");
                                Console.WriteLine();
                                continue;
                            }
                        }
                        else
                        {
                            Console.WriteLine();
                            Console.WriteLine("* * * Opção digitada não é válida! Cancelando! * * *");
                            Console.WriteLine();
                            continue;
                        }
                    }
                    else if(continuar == 9)
                    {
                        // Imprime parciais
                        Console.WriteLine();
                        Console.WriteLine("* * * PARCIAIS * * *");
                        Console.WriteLine("Total de lugares reservados: " + totalLugaresReservados);
                        Console.WriteLine("Valor total das reservas: R$ " + arrecadacaoReservas);
                        //Console.WriteLine("Total de lugares ocupados: " + totalLugaresReservados);
                        //Console.WriteLine("Valor total de ocupantes: R$ " + arrecadacaoReservas);
                        Console.WriteLine("Total de lugares livres: " + totalLugaresLivres);
                        Console.WriteLine();
                        Console.WriteLine("Tecle para continuar");
                        Console.ReadLine();
                    }
                           
                }
    
                // Imprime parciais
                Console.WriteLine();
                Console.WriteLine("* * * PARCIAIS FINAIS * * *");
                Console.WriteLine("Total de lugares reservados: " + totalLugaresReservados);
                Console.WriteLine("Valor total das reservas: R$ " + arrecadacaoReservas);
                //Console.WriteLine("Total de lugares ocupados: " + totalLugaresReservados);
                //Console.WriteLine("Valor total de ocupantes: R$ " + arrecadacaoReservas);
                Console.WriteLine("Total de lugares livres: " + totalLugaresLivres);
            }
        }


    “First do it, then do it right, then do it better.” - Addy Osmani

    quarta-feira, 13 de março de 2019 21:32
  • Olá amigo! Perdoe-me pela demora.

    Ultimamente estou tendo problemas com minha internet. Mas já está sendo resolvido!

    Muito bacana seu código, agora conseguimos reservar uma poltrona.

    Ela está conseguindo estender. :D

    Seguindo o seu código, Como agente faria para abrir o espetáculo?


    terça-feira, 19 de março de 2019 13:11
  • Fico feliz por isso! Para que o a questão seja encerrada, marque a postagem como resposta, por gentileza!


    “First do it, then do it right, then do it better.” - Addy Osmani

    terça-feira, 19 de março de 2019 13:17
  • Amigo, ela teve outra dúvida! 

    Seguindo o seu código, como ela faria para abrir o espetáculo?

    terça-feira, 19 de março de 2019 13:46
  • Segundo o que foi dito no início:

    "(...) Resumo das Operações:
    0 - Finaliza o programa e retorna para o sistema operacional.
    1 - Libera a sala do teatro, para que o programa possa ser executado outras vezes, para outros espetáculos (Zera todas as variáveis). (...)"

    Ao abrir um espetáculo, todas as variáveis devem ser zeradas, ou seja, é como se a aplicação fosse fechada e reaberta! Na prática, basta fazermos como no início do código

    static void Main(string[] args)
            {
                int continuar = 1;
                double valorIngresso = 100.00;
                double arrecadacaoReservas = 0.00;
                double arrecadacaoOcupados = 0.00;
                int totalLugaresLivres = 150;
                int totalLugaresReservados = 0;
                int totalVagasOcupadas = 0;
    
    
    
                char[,] teatro = new char[10, 15];
                char[] marcacaoLinhas = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
                string[] marcacaoColunas = {" ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14" };
                int linha, coluna = 0;
    
                // Preenche o teatro
                for (linha = 0; linha < 10; linha++)
                {
                    for (coluna = 0; coluna < 15; coluna++)
                    {
                        teatro[linha, coluna] = 'L';
                    }
                }
    
                while (continuar != 7)
                {
    
                    Console.WriteLine("* * * INFORMATIVOS * * *");
                    Console.WriteLine("VALOR DO INGRESSO: R$ " + valorIngresso);
                    Console.WriteLine("L - POSIÇÕES LIVRES");
                    Console.WriteLine("R - POSIÇÕES RESERVADAS");
                    Console.WriteLine("O - POSIÇÕES OCUPADAS (NÃO DISPONÍVEIS)");
                    Console.WriteLine("* * * * * * * * * * * * *");
                    Console.WriteLine();
    
                    Console.WriteLine("* * * EXIBINDO O TEATRO * * *");
                    Console.WriteLine();
    
                    // Imprime a numeração de marcação das colunas
                    for (coluna = 0; coluna <= 15; coluna++)
                    {
                        Console.Write(marcacaoColunas[coluna] + "  ");
                    }
                    Console.WriteLine();
    
                    // Imprime o teatro
                    for (linha = 0; linha < 10; linha++)
                    {
                        // Imprime a numeração de marcação das linhas
                        Console.Write(marcacaoLinhas[linha].ToString() + " ");
    
                        for (coluna = 0; coluna < 15; coluna++)
                        {
                            Console.Write(' '.ToString() + teatro[linha, coluna].ToString() + ' '.ToString());
                        }
    
                        Console.WriteLine();
                    }
    
                    Console.WriteLine();
                    Console.WriteLine("* * * EXIBINDO O TEATRO * * *");
                    Console.WriteLine();
    
                    MostrarAcoesDisponiveis();
    
                    int.TryParse(Console.ReadLine(), out continuar);
    
                    // Bloco de operações
                    // 1 - abrir espetáculo
                    // 2 - reservar poltrona
                    // 3 - liberar poltrona
                    // 4 - vender poltrona
                    // 7 - encerrar vendas
                    // 9 - parciais
                    if(continuar == 1)
                    {
                        Console.WriteLine();
                        Console.Write("Tem certeza ? S/N: ");
                        string escolha = Console.ReadLine();
                        if(escolha == "S")
                        {
                            // Reinicia o teatro
                            linha = 0;
                            coluna = 0;
    
                            for (linha = 0; linha < 10; linha++)
                            {
                                for (coluna = 0; coluna < 15; coluna++)
                                {
                                    teatro[linha, coluna] = 'L';
                                }
                            }
    
                            // Reinicia as parciais
                            valorIngresso = 100.00;
                            arrecadacaoReservas = 0.00;
                            arrecadacaoOcupados = 0.00;
                            totalLugaresLivres = 150;
                            totalLugaresReservados = 0;
                            totalVagasOcupadas = 0;
                        }
                    }
                    else if (continuar == 2)
                    {
                        // Imprime mensagem
                        Console.WriteLine();
                        Console.WriteLine("Reservar uma Poltrona: (linhas de 0 a 9 e colunas de 0 a 14)");
                        Console.WriteLine();
    
                        int colunaSelecionada = 0;
                        int linhaSelecionada = 0;
    
                        Console.Write("Digite o número da linha: ");
    
                        // Se der para converter em inteiro, continua
                        // se não for possível, imprime mensagem de erro e continua
                        if (int.TryParse(Console.ReadLine(), out linhaSelecionada) && linhaSelecionada >= 0 && linhaSelecionada <= 9 )
                        {
                            Console.Write("Digite o número da coluna: ");
                            if (int.TryParse(Console.ReadLine(), out colunaSelecionada) && colunaSelecionada >= 0 && colunaSelecionada <= 14)
                            {
                                // Preeche a vaga no teatro
                                teatro[linhaSelecionada, colunaSelecionada] = 'R';
    
                                // Atualiza as informações dos lugares
                                totalLugaresLivres = totalLugaresLivres - 1;
                                totalLugaresReservados = totalLugaresReservados + 1;
    
                                // Arrecada o valor
                                arrecadacaoReservas = arrecadacaoReservas + 0.4 * valorIngresso;
    
                                // Imprime mensagem de confirmação
                                Console.WriteLine("Reserva concluída com sucesso! Tecle para continuar");
                                Console.ReadLine();
                            }
                            else
                            {
                                Console.WriteLine();
                                Console.WriteLine("* * * Opção digitada não é válida! Cancelando! * * *");
                                Console.WriteLine();
                                continue;
                            }
                        }
                        else
                        {
                            Console.WriteLine();
                            Console.WriteLine("* * * Opção digitada não é válida! Cancelando! * * *");
                            Console.WriteLine();
                            continue;
                        }
                    }
                    else if(continuar == 9)
                    {
                        // Imprime parciais
                        Console.WriteLine();
                        Console.WriteLine("* * * PARCIAIS * * *");
                        Console.WriteLine("Total de lugares reservados: " + totalLugaresReservados);
                        Console.WriteLine("Valor total das reservas: R$ " + arrecadacaoReservas);
                        //Console.WriteLine("Total de lugares ocupados: " + totalLugaresReservados);
                        //Console.WriteLine("Valor total de ocupantes: R$ " + arrecadacaoReservas);
                        Console.WriteLine("Total de lugares livres: " + totalLugaresLivres);
                        Console.WriteLine();
                        Console.WriteLine("Tecle para continuar");
                        Console.ReadLine();
                    }
                           
                }
    
                // Imprime parciais
                Console.WriteLine();
                Console.WriteLine("* * * PARCIAIS FINAIS * * *");
                Console.WriteLine("Total de lugares reservados: " + totalLugaresReservados);
                Console.WriteLine("Valor total das reservas: R$ " + arrecadacaoReservas);
                //Console.WriteLine("Total de lugares ocupados: " + totalLugaresReservados);
                //Console.WriteLine("Valor total de ocupantes: R$ " + arrecadacaoReservas);
                Console.WriteLine("Total de lugares livres: " + totalLugaresLivres);
            }


    “First do it, then do it right, then do it better.” - Addy Osmani

    • Sugerido como Resposta Carlos Souza 516 sexta-feira, 22 de março de 2019 00:38
    terça-feira, 19 de março de 2019 23:47
  • Olá amigo. Muito obrigado pela sua ajuda! Agora sim todas as dúvidas foram tiradas! 

    Ela entendeu como faz graças a você.  Muito sucesso a você !!

    Um grande e forte abraço. :)

    sexta-feira, 22 de março de 2019 00:38
  • Amigo. Eu propus seu post como resposta! Espero que seja dessa forma, caso não seja entre em contato comigo para que eu possa marcar como resposta corretamente.

    Obrigado novamente. :D


    sexta-feira, 22 de março de 2019 00:45
  • Que ótimo que pude ajudar! Desejo todo sucesso para ti e a Valéria! Quando a dúvida bater, so chamar aqui na comunidade. A galera é sensacional!

    Obs: como a Valéria que abriu, só ela pode marcar como resposta. Quando ela puder, só entrar e marcar :D


    “First do it, then do it right, then do it better.” - Addy Osmani

    sexta-feira, 22 de março de 2019 12:25