• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

funky_vibes

[C] Ajuda: Menu de programa

19 mensagens neste tópico

Olá boa tarde.

tenho umas duvidas que gostava de ser esclarecidas.  :) espero que me deem umas dicas como resolver um pequeno problema.

void menu()
{
  int o;
  printf("------------LC1 *** Grupo 108-------------");
  printf("\n\n\n Opcoes");    
  printf("\n\n 1) Abrir e visualizar Netlist");
  printf("\n 2) Calculos da Tensao  ");
  printf("\n 3) Sair");
  printf("\n 4) Creditos");
  printf("\n\nEscolha a opcao desejada: ");
  scanf(" %d",&o);

agora necessito de fazer uma escolha , para depois passar para uma função

que estructura devo usar para fazer a escolha ? if ? ou com case? :fartnew2:

mas no final tenho sempre um problema, pois se não escolher entre 1 ou 4, vai dar erro e quero que apareçe outra vez a opção para escolher a opção desejada. :fartnew2:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

primeiro tens de usar uma estructura de repetição....

sempre q o valor não for o esperado... ele volta a mostar o menu ate q uma das opções seja selecionada

tas a entender?

e sim usa o case... é mais levezinho do q não sei quantos ifs encadeados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como faço isso? :| não sei aplicar isso la mt bem

tenho o código assim:

main()
{
  int o;
  
  printf("------------LC1 *** Grupo 108-------------");
  printf("\n\n\n Opcoes");    
  printf("\n\n 1) Abrir e visualizar Netlist");
  printf("\n 2) Calculos da Tensao  ");
  printf("\n 3) Sair");
  printf("\n 4) Creditos");
  printf("\n\n Escolha a opcao desejada: ");
  scanf(" %d",&o);
  
  
  switch(o)
  {
    case 1 : printf("/n 1");break;
    case 2 : printf("/n 2"); break;
    case 3 : printf("/n Adeus e Obrigado!");break;
    case 4 : printf("/n 4");break;
    default  : printf("Escolha incorrecta");getchar();
  }


  getchar(); 
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes fazer algo do género:

int main(void){
int x=1,op;
do{

op = funcao_menu(); //funcao para mostrar as opcoes e devolver a escolha

switch(op){
  case 1: break;
  case 2: break;
  case 3: break;
  case 0:
    x = 0;
    break;
}
}while(x!=0);
}

a função do menu deve validar as opções.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
main()
{
bool opt = true;
while (opt == true)
{
  int o;
  
  printf("------------LC1 *** Grupo 108-------------");
  printf("\n\n\n Opcoes");    
  printf("\n\n 1) Abrir e visualizar Netlist");
  printf("\n 2) Calculos da Tensao  ");
  printf("\n 3) Sair");
  printf("\n 4) Creditos");
  printf("\n\n Escolha a opcao desejada: ");
  scanf(" %d",&o);
  
  
  switch(o)
  {
    case 1 : printf("/n 1");
          opt = false;
          break;
    case 2 : printf("/n 2"); 
          opt = false;
          break;
    case 3 : printf("/n Adeus e Obrigado!");
          opt = false;
          break;
    case 4 : printf("/n 4");
          opt = false;
          break;
    default  : printf("Escolha incorrecta");getchar();
  }


  getchar(); 
}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes fazer um ciclo while para ler a opção

e despois um switch para entrar na função:

int opt = -1;
while (opt<0 && opt>4){
   printf ("Introduza uma opção: ");
   scanf(" %d",opt);
}
switch(opt){
    case 1 : printf("1");
          break;
    case 2 : printf("2");
          break;
    case 3 : printf("3");
          break;
    case 4 : printf("4");
          break;
    default  : printf("Ocorreu um erro");
  }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ora ate aqui tudo bem, e obrigado pela ajuda ate agora :\ agora deparo-me com outro pequeno problema.

main()
{
bool opt = true;
while (opt == true)
{
  int o;
  
  
  printf("------LC1 06/07 Grupo 108-----");

  printf("\n\n Opcoes"); 
  printf("\n\n 1) Abrir e visualizar Netlist");
  printf("\n 2) Calculos da Tensao");
  printf("\n 3) Sair");
  printf("\n 4) Creditos");
  printf("\n\n Escolha a opcao desejada: ");
  scanf(" %d",&o);
  
  
  switch(o)
  {
    case 1 : printf("\n 1");opt = false;break;
    case 2 : printf("\n 2");opt = false;break;
    case 3 : printf("\n Adeus e Obrigado!");getchar();opt = false;break;
    case 4 : system("cls");creditos();opt = false;break;
    default  : printf("Escolha incorrecta");system("cls");
  }
  getchar(); 
}
}

ora e antes tenho declarada esta função

void creditos()
{
     printf("\n Laboratorios de Comunicacoes");
     printf("\n\n Elementos Grupo 108");
     printf("\n -48044 ; Frederico Malaca");
     printf("\n -48048 ; Jose Miguel");
     printf("\n -48062 ; Tiago Enes");
     printf("\n Pressione uma tecla para voltar para o menu principal");
     getchar();

     }

tipo quero voltar para o menu principal :S mas não consigo , como posso fazer isso?

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu aconselho a criares uma função chamada menuPrincipal e colocares lá o código que crias-te.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

void creditos()
{
     printf("\n Laboratorios de Comunicacoes 1 - 06/07");
     printf("\n\n Elementos Grupo 108");
     printf("\n -48044 ; Frederico Malaca");
     printf("\n -48048 ; Jose Miguel");
     printf("\n -48062 ; Tiago Enes");
     printf("\n\n Pressione uma tecla para voltar para o menu principal");void escolhe();
          
     getchar();

}

void escolhas()
{
bool opt = true;
while (opt == true)
{
  int o;
  
  system("cls"); 
  printf("------LC1 06/07 Grupo 108-----");
  printf("\n\n Opcoes"); 
  printf("\n\n 1) Abrir e visualizar Netlist");
  printf("\n 2) Calculos da Tensao");
  printf("\n 3) Sair");
  printf("\n 4) Creditos");
  printf("\n\n Escolha a opcao desejada: ");
  scanf(" %d",&o);
  
  
  switch(o)
  {
    case 1 : printf("\n 1");opt = false;break;
    case 2 : printf("\n 2");opt = false;break;
    case 3 : system("cls");printf("\n Adeus e Obrigado!");getchar();opt = false;break;
    case 4 : system("cls");creditos();opt = false;break;
    default  : printf("\n Escolha incorrecta,clique para continuar"); getchar();
  }
  getchar(); 
}

}

main()
{
escolhas();

}

deste genero? :S assim não me dá nada. da erros

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz assim, em vez do while mete um do{ }while a fazer o ciclo enquanto a opção for diferente de 0.

do{

  system("cls");
  printf("------LC1 06/07 Grupo 108-----");
  printf("\n\n Opcoes");
  printf("\n\n 1) Abrir e visualizar Netlist");

......


switch(...
.....


}while(op != 0);


PS: Usa o GesHI para meter o código fica mais legível. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja fiz isso , mas tipo esta-me a dar um bug qualquer! porque quando quero sair ele não sai LOL volta ao menu :\

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se reparares foi o que coloquei  em cima. a minha funcao_menu é a tua escolhas. mas em vez de ser void devolve a escolha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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


void creditos()
{
     printf("\n Laboratorios de Comunicacoes 1 - 06/07");
     printf("\n\n Elementos Grupo 108");
     printf("\n -48044 ; Frederico Malaca");
     printf("\n -48048 ; Jose Miguel");
     printf("\n -48062 ; Tiago Enes");
     printf("\n\n Pressione uma tecla para voltar para o menu principal");void escolhe();
          
     getchar();

}

void escolhas()
{

  int o,op;

  do{
  system("cls"); 
  printf("------LC1 06/07 Grupo 108-----");
  printf("\n\n Opcoes"); 
  printf("\n\n 1) Abrir e visualizar Netlist");
  printf("\n 2) Calculos da Tensao");
  printf("\n 3) Sair");
  printf("\n 4) Creditos");
  printf("\n\n Escolha a opcao desejada: ");
  scanf(" %d",&o);
  
  
  switch(o)
  {
    case 1 : printf("\n 1");getchar();break;
    case 2 : printf("\n 2");break;
    case 3 : system("cls");printf("\n Adeus e Obrigado!");getchar();break;system("exit");
    case 4 : system("cls"); creditos();getchar(); break;
    default  : printf("\n Escolha incorrecta,clique para continuar"); getchar();getchar();
  }
}while(op!=0);
  getchar(); 


}

main()
{
escolhas();


}

tipo , eu ja tenho o programa assim , mas não sai! nao estou a ver porque!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não consegues sair por causa disto:

case 3 : system("cls");printf("\n Adeus e Obrigado!");getchar();break;system("exit");

1.º erro: Tu tens um break; antes do system("exit");, por isso a instrução system("exit"); nunca é executada!

2.º erro: Não saias dum programa com um system("exit");, que faz um exit na consola! Isto não faz um exit forçado no programa, mas sim um exit na consola do MS-DOS, fazendo com que a consola seja encerrada.

Para sair rapidamente do programa usa a instrução: exit(0); e claro, antes do break;

Mas sinceramente aconselho, um op=0, para saíres do teu ciclo e terminares normalmente o programa.

Cumpr. bk@ero  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Concordo com o que o brink@ero disse. Mas acho estranho que o compilador não se tenha queixado com um warning devido a teres uma instrução que nunca vai ser executada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Concordo com o que o brink@ero disse. Mas acho estranho que o compilador não se tenha queixado com um warning devido a teres uma instrução que nunca vai ser executada.

Provavelmente deu warning, mas como compilou na mesma ele ignorou-o :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora