Jump to content

[C] Ajuda: Menu de programa


Recommended Posts

Posted

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:

Posted

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

Posted

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(); 
}
Posted

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.

Posted
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(); 
}
}
Posted

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");
  }

Posted

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

Posted

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

Posted
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

Posted

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

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Posted

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

Posted

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

Posted
#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!

Posted

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  😉

Posted

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.

Desaparecido.

Posted

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 😄

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.