Ir para conteúdo
Fórum Script Brasil
  • 0

Pequeno problema com MENU


Vaelous

Pergunta

Olá pessoal, este é meu primeiro post e gostaria de pedir a vossa ajuda.

O problema é o seguinte...

Eu criei um programa em C/C++ que minha professa pediu na faculdade. O programa está rodando e funcionando, porém estou com um pequeno problema e não consigo solucioná-lo.

Quantos problemas existem no programa?

Só existe 1 problema.

Qual o problema?

O problema é o seguinte. Como vocês podem observar no código do programa, a professora pediu para fazer um MENU, e é aí que está o problema (eu acho), quando eu escolho a opção 1, ele funciona como o planejado, ele chama o "void ler()" e roda perfeitamente. Quando escolho a opção 3 ele chama a função "void sair()" perfeitamente. O problema é que quando eu chamo a opção 2, ele não executa o "void exibir", alguém sabe me dizer o por quê?

Este é o programa.

 #include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct ficha
{
char cor,comb, seguro, nome_pro[40], placa, modelo;
int ano_fab, ano_mod, venc_seg,km_rod,hab_desde;
}carro;

//RECEBE OS DADOS
void ler()
{
system("cls");
char verif;
printf("Nome do proprietario: ");
fflush(stdin);
gets(carro.nome_pro);
printf("Hablitado desde: ");
scanf("%d", &carro.hab_desde);
printf("Placa do veiculo: ");
scanf("%s", &carro.placa);
printf("Modelo: ");
scanf("%s", &carro.modelo);
printf("Cor: ");
scanf("%s", &carro.cor);
printf("Combustivel: ");
scanf("%s", &carro.comb);
printf("Ano de fabricacao: ");
scanf("%d", &carro.ano_fab);
printf("Ano modelo: ");
scanf("%d", &carro.ano_mod);
printf("Possui serguro? S/N\n");
scanf("%s",&verif);
if((verif = 's') || (verif = 'S'))
{
printf("Ano de Vencimento do seguro: ");
scanf("%d", &carro.venc_seg);
strcpy(&carro.seguro, "SIM");
}

else if((verif = 'n') || (verif = 'N'))
strcpy(&carro.seguro, "não");

printf("Km rodado: ");
scanf("%d", &carro.km_rod);

system("cls");
}
//EXIBE OS DADOS
void exibir()
{

printf("Proprietario: %s", carro.nome_pro);
printf("\nHabilitado desde: %d", carro.hab_desde);
printf("\nPlaca do veiculo: %s", carro.placa);
printf("\nModelo: %s", carro.modelo);
printf("\nCor: %s", carro.cor);
printf("\nCombustivel: %s", carro.comb);
printf("\nAno de Fabricacao: %d", carro.ano_fab);
printf("\nAno Modelo: %d", carro.ano_mod);

//Alguém pode me dizer se esta parte está correta?(O programa rodou...)
if (carro.seguro == 'SIM')
printf("\nSeguro: %s", carro.seguro);
else
printf("\nSeguro: %s", carro.seguro);

printf("Km rodado: \n\n", carro.km_rod) ;
system("pause");

}
//FINALIZA O PROGRAMA
void sair()
{
system("exit");
}

main()
{
int opcao;

do
{
printf("\t\t\tMENU\n");
printf ("\tEscolha a opcao\n");
printf ("\t[1] - Ler\n");
printf ("\t[2] - Exibir\n");
printf ("\t[3] - Sair\n\t");
scanf("%d",&opcao);

while (opcao < 1 || opcao >3)
scanf("%d",&opcao);

switch (opcao)
{

case 1: ler();
break;

case 2: exibir();
break;

case 3: sair();
break;

}
}

while (opcao != 3 );

}
[/codebox]

Extra sobre o programa

void ler() -> Chama a função que recebe os dados.

void exibir() -> Exibe o que foi adicionado na função ler.

Editado por Vaelous
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Onde está a função main() do programa?

Uma outra dica extra para menus.

Eu quando vou fazer menus, uso a função getch() que serve para ler caracter (essa função está na biblioteca conio.h).

A vantagem dessa função é que no momento que o usuário aperta a tecla, ela já grava (não necessitando apertar ENTER).

Ex.:

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

int main(void)
{
  int continuar=1;
  puts("Digite:");
  puts("1 : Opcao...");
  while(continuar)
  {
    switch(getch())
    {
      case '1':;
      case '2':;
      case 27:continuar=0; // Tecla ESC
      default:puts("Opcao invalida!");
    }
  }
}

Note que no exemplo, a getch() retorna sempre um caracter. O caso 27 é referente ao pressionar a tecla ESC, ele sairá do menu.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...