funky_vibes Posted December 5, 2006 at 03:44 PM Report #68910 Posted December 5, 2006 at 03:44 PM Olá boa tarde. tenho umas duvidas que gostava de ser esclarecidas. 🙂 espero que me deem umas dicas como resolver um pequeno problema. void menu() { int o; printf("------------LC1 *** Grupo 108-------------"); printf("\n\n\n Opcoes"); printf("\n\n 1) Abrir e visualizar Netlist"); printf("\n 2) Calculos da Tensao "); printf("\n 3) Sair"); printf("\n 4) Creditos"); printf("\n\nEscolha a opcao desejada: "); scanf(" %d",&o); agora necessito de fazer uma escolha , para depois passar para uma função que estructura devo usar para fazer a escolha ? if ? ou com case? :fartnew2: mas no final tenho sempre um problema, pois se não escolher entre 1 ou 4, vai dar erro e quero que apareçe outra vez a opção para escolher a opção desejada. :fartnew2:
killercode Posted December 5, 2006 at 03:54 PM Report #68917 Posted December 5, 2006 at 03:54 PM primeiro tens de usar uma estructura de repetição.... sempre q o valor não for o esperado... ele volta a mostar o menu ate q uma das opções seja selecionada tas a entender? e sim usa o case... é mais levezinho do q não sei quantos ifs encadeados Geek PressWeboeste.Com
funky_vibes Posted December 5, 2006 at 04:19 PM Author Report #68922 Posted December 5, 2006 at 04:19 PM como faço isso? :| não sei aplicar isso la mt bem tenho o código assim: main() { int o; printf("------------LC1 *** Grupo 108-------------"); printf("\n\n\n Opcoes"); printf("\n\n 1) Abrir e visualizar Netlist"); printf("\n 2) Calculos da Tensao "); printf("\n 3) Sair"); printf("\n 4) Creditos"); printf("\n\n Escolha a opcao desejada: "); scanf(" %d",&o); switch(o) { case 1 : printf("/n 1");break; case 2 : printf("/n 2"); break; case 3 : printf("/n Adeus e Obrigado!");break; case 4 : printf("/n 4");break; default : printf("Escolha incorrecta");getchar(); } getchar(); }
rgcaldas Posted December 5, 2006 at 04:28 PM Report #68926 Posted December 5, 2006 at 04:28 PM Podes fazer algo do género: int main(void){ int x=1,op; do{ op = funcao_menu(); //funcao para mostrar as opcoes e devolver a escolha switch(op){ case 1: break; case 2: break; case 3: break; case 0: x = 0; break; } }while(x!=0); } a função do menu deve validar as opções.
killercode Posted December 5, 2006 at 04:28 PM Report #68927 Posted December 5, 2006 at 04:28 PM main() { bool opt = true; while (opt == true) { int o; printf("------------LC1 *** Grupo 108-------------"); printf("\n\n\n Opcoes"); printf("\n\n 1) Abrir e visualizar Netlist"); printf("\n 2) Calculos da Tensao "); printf("\n 3) Sair"); printf("\n 4) Creditos"); printf("\n\n Escolha a opcao desejada: "); scanf(" %d",&o); switch(o) { case 1 : printf("/n 1"); opt = false; break; case 2 : printf("/n 2"); opt = false; break; case 3 : printf("/n Adeus e Obrigado!"); opt = false; break; case 4 : printf("/n 4"); opt = false; break; default : printf("Escolha incorrecta");getchar(); } getchar(); } } Geek PressWeboeste.Com
killercode Posted December 5, 2006 at 04:29 PM Report #68928 Posted December 5, 2006 at 04:29 PM acho q é assim não me lembro la muito bem da sintaxe Geek PressWeboeste.Com
Ped@ntilva Posted December 5, 2006 at 04:44 PM Report #68936 Posted December 5, 2006 at 04:44 PM Podes fazer um ciclo while para ler a opção e despois um switch para entrar na função: int opt = -1; while (opt<0 && opt>4){ printf ("Introduza uma opção: "); scanf(" %d",opt); } switch(opt){ case 1 : printf("1"); break; case 2 : printf("2"); break; case 3 : printf("3"); break; case 4 : printf("4"); break; default : printf("Ocorreu um erro"); }
funky_vibes Posted December 5, 2006 at 06:20 PM Author Report #68959 Posted December 5, 2006 at 06:20 PM ora ate aqui tudo bem, e obrigado pela ajuda ate agora :\ agora deparo-me com outro pequeno problema. main() { bool opt = true; while (opt == true) { int o; printf("------LC1 06/07 Grupo 108-----"); printf("\n\n Opcoes"); printf("\n\n 1) Abrir e visualizar Netlist"); printf("\n 2) Calculos da Tensao"); printf("\n 3) Sair"); printf("\n 4) Creditos"); printf("\n\n Escolha a opcao desejada: "); scanf(" %d",&o); switch(o) { case 1 : printf("\n 1");opt = false;break; case 2 : printf("\n 2");opt = false;break; case 3 : printf("\n Adeus e Obrigado!");getchar();opt = false;break; case 4 : system("cls");creditos();opt = false;break; default : printf("Escolha incorrecta");system("cls"); } getchar(); } } ora e antes tenho declarada esta função void creditos() { printf("\n Laboratorios de Comunicacoes"); printf("\n\n Elementos Grupo 108"); printf("\n -48044 ; Frederico Malaca"); printf("\n -48048 ; Jose Miguel"); printf("\n -48062 ; Tiago Enes"); printf("\n Pressione uma tecla para voltar para o menu principal"); getchar(); } tipo quero voltar para o menu principal :S mas não consigo , como posso fazer isso? obrigado
Ped@ntilva Posted December 5, 2006 at 07:06 PM Report #68965 Posted December 5, 2006 at 07:06 PM Eu aconselho a criares uma função chamada menuPrincipal e colocares lá o código que crias-te.
funky_vibes Posted December 5, 2006 at 07:22 PM Author Report #68974 Posted December 5, 2006 at 07:22 PM void creditos() { printf("\n Laboratorios de Comunicacoes 1 - 06/07"); printf("\n\n Elementos Grupo 108"); printf("\n -48044 ; Frederico Malaca"); printf("\n -48048 ; Jose Miguel"); printf("\n -48062 ; Tiago Enes"); printf("\n\n Pressione uma tecla para voltar para o menu principal");void escolhe(); getchar(); } void escolhas() { bool opt = true; while (opt == true) { int o; system("cls"); printf("------LC1 06/07 Grupo 108-----"); printf("\n\n Opcoes"); printf("\n\n 1) Abrir e visualizar Netlist"); printf("\n 2) Calculos da Tensao"); printf("\n 3) Sair"); printf("\n 4) Creditos"); printf("\n\n Escolha a opcao desejada: "); scanf(" %d",&o); switch(o) { case 1 : printf("\n 1");opt = false;break; case 2 : printf("\n 2");opt = false;break; case 3 : system("cls");printf("\n Adeus e Obrigado!");getchar();opt = false;break; case 4 : system("cls");creditos();opt = false;break; default : printf("\n Escolha incorrecta,clique para continuar"); getchar(); } getchar(); } } main() { escolhas(); } deste genero? :S assim não me dá nada. da erros
Hipnoted Posted December 5, 2006 at 08:41 PM Report #69004 Posted December 5, 2006 at 08:41 PM Faz assim, em vez do while mete um do{ }while a fazer o ciclo enquanto a opção for diferente de 0. do{ system("cls"); printf("------LC1 06/07 Grupo 108-----"); printf("\n\n Opcoes"); printf("\n\n 1) Abrir e visualizar Netlist"); ...... switch(... ..... }while(op != 0); PS: Usa o GesHI para meter o código fica mais legível. 😉 "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
funky_vibes Posted December 5, 2006 at 10:47 PM Author Report #69051 Posted December 5, 2006 at 10:47 PM ja fiz isso , mas tipo esta-me a dar um bug qualquer! porque quando quero sair ele não sai LOL volta ao menu :\
brink@ero Posted December 6, 2006 at 12:05 AM Report #69076 Posted December 6, 2006 at 12:05 AM Se estás com problemas com menus e submenus, dá uma vista de olhos ao meu post: http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=65147 Espero ter ajudado. Cumpr. bk@ero 😉
rgcaldas Posted December 6, 2006 at 01:05 AM Report #69096 Posted December 6, 2006 at 01:05 AM Se reparares foi o que coloquei em cima. a minha funcao_menu é a tua escolhas. mas em vez de ser void devolve a escolha.
funky_vibes Posted December 6, 2006 at 01:44 AM Author Report #69105 Posted December 6, 2006 at 01:44 AM #include<stdio.h> #include<conio.h> #include<stdlib.h> void creditos() { printf("\n Laboratorios de Comunicacoes 1 - 06/07"); printf("\n\n Elementos Grupo 108"); printf("\n -48044 ; Frederico Malaca"); printf("\n -48048 ; Jose Miguel"); printf("\n -48062 ; Tiago Enes"); printf("\n\n Pressione uma tecla para voltar para o menu principal");void escolhe(); getchar(); } void escolhas() { int o,op; do{ system("cls"); printf("------LC1 06/07 Grupo 108-----"); printf("\n\n Opcoes"); printf("\n\n 1) Abrir e visualizar Netlist"); printf("\n 2) Calculos da Tensao"); printf("\n 3) Sair"); printf("\n 4) Creditos"); printf("\n\n Escolha a opcao desejada: "); scanf(" %d",&o); switch(o) { case 1 : printf("\n 1");getchar();break; case 2 : printf("\n 2");break; case 3 : system("cls");printf("\n Adeus e Obrigado!");getchar();break;system("exit"); case 4 : system("cls"); creditos();getchar(); break; default : printf("\n Escolha incorrecta,clique para continuar"); getchar();getchar(); } }while(op!=0); getchar(); } main() { escolhas(); } tipo , eu ja tenho o programa assim , mas não sai! nao estou a ver porque!
brink@ero Posted December 6, 2006 at 08:05 AM Report #69127 Posted December 6, 2006 at 08:05 AM Não consegues sair por causa disto: case 3 : system("cls");printf("\n Adeus e Obrigado!");getchar();break;system("exit"); 1.º erro: Tu tens um break; antes do system("exit");, por isso a instrução system("exit"); nunca é executada! 2.º erro: Não saias dum programa com um system("exit");, que faz um exit na consola! Isto não faz um exit forçado no programa, mas sim um exit na consola do MS-DOS, fazendo com que a consola seja encerrada. Para sair rapidamente do programa usa a instrução: exit(0); e claro, antes do break; Mas sinceramente aconselho, um op=0, para saíres do teu ciclo e terminares normalmente o programa. Cumpr. bk@ero 😉
TheDark Posted December 7, 2006 at 01:29 AM Report #69288 Posted December 7, 2006 at 01:29 AM Concordo com o que o brink@ero disse. Mas acho estranho que o compilador não se tenha queixado com um warning devido a teres uma instrução que nunca vai ser executada. Desaparecido.
Saco Posted December 7, 2006 at 01:03 PM Report #69324 Posted December 7, 2006 at 01:03 PM Concordo com o que o brink@ero disse. Mas acho estranho que o compilador não se tenha queixado com um warning devido a teres uma instrução que nunca vai ser executada. Provavelmente deu warning, mas como compilou na mesma ele ignorou-o 😄
Warrior Posted December 7, 2006 at 09:05 PM Report #69468 Posted December 7, 2006 at 09:05 PM Para que é "op" e "o" no escolher?
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