ze_carlos Posted June 6, 2012 at 04:57 PM Report Share #460993 Posted June 6, 2012 at 04:57 PM (edited) Boa tarde, Estou a iniciar um pequeno projecto em C que necessita de vários menus com transição entre eles. Alguém pode dar uma ideia de um algoritmo que melhor se adapte as minhas necessidades tendo um menu com 2 ou mais submenus. A ideia é a seguinte: 1-item --------- 1-subitem 2-subitem 3-volta ao menu inicial | 2-item | 3-item | 0-sair Edited June 6, 2012 at 04:59 PM by ze_carlos Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted June 6, 2012 at 05:17 PM Report Share #460999 Posted June 6, 2012 at 05:17 PM já fizeste uma pesquisa aqui no forum ??? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
ze_carlos Posted June 6, 2012 at 07:02 PM Author Report Share #461028 Posted June 6, 2012 at 07:02 PM Sim, mas não encontrei nada semelhaste ao tipo de questão que estou a colocar. O meu objectivo é obter uma estrutura fiável que me permita ter um menu principal, e este, direccionar para sub-menus e retornar novamente ao menu principal. Link to comment Share on other sites More sharing options...
pikax Posted June 6, 2012 at 07:32 PM Report Share #461032 Posted June 6, 2012 at 07:32 PM faz uma arvore Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
Knot Posted June 9, 2012 at 09:33 AM Report Share #461600 Posted June 9, 2012 at 09:33 AM Eu aprendi a fazer do seguinte modo, nas aulas de Estruturas de Dados. Basicamente fazes as funções menu fora do main(), depois no main num ciclo infinito jogas com o switch for(; { system("cls"); switch (menu_principal()) { case '1': switch (menu2()) { case '1': break; case '2': break; case '3': break; case '4': break; case '5': break; case '6': break; } break; case '2': switch (menu3()) { case '1': break; case '2': break; case '3': break; case '4': break; case '5': break; case '6': break; case '7': break; case '8': break; } break; case '3': switch (menu4()) { case '1': break; case '2': break; case '3': break; case '4': break; case '5': break; case '6': break; } break; case '0': exit(0); } system("pause"); } } Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted June 9, 2012 at 09:49 AM Report Share #461602 Posted June 9, 2012 at 09:49 AM se sabes uma solução, qual é a dúvida IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Knot Posted June 9, 2012 at 10:06 AM Report Share #461604 Posted June 9, 2012 at 10:06 AM Não sou eu que tenho a duvida lol, eu só dei a solução, o membro que colocou a duvida é outro!!! Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted June 9, 2012 at 10:20 AM Report Share #461607 Posted June 9, 2012 at 10:20 AM Não sou eu que tenho a duvida lol, eu só dei a solução, o membro que colocou a duvida é outro!!! epa ... nem reparei 😄 já agora, uma boa solução (máquina de estados) typedef enum { StateMainMenu, StateSubMenu1, // lista de estados/menus necessários StateExit } State; State procMainMenu() { return StateExit; } int main(void) { Estado estado = StateMainMenu; while (estado != StateExit) { switch (estado) { case StateMainMenu: estado = procMainMenu(); break; // os outros casos necessários default: break; } } return 0; } nota : este é um exemplo muito simplista IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
ze_carlos Posted June 11, 2012 at 09:53 AM Author Report Share #461907 Posted June 11, 2012 at 09:53 AM Obrigado pela a ajuda 🙂 Em relação à 2º opção achei mt interessante do ponto de vista funcional, mas visto estar um pouco apertado com prazos e o meu conhecimento ainda ser pouco optei pela 1 opção. Cumprimentos e mt Obrigado 👍 Link to comment Share on other sites More sharing options...
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