joaotavares Posted May 26, 2010 at 03:42 PM Report #329728 Posted May 26, 2010 at 03:42 PM 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
Baderous Posted May 26, 2010 at 04:13 PM Report #329738 Posted May 26, 2010 at 04:13 PM 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; }
joaotavares Posted May 26, 2010 at 04:37 PM Author Report #329751 Posted May 26, 2010 at 04:37 PM 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.
Mineiro Posted May 26, 2010 at 07:59 PM Report #329830 Posted May 26, 2010 at 07:59 PM Eu tenho aqui uma classe menu que te iria simplificar esse código imenso, além de garantir que não te repetes tanto. Se quiseres, diz algo.
joaotavares Posted May 27, 2010 at 11:19 AM Author Report #329949 Posted May 27, 2010 at 11:19 AM Agradecia se pudesse arranjar.Mas este código não está a funcionar
Mineiro Posted May 27, 2010 at 08:44 PM Report #330144 Posted May 27, 2010 at 08:44 PM 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.
joaotavares Posted May 28, 2010 at 06:28 PM Author Report #330368 Posted May 28, 2010 at 06:28 PM como assim implementar tudo numa classe?
Mineiro Posted May 28, 2010 at 09:37 PM Report #330404 Posted May 28, 2010 at 09:37 PM 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.
joaotavares Posted May 28, 2010 at 09:47 PM Author Report #330407 Posted May 28, 2010 at 09:47 PM 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()
joaotavares Posted May 29, 2010 at 01:39 PM Author Report #330491 Posted May 29, 2010 at 01:39 PM 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?
LabregoO Posted May 29, 2010 at 04:49 PM Report #330533 Posted May 29, 2010 at 04:49 PM 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");" 😄
Localhost Posted May 29, 2010 at 04:51 PM Report #330535 Posted May 29, 2010 at 04:51 PM Funções com chamadas ao sistemas são pesadas e não são portáveis, logo não são recomendáveis, se te servir podes sempre fazer um printf com muitos \n. here since 2009
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now