Inquiridor
Preciso de ajuda em um exercicio de C#

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.
Todas as Respostas
-
-
-
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
-
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();
}
}
} -
Isso é tudo o que ela tem, e conseguiu desenvolver !
Obrigado por estar ajudando ela! Ela é grata por isso :D
- Editado Carlos Eduardo 552 terça-feira, 12 de março de 2019 19:42
-
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
- Editado wallacemariadeandrade terça-feira, 12 de março de 2019 22:53
-
-
-
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
- Sugerido como Resposta wallacemariadeandrade terça-feira, 19 de março de 2019 13:24
-
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?
- Editado Carlos Souza 516 terça-feira, 19 de março de 2019 13:25
-
-
-
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ódigostatic 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
-
-
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
- Editado Carlos Souza 516 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