Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wgvieira@msn.com

switch case

Recommended Posts

estou fazendo um programa em c para reserva de passagens aéres, com menu de consulta, reserva e sair e submenu dentro de consulta que é para consultar por numero de voo, cidade de origem e cidade de destino. porém quando aciono o menu qualquer uma das alternativas de consulta, não está saindo os valores de consulta.

 

codigo:

 

 

    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>    
    
    int main()
    {
        
    struct voo{
    int numero;
    char cidade_origem[50];
    char cidade_destino[50];
    int num_lugares;
    };    
    
    voo lista_voo[3]; //cria um vetor de voos
        
        int i;
        printf("\ninforme os dados de cada um dos voos\n");
        for( i = 0; i < 3; ++i )
        {
        printf("\nLista de origem e destino:\n1-SP\n2-BH\n3-Recife\n4-Salvador\n5-RJ\n6-Florianopolis\n");
        printf( "\nentre com o numero do voo: ");
        scanf("%d",&lista_voo[i].numero);
        printf( "\nentre com a origem do voo: ");
        scanf("%s",&lista_voo[i].cidade_origem);
        printf("\nentre com o destino do voo: ");
        scanf("%s",&lista_voo[i].cidade_destino);
        printf("\nentre com numero de lugares: ");
        scanf("%d",&lista_voo[i].num_lugares);
        getchar();
        system("cls");
        }
    int op;
        do
        {
        system("cls"); //limpa a tela
        printf( "\t\tMenu para gerenciamento de voos\n\n");
        printf( "1 - Consultar\n"
        "2 - Efetuar a reserva\n"
        "3 - Sair\n" );
        printf( "\nopcao: ");
        scanf("%d",&op);
        getchar();
        switch(op) {
        case 1: {
                
            int op2;
            system("cls");
                printf( "\nEscolha a forma como voce quer consultar:\n\n");
                printf( "1 - por numero de voo\n"
                "2 - por origem\n"
                "3 - por destino\n" );
                
                printf( "\nopcao: ");
                scanf("%d",&op2);
                getchar();
                switch(op2) {
                case 1:
                {
                int num;
                printf( "\n\nDigite o numero do voo: ");
                scanf("%d",&num);
                    for(int i=0; i<3; i++){
                        if (num==lista_voo[i].numero){                                
                        printf("Cidade de origem: %s\n", lista_voo[i].cidade_origem);
                        printf("Cidade de destino: %s\n", lista_voo[i].cidade_destino);
                                                }
                        else {
                            printf("voo nao encontrado");
                            
                        }
                    }                    
                break;
                
                }
                case 2:
                {
                char origem[50];
                printf( "\n\nDigite a origem do voo: ");
                scanf("%s",&origem);
                for(int i=0; i<3; i++){
                        if (strcmp (origem, lista_voo[i].cidade_origem) == 0){                                
                        printf("Cidade de origem: %d\n", lista_voo[i].numero);
                        printf("Cidade de destino: %s\n", lista_voo[i].cidade_destino);
                        
                        }
                        else {
                            printf("voo nao encontrado");
                        }
                    }
                break;
                }
                case 3:
                {
                char destino[50];
                printf( "\n\nDigite o destino do voo: ");
                scanf("%s",&destino);
                for(int i=0; i<3; i++){
                        if (strcmp (destino, lista_voo[i].cidade_destino) == 0){                                
                        printf("Cidade de origem: %d\n", lista_voo[i].numero);
                        printf("Cidade de destino: %s\n", lista_voo[i].cidade_origem);
                        
                        }
                        else {
                            printf("voo nao encontrado");
                        }
                    }
                break;
                }
                }
                break;
                }
            case 2: {
            //efetuar reservas
            break;
         }    
        } //fim do switch externo
    } while (op != 3 );
    getch();
    return 0;
} 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

for( i = 0; i < 3; ++i )

 

Com certeza não é assim que vc quer usar o for. Desse jeito a primeira posição preenchida é a 1, e não a 0. Use i++.

 

 

for(int i=0; i<3; i++){
   if (num==lista_voo[i].numero){
      printf("Cidade de origem: %s\n", lista_voo[i].cidade_origem);
      printf("Cidade de destino: %s\n", lista_voo[i].cidade_destino);
   } else {
      printf("voo nao encontrado");
   }
}

Também não é assim que vc vai buscar os dados. Ex: [voo 1, voo 2], buscar por voo 2. Na primeira iteração, como o número do voo não é o mesmo, vai imprimir que o voo não foi encontrado, mas ele está cadastrado. Reescreva essa lógica. O comentário serve também para a busca pelo destino e origem.

 

 

for(i = 0; i<3 && num != lista_voo[i].numero; i++);
if (i >= 3) {
  // Voo não encontrado;
} else {
  // Imprimir dados do voo
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.