Jump to content
Fórum Script Brasil
  • 0

Pequeno problema com MENU


Vaelous

Question

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.

Edited by Vaelous
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...