Ir ao conteúdo
  • Cadastre-se
wgvieira

switch case printf não exibe dados

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

}

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×