Ir ao conteúdo

Posts recomendados

Postado

Olá a todos.

 

Sou novo no fórum, iniciante em linguagem C e estou com muitas dificuldades em resolver um exercício.

Preciso de um programa com a opção "2"em um menu, para gerar um relatório do número de passagens vendidas.

Tenho de completar o arquivo abaixo que já foi pré-determinado pelo curso.

Agradeço a quem possa ajudar.

 


 

#include<stdio.h>
#include<conio.h>

// PROGRAMA PARA VENDA DE PASSAGENS


int main()
{
    int op,L,COL,P;
    int poltrona[2][2];  // [2 LINHAS][2 COLUNAS];

    
// DISTRIBUIÇÃO DAS POLTRONAS NO PROGRAMA:  
                  
// poltrona[0][0]=1      poltrona[0][1]=2        
// poltrona[1][0]=3      poltrona[1][1]=4
   
        
    for (L=0;L<=1;L++)
    {
      for (COL=0;COL<=1;COL++)
      {
         poltrona[L][COL]=0; // PERCORRE CADA POSIÇÃO DA MATRIZ E ATRIBUI ZERO 
      }
    }    
  
    printf("\n \n \t --- PROGRAMA PARA VENDA DE PASSAGENS --- \n \n");
    
     do
    {
     printf("\n \n 1-COMPRAR");
     printf("\n \n 2-RELATORIO");
     printf("\n \n 0-SAIR -->> ");
     scanf("%d",&op);
     switch(op)
     {
        case 0:
             printf("\n \n Programa finalizado, pressione qualquer tecla..."); 
             break;    
        case 1:
             printf("\n POLTRONA DESEJADA: ");
             scanf("%d",&P);
             if (P==1)
             {
                if (poltrona[0][0]==1)
                {
                   printf("\n *** POLTRONA OCUPADA ***"); 

                }  
                if (poltrona[0][0]==0)
                {
                   printf("\n *** POLTRONA VENDIDA COM SUCESSO ***"); 
                   poltrona[0][0]=1;
                  
                
                }        
             }
             if (P==2)
             {
                if (poltrona[0][1]==1)
                {
                   printf("\n *** POLTRONA OCUPADA ***"); 
                } 
                if (poltrona[0][1]==0)
                {
                   printf("\n *** POLTRONA VENDIDA COM SUCESSO ***"); 
                   poltrona[0][1]=1;
      
                }             
             }
             if (P==3)
             {
                if (poltrona[1][0]==1)
                {
                   printf("\n *** POLTRONA OCUPADA ***"); 
                } 
                if (poltrona[1][0]==0)
                {
                   printf("\n *** POLTRONA VENDIDA COM SUCESSO ***"); 
                   poltrona[1][0]=1;
                }            
             }
             if (P==4)
             {
                if (poltrona[1][1]==1)
                {
                   printf("\n *** POLTRONA OCUPADA ***"); 
                }  
                if (poltrona[1][1]==0)
                {
                   printf("\n *** POLTRONA VENDIDA COM SUCESSO ***"); 
                   poltrona[1][1]=1; 
              
                }           
             } 
             break;
         case 2:        
             printf("\n \n RELATORIO DE VENDAS \n\n"); 
             break;       
        default:   
             printf("\n \n<<< SELECIONE 1 OU 0 >>>"); 
             break;      
     } 
    
     }while(op!=0);   
getch();    
}


 

  • Curtir 1
Postado

Uma coisa raramente ensinada, se não nem ensinada, é o uso de máquina de estados para criar menus, tanto em GUI quanto terminal.

Eu sugiro que você use uma máquina de estados, que é bem simples de entender, vou explicar como é uma:

Vou pegar esse seu programa. Como há 3 opções iniciais, estas opções são na verdade uma "tela", chamaremos de tela principal.

Sendo assim quando digitar 1, a pessoa será direcionada para a tela de comprar. Ainda estando na tela principal, se ela digitar 2, vbai para tela de relatório. Observe que cada tela, é na verdade um estado do seu programa e um independe do outro pra existir. Tipo, na tela principal, temos um código diferente que age de forma diferente das outras telas. Sendo assim a tela de compra tem seu código e a tela de relatório outro código:
 

int main ( )
{
  /*
  	Tela principal = 1,
    Tela de comprar = 2
    Tela de rekatorio = 3
    comando de sair do programa = 0
  */
  //primeiro escolha a tela principal como a primeira tela
  int tela = 1;
  int opcao = 0;
  //enquanto não for para sair
  while (tela != 0)
  {
    switch (tela)
    {
      //tela principal
      case 1:
        printf("Escolha uma opção:\n"
               "1-comprar\n"
               "2-relatorio\n"
               "0-fechar programa\n");
        //NOTA observe que opção deve esar dentro de 0 até 2
        scanf("%d",&opcao);
        //escolheu ir para tela de comprar
        if (opcao == 1)
          tela = 2;//vai para tela de comprar, muda o estado da máquina
        else if (opcao == 2)
          tela = 3;//escolheu ir para tela de relatorio, muda o estado da máquina
        else if (opcao == 0)
          tela = 0;//escolheu fechar o programa
        else
          printf("Opção %d inválida\n", opcao);
        //limpa a entrada anterior
        opcao = 0;
        break;
      //estamos na tela de compra
      case 2:
        printf("Escolha uma opção:\n"
               "1-opção produto 1\n"
               "2-opção produto 2\n"
               "0-voltar para tela principal\n");
        scanf("%d",&opcao);
        if (opcao == 1)
          printf("Comprando produto 1\n");
        else if (opcao == 2)
          printf("Comprando produto 2\n");
        else if (opcao == 0)
          tela = 1;//volta para menu principal
        else
          printf("Opção %d inválida\n", opcao);
        //limpa a entrada
        opcao= 0;
        break;
      //tela de relatório, agora você pode saber como fazer :)
      case 3:
        
        break;
    }
  }
  return 0;
}

Observe que em cada case do switch é um código diferente para cada tela. Sendo que a variavel 'tela', indica o estado do programa. E cada estado é uma tela de opções diferente, podendo ser trocado para outra tela apenas mudando o valor de 'tela'.

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...