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

Innight

Menu com submenu

11 mensagens neste tópico

#include <stdio.h>

int main(void) 
{
    char opcao;
    
    printf("Por favor insira uma das seguintes opcoes:\n");
    printf("p) piano \t\t v)violino\n");
    printf("t) trompete \t\t c)contrabaixo\n");
    scanf("%c", &opcao);
                  
    switch(opcao) {
       case 'p':
          printf("O pianista toca piano!\n");
          break;
       case 'v':
          printf("O violinista toca violino!\n");
          break;                   
       case 't':
          printf("O trompetista toca trompete!\n");
          break;                         
       case 'c':
          printf("O contrabaixista toca contrabaixo!\n");
          break;                      
       default:
          printf("Por favor insira um p, v, t ou c!");  
          }
        
    system("PAUSE");
    return 0;    
}

Boas,como aqui fazo um submenu, por exemplo este menu com a primeira opção ligar a outro menu?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aconselho-te a colocar esse código numa função auxiliar. Depois disso, chamas o submenu da mesma maneira que chamas esse menu.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

int main(void) 
{
    int opcao;
    int opc2;
    int mainOpc;
    
    do
    {
        mainOpc = MainMenu();
        switch(mainOpc) {
        case 1:
        break;
        case 2:
        break;
        }
    int MainMenu (void)
    {    
    printf("Por favor insira uma das seguintes opcoes:\n");
    printf("1) piano");
    printf("2) submenu");
    scanf("%d", &opcao);
    }
      system("PAUSE");
  return 0;
}

tipo esta,eu nao sei trabalhar com funções:S?mas esta da 3 erros.

EU queria por exemplo um MENU

* Curso *

Turma*

depois clicasse 1 - Curso

ia para o outro menu

*Criar*

*Remover*

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

- Falta-te o } while (...) correspondente ao do { ...

- Não podes declarar funções dentro de funções. Ou seja, tens que declarar a função MainMenu() fora da função main().

Para funcionar como queres, terás que criar outra função (com um nome do género MenuSubmenu()) e chamá-la dentro do case 2:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

int main(void) 
{
    int opc2;
    int mainOpc;
    int submainOpc;
    int MenuSubmenu;
    
    submainOpc = MenuSubMenu();
    switch(MenuSubmenu) {
    case 1:
        break;
    case 2:
        break;
    }
    
    mainOpc = MainMenu();
    switch(mainOpc) {
    case 1:
        break;
    case 2:
        MenuSubmenu();
        break;
    }
   
    system("PAUSE");
    return 0;
}

int MainMenu (void)
{    
    int opcao;
    printf("Por favor insira uma das seguintes opcoes:\n");
    printf("1) piano");
    printf("2) submenu");
    scanf("%d", &opcao);
}

int MenuSubmenu (void)
{   
    int opcao2; 
    printf("Por favor insira uma das seguintes opcoes:\n");
    printf("1) piano");
    printf("2) submenu");
    scanf("%d", &opcao2);
}

   

Estame a dar um erro,nao consigo resolver

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Ferreira tem razão.

No entanto, faltam-te os returns nas funções menu.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

int main(void)
{
    int opc2;
    int mainOpc;
    int submainOpc;
   
    mainOpc = MainMenu();
    switch(mainOpc) {
    case 1:
         printf("FUCk you\n");
        break;
    case 2:
        MenuSubmenu();
        break;
        
    submainOpc = MenuSubmenu();
    switch(submainOpc) {
    case 3:
         printf("ola");
        break;
    case 4:
        break;
    }
    }
   
    system("PAUSE");
    return 0;
}

int MainMenu (void)
{    
    int opcao;
    printf("Por favor insira uma das seguintes opcoes:\n");
    printf("1) piano");
    printf("2) submenu");
    scanf("%d", &opcao);
}

int MenuSubmenu (void)
{  
    int opcao2;
    printf("Por favor insira uma das seguintes opcoes:\n");
    printf("3) trombete");
    printf("4) menu");
    scanf("%d", &opcao2);
}

Agora não tem erros, entra no primeiro caso e faz um printf e acaba o pograma.

Se for para o segunda caso ele faz o mesmo que se fosse o primeiro caso:S

Nunca entra no submenu.Alguem sabe o poblema?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não estás a limpar o buffer depois do scanf. assim qd escreves um número e carregas em enter, ele le o número mas deixa o '\n' no buffer e este vai ser lido na próxima vez que fazes um scanf sem te dar tempo de ver nada...

solução: mete um getchar depois de cada scanf

as funções MainMenu e MenuSubmenu não estão a devolver nada, tens de retornar a opção escolhida senão o código não faz sentido nenhum...

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