Ir ao conteúdo
  • Cadastre-se

switch case printf não exibe dados


wgvieira

Posts recomendados

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.numero);

printf( "\nentre com a origem do voo: ");

scanf("%s",&lista_voo.cidade_origem);

printf("\nentre com o destino do voo: ");

scanf("%s",&lista_voo.cidade_destino);

printf("\nentre com numero de lugares: ");

scanf("%d",&lista_voo.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.numero){

printf("Cidade de origem: %s\n", lista_voo.cidade_origem);

printf("Cidade de destino: %s\n", lista_voo.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.cidade_origem) == 0){

printf("Cidade de origem: %d\n", lista_voo.numero);

printf("Cidade de destino: %s\n", lista_voo.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.cidade_destino) == 0){

printf("Cidade de origem: %d\n", lista_voo.numero);

printf("Cidade de destino: %s\n", lista_voo.cidade_origem);

}

else {

printf("voo nao encontrado");

}

}

break;

}

}

break;

}

case 2: {

//efetuar reservas

break;

}

} //fim do switch externo

} while (op != 3 );

getch();

return 0;

}

Link para o comentário
Compartilhar em outros sites

Os valores estão saindo, o programa só não está parando na hora de mostrar esses valores, ou seja, ele mostra os valores rapidamente e retorna ao menu, pelo menos no meu compilador está acontecendo isso eu uso o DEV C++, para corrigir esse problema use o

System("pause");

ou

getchar();

depois que ele mostrar os valores.

Link para o comentário
Compartilhar em outros sites

wgvieira, já que seu switch externo tem somente dois casos, por que você não coloca um if and else ? O código vai ficar muito mais limpo pela ausência de tantos breaks, bom essa é minha primeira sugestão. Outra, declare todas variáveis no começo do código assim quem está lendo o código não precisa ficar 'caçando' as declarações, lembre-se de inicializar todas variáveis se for preciso. O problema era realmente aquele ?

Link para o comentário
Compartilhar em outros sites

Arquivado

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

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