1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda em Menu em C:

Discussão em 'Programação' iniciada por Age, 20 de Janeiro de 2009. (Respostas: 4; Visualizações: 848)

  1. Age

    Age

    Pessoal eu tenho o seguinte programa:

    Código:
     
    int menuprincipal(){
     
        char i;
     
         printf("*********************************\n");    
    printf("*\t MENU *\n*********************************\n");
    printf("* 1- Carregamento máquina *\n");
    printf("* 2- Compra de produto simples *\n");
    printf("* 3 -Compra de produto complexa *\n");
    printf("* 4 -Gestão da máquina *\n");
    printf("*********************************\n");
     
    printf("escolha uma opção\n");
    scanf("%c", &i);
     
    return i;
    }
     
    int main (){
     
        char escolha;
     
     
            escolha = menuprincipal();
        switch (escolha){
     
                case '1': carregar_maquina();
                    break;
                case '2': compra_produto_simples();
                    break;
                case '3': compra_produto_complexa();
                    break;
                case '4': gestao_maquina();
                    break;
                case '0': exit(1);
                default: printf("opção invalida, escolha nova opção\n"); main();
        }    
    }
    
    E queria voltar a repetir o menu se a escolha fosse diferente de 1 ou 2 ou 3 ou 4 ou 0 mas quando meto main() no default aparece-me o menu 2 vezes e queria q so fosse uma vez...

    Se alguem me pudesse ajudar... obrigado =)
     
    Última edição pelo moderador: 20 de Janeiro de 2009
  2. Baderous

    Baderous Banido

    A função main nunca é invocada pelo utilizador, ela apenas é invocada 1 única vez (que é quando o programa começa a executar) e essa invocação está a cargo do SO. O que precisas é de colocar dentro da main um ciclo do...while a englobar o menu e a escolha da opção (e apagas aquela invocação da main).
     
  3. tmafcerqueira

    tmafcerqueira Power Member

    Na funçao menuprincipal usa um do... while. O codigo fica muito mais limpo. Depois é invocar onde necessitas
     
  4. Age

    Age

    Vou tentar mt obrigado =)
     
  5. Peter V5

    Peter V5 Folding Member

    chamando a função main mais do que uma vez no programa fica impossivel sair do main com o return, neste programa isso não faz mal mas em outros programas esse método poderia lixar-te o esquema, lolol
     

Partilhar esta Página