Jump to content

Recommended Posts

Posted

include <iostream>

using namespace std;

main()

{

  int n;

  cout << "1.Gerir" << endl << "2." << "3.Sair" << endl;

  cin >> n;

 

  switch (n){

    case 1:

      int a;

      cout << "1.Inserir " << endl << "2.Remover " << endl << "3.Editar" << endl << "4.Sair" << endl;

      cin >> a;

      switch (a){

case 1:

case 2:

case 3:

case 4:

  break;

   

      }

break;

    case 2:

     

      break;

     

    case 3:

     

      break;

   

      }

     

}

Boa tarde estou a criar uns menus em c++, A minha dúvida é quando passo de um menu para outro como e que faço para voltar ao anterior

Posted

Tens de envolver isso num ciclo do...while. Tens aqui um exemplo em C onde podes ver como se faz:

#include <stdio.h>

void menu1(void) {
        int op;
        do {
                printf("1 - Sub-opcao 1\n");
                printf("2 - Sub-opcao2\n");
                printf("0 - Retroceder\n");
                printf("\nIntroduza a opcao: ");
                scanf("%d",&op);
                scanf("%*c");
                switch (op) {
                        case 1: printf("Escolheu a sub-opcao 1.\n");
                                break;
                        case 2: printf("Escolheu a sub-opcao2.\n");
                                break;
                        case 0: break;
                        default: printf("Opcao invalida!\n");
                }
        } while (op!=0);
}

int main(void) {
        int op;
        do {
                printf("-- MENU --\n");
                printf("1 - Opcao 1\n2 - Opcao 2\n3 - Opcao 3\n0 - Sair\n");
                printf("\nIntroduza a opcao: ");
                scanf("%d",&op);
                scanf("%*c");
                switch(op) {
                        case 1: menu1();
                                break;
                        case 2: printf("Escolheu a opcao2.\n");
                                break;
                        case 3: printf("Escolheu a opcao3.\n");
                                break;
                        case 0: break;
                        default: printf("Opcao invalida.\n");
                }
       } while (op!=0);
        printf("Fim!\n");
        return 0;
}

Posted

obrigado

#include <iostream>

using namespace std;

void menu2(){		
	int a;
	cout << "1.Geral"<< endl << "2.Renovaveis" << endl << "3.Nao Renovaveis" << "4.Sair"<< endl;
	cin >> a;
	switch (a){
			case 1:
			break;

			case 2: menu5();
			break;

			case 3: menu6();
			break;

			case 4: menu();
			break;
		  }
	}	

void menu3(){
	  int b;
	  cout << "1.Geral"<< endl << "2.Renovaveis" << endl << "3.Nao Renovaveis" << "4.Sair"<< endl;
	  cin >> b;
	  switch (b){
			case 1:
			break;

			case 2: menu7();
			break;

			case 3: menu8();
			break;

			case 4: menu();
			break;
		  }

void menu5(){
	  int c;
	  cout << "1.Barragem" << endl << "2.Parque Eolico" << endl << "3.Sair" << endl;
	  switch (c){
		  case 1:
		  break;

		  case 2:
		  break;

		  case 3: menu2();
		  break;
		}

	}

void menu6(){
	  int d;
	  cout << "Carvao " << endl << "Petroleo" << endl << "Sair" << endl;
	  cin >> d;
	  switch (d){
		  case 1:
			break;

		  case 2:
			break;

		  case 3: menu2();
		  break;

		}

  }

void menu7(){
	  int e;
	  cout << "1.Barragem" << endl << "2.Parque Eolico" << endl << "3.Sair" << endl;
	  switch (e){
		  case 1:
		  break;

		  case 2:
		  break;

		  case 3: menu3();
		  break;
		}

	}

void menu8(){
	  int d;
	  cout << "Carvao " << endl << "Petroleo" << endl << "Sair" << endl;
	  cin >> d;
	  switch (d){
		  case 1:
			break;

		  case 2:
			break;

		  case 3: menu3();
		  break;
		}
  }

main(){
		int n;
		cout << "1.Gerir" << endl << "2.Dados sobre produção, consumo e perdas" << endl << "3.Oscilações produção e consumo" << endl << "4.Consumidoress" << endl << "5.Sair" << endl;
		cin >> n;
		switch (n){
				case 1: menu1();
				break;

				case 2: menu2();
				break;

				case 3: menu3();
				break;

				case 4: menu4();
				break;
				}
}

Eu fiz assim mas quando vou a compilar dize me que as funções não estão definidas.

Posted

http://www.megaupload.com/?d=QDGWVWMI

Aqui tens o link para o código-fonte + um exemplo de utilização (menu de um cliente de e-mail simples). Pondera reestruturar o teu programa com base nisto!

Entretanto vou dar uma vista de olhos ao teu código.

EDIT: as subrotinas aparecem como indefinidas porque, no teu ficheiro, as estas a chamar antes de as implementar. Organizar tudo numa classe resolveria este problema.

Posted

Fazeres uma classe menu e trabalhar a partir daí. Ou então organizar de forma a que nada seja chamado antes de estar definido.

Tu neste momento tens (apenas um exemplo, não reflecte a realidade do código):

menu3 que precisa dos menus 2 e 1;

menu1 que nao tem dependencias;

menu2 que precisa do menu 1;

O compilador nao reconhece o menu 3...

No entanto, se o passares para o "fundo" ele la o vai reconhecer. O parsing e feito de cima para baixo.

Posted

o meu problema nos menus e nao consigar voltar ao menu anterior utilizando apenas switch case consigo criar os menus que quero mas nunca volta atras no menu so anda para a frente. Tentei com as funções mas aparece me sempre que alguma não está definida mas percebi aquilo que me explicou mas neste caso do meu código não dá porque há varias que precisam da função menu()

Posted

Já resolvi o problema dos menus. Existe algum comando para quando passo de um menu para outro só aparecer o menu seguinte apagando da consola o anterior?

Um comando que "limpe" o Output , certo ?

Em Linux : "system ("clear");" (por acaso não sei se este funcionará em Windows)

Em Windows : "system ("cls");"

😄

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.