Ir ao conteúdo

Posts recomendados

Postado

Boa tarde,

estou com um problema ao criar um programa que deve ter um menu e ao seleccionar a opção abrir sub menus,em que o menu inicial tem 3 opções de entrada e uma para fechar o programa, ao entrar seleccionar a primeira opção(eu estou a trabalhar sub menu por submenu).

No primeiro sub menu existem varias opções e eu estou a ter problemas na primeira, a primeira opção é para introduzir varias idades e salva-las num vetor,após isso deve voltar para o menu inicial.

Voltando á opção Idades, a segunda opção é para listar as idades introduzidas mas não lista as idades que o utilizador introduziu.

E código que fiz é o seguinte:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
#include <unistd.h>
#include <math.h>
int main(void)
{
    setlocale(LC_ALL,"portuguese");
    int idades[5]={0,0,0,0,0};
    int idades_o[5];
    int  opcao,i,j,a,cont,local;
    printf("1. Idades\n2. Nomes\n3. Notas\n0. Fechar\n");
    scanf("%d",&opcao);
    system("cls");
    if(opcao==1)//opção 1 do menu inicial
    {
        printf("1. Inserir idade\n2. Listar\n3. Pesquisar\n4. Ordenar\n5. Eliminar\n6. Estatística\n0. Regressar ao menu\n");
        /*for(i=0;i<5;i++)//confirmar o problema
        {
            printf("%d\n",idades);
        }*/
        scanf("%d",&opcao);
        system("cls");
        if(opcao==1)//opção 1 do submenu
        {
            for(i=0;i<5;i++)
            {
                printf("\nInsira as idades:");
                scanf("%d",&idades);
                //printf("%d",idades); //confirmar o erro
            }
            system("cls");
            sleep(0);
            return main();
        }
        if(opcao==2)//opção 2 do submenu, 
        {
        for(i=0;i<5;i++)
        {
            printf("%d\n",idades);
        }
                sleep(0);
                return main();
        }
        if(opcao==3)//opção 3 do submenu
        {
            //incompleto
        }
        if(opcao==4)
        {
            //incompleto
        }
        if(opcao==6)//opção 6 do submenu
        {
            printf("1. Numero de idades\n4. Idade maior\n5. Idade menor\n6. Média das idades\n0. Regressar ao menu\n");
            scanf("%d",&opcao);
            if (opcao==0)
            {
                sleep(0);
                return main();
            }
        }
        if(opcao==0) //opção 0 do submenu 
        {  
        sleep(0);
        return main(); 
        }
    }
}

 

Eu gostaria que alguém me pudesse ajudar a descobrir o que estou a fazer de mal, muito obrigado.

  • Curtir 1
Postado

@Mpixell    esse comando 

return main();

não existe na linguagem c,  então para conseguir fazer esse comando que você pretende,  você precisa usar um laço de repetição, assim no final do laço ele retorna ao começo do laço até que a condição colocada seja verdadeira e nesse caso ele passa para as instruções seguintes .    veja como ficaria seu código com algumas modificações :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
#include <unistd.h>
#include <math.h>
int main()
{
    setlocale(LC_ALL,"");
    int idades[5]={0,0,0,0,0};
    int idades_o[5];
    int  opcao1,opcao2,opcao3,i,j,a,cont,local;
    do{
        system("cls");
        printf("Está No Primeiro Menu\n\n");
        printf("1. Idades\n2. Nomes\n3. Notas\n0. Fechar\n");
        scanf("%d",&opcao1);
        system("cls");
        if(opcao1==1)/*//opção 1 do menu inicial*/
        {
            do{
                system("cls");
                printf("Está No Segundo SubMenu\n\n");
                printf("1. Inserir idade\n2. Listar\n3. Pesquisar\n");
                printf("4. Ordenar\n5. Eliminar\n6. Estatística\n");
                printf("0. Regressar ao menu\n");
                /*for(i=0;i<5;i++)//confirmar o problema
                {
                    printf("%d\n",idades);
                }*/
                scanf("%d",&opcao2);
                system("cls");
                if(opcao2==1)/*//opção 1 do submenu*/
                {
                    printf("Inserir Idades\n\n");
                    for(i=0;i<5;i++)
                    {
                        printf("\nInsira as idades:");
                        scanf("%d",&idades[i]);
                        /*//printf("%d",idades); //confirmar o erro*/
                    }
                    system("cls");
                    sleep(0);
                }
                if(opcao2==2)/*//opção 2 do submenu,*/
                {
                    printf("Listar\n\n");
                    for(i=0;i<5;i++)
                    {
                        printf("%d\n",idades);
                    }
                    sleep(0);
                }
                if(opcao2==3)/*//opção 3 do submenu*/
                {
                    printf("Pesquisar\n\n");
                    /*//incompleto*/
                }
                if(opcao2==4)
                {
                    printf("Ordenar\n\n");
                    /*//incompleto*/
                }
                if(opcao2==5)
                {
                    printf("Eliminar\n\n");
                    /*//incompleto*/
                }
                if(opcao2==6)/*//opção 6 do submenu*/
                {
                    do{
                        system("cls");
                        printf("Está No Terceiro SubMenu\n\nEstatísticas\n\n");
                        printf("1. Numero de idades\n4. Idade maior\n5. Idade menor\n");
                        printf("6. Média das idades\n0. Regressar ao menu\n");
                        scanf("%d",&opcao3);
                        if (opcao3==0)
                        {
                            printf("Retornando Ao Segundo SubMenu\n\n");
                            sleep(1000);
                        }
                        if (opcao3==1)
                        {
                            printf("Número De Idades\n\n");
                            sleep(1000);
                        }
                        if (opcao3==2)
                        {
                            printf("Opção 2\n\n");
                            sleep(1000);
                        }if (opcao3==3)
                        {
                            printf("Opção 3\n\n");
                            sleep(1000);
                        }if (opcao3==4)
                        {
                            printf("Opção 4\n\n");
                            sleep(1000);
                        }
                        if (opcao3==5)
                        {
                            printf("Opção 5\n\n");
                            sleep(1000);
                        }
                        if (opcao3==6)
                        {
                            printf("Opção 6\n\n");
                            sleep(1000);
                        }
                    }while(opcao3!=0);
                }
                if(opcao2==0) /*//opção 0 do submenu*/
                {
                    printf("Retornando Ao Segundo SubMenu");
                    sleep(1500);
                }
            }while(opcao2!=0);
        }
    }while(opcao1!=0);
    return 0;
}

 

  • Curtir 1
Postado

@devair1010 Obrigado pela ajuda

Eu usei o comando 

44 minutos atrás, devair1010 disse:

return main();

Porque um colega meu me disse para o usar, e o programa não estava a dar erro.

Mais uma vez, obrigado pela ajuda

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!