Vilarim 0 Denunciar post Postado Outubro 29, 2009 Qual eu digito o valor da opção desejada... o programa somente volta para o menu principal... Exemplo: quando digito 1 em vez de ir para cadastro... volta para o menu Alguem sabe o q esta acontecendo? #include<conio.h> #include<stdio.h> #include<string.> #include<stdlib.h> #define max_cep 9 #define max_fone 12 int main() { int codigo; int aux=1, cont =1; int opcao; char n_serie[15]; int cep[max_cep]; char nome[45]; char email[45]; int fone[max_fone]; char rua[30]; char cidade[30]; char bairro[30]; char n_casa[8]; char aparelho[30]; char descricao[300]; char diagnostico[300]; float valor; do // repete ate que o usuario deseje sair do programa { do // garante que o usuario escolheu uma opção valida { printf("\n********** Menu de Opcoes **********\n\n"); printf(" 1 - Cadastro de Cliente\n"); printf(" 2 - Manutencao \n"); printf(" 3 - Vendas: consoles, jogos ou perifericos \n"); printf(" 4- Alguel de jogos\n"); printf(" 5 - Horas jogadas\n"); printf(" 6 - Fim\n"); printf("\n\n Digite opcao desejada : "); scanf("%d",&opcao); } while (opcao != '1' && opcao != '2' && opcao != '3' && opcao != '4' && opcao != '5' && opcao != '6' && opcao != '7'); switch (opcao) //switch: declaração de decisão de múltipla escolha { //cadastro de cliente case 1: printf("\n Codigo :"); scanf("%d",&codigo); printf("\n Nome do Cliente :"); gets(nome); printf("\n Tefefone :"); scanf("%d",&fone); printf("\n E-mail :"); gets(email); printf("\n Cidade :"); gets(cidade); printf("\n Rua\\ Avenida :"); gets(rua); printf("\n Numero da casa :"); scanf("%s",&n_casa); printf("\n CEP :"); scanf("%d",&cep); break; // sair da estrutura de repetição case 2: printf("\n Codigo :"); scanf("%d",&codigo); printf("\n Numero de serie :"); gets(n_serie); printf("\n Modelo de Aparelho :"); gets(aparelho); printf("\n Descricao do defeito :"); gets(descricao); printf("\n Diagnostico do defeito :"); gets(diagnostico); printf("\n Valor da manuntencao :"); scanf("%f",&valor); break; case 3: printf("\n Codigo :"); scanf("%d",&codigo); break; case 4: printf("\n Codigo :"); scanf("%d",&codigo); break; case 5: printf("\n Codigo:"); scanf("%d",&codigo); break; case 6: default: //se ele não estiver presente, nenhuma ação será realizada se todas as correspondências falharem. printf("\nOpcao invalida. Tente outra vez.\n\n"); } printf("\n"); } while(opcao !=7); getch(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 29, 2009 while (opcao != '1' && opcao != '2' && opcao != '3' && opcao != '4' && opcao != '5' && opcao != '6' && opcao != '7');Nesse seu codigo você esta comparando uma variavel inteira com um char, tire as aspas simples, e veja se funfa! []s Compartilhar este post Link para o post Compartilhar em outros sites
Vilarim 0 Denunciar post Postado Outubro 29, 2009 era esse mesmo o erro...obrigadão Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 29, 2009 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Outubro 29, 2009 Cara, não é por nada não... Mas por que não faz: while (opcao > 7 && opcao < 1) { //... code ... } Compartilhar este post Link para o post Compartilhar em outros sites
Vilarim 0 Denunciar post Postado Outubro 29, 2009 VictorCacciari obrigado pela dica...vou fazer isso sim... Prometo q essa vai ser a ultima vez q pertubo voces com minhas duvidas. é possivel criar um switch dentro d outro? Ou tem alguma foma mais simples q eu posso usar? ...olha o q eu fiz... mas esta dando erro... #include<conio.h> #include<stdio.h> #include<string.> #include<stdlib.h> #define max_cep 9 #define max_fone 12 int main() { int codigo; int aux=1, cont =1; int opcao, opcao2; char n_serie[15]; int cep[max_cep]; char nome[45]; char email[45]; int fone[max_fone]; char rua[30]; char cidade[30]; char bairro[30]; char n_casa[8]; char aparelho[30]; char descricao[300]; char diagnostico[300]; float valor_manutencao, valor_videogame, valor_jogo, valor_periferico; char videogame[15]; char titulo[35]; char periferico[35]; do // repete ate que o usuario deseje sair do programa { do // garante que o usuario escolheu uma opção valida { printf("\n********** Menu de Opcoes **********\n\n"); printf(" 1 - Cadastro de Cliente\n"); printf(" 2 - Manutencao \n"); printf(" 3 - Vendas: consoles, jogos ou perifericos \n"); printf(" 4- Alguel de jogos\n"); printf(" 5 - Horas jogadas\n"); printf(" 6 - Fim\n"); printf("\n\n Digite opcao desejada : "); scanf("%d",&opcao); } while (opcao != 1 && opcao != 2 && opcao != 3 && opcao != 4 && opcao != 5 && opcao != 6); switch (opcao) //switch: declaração de decisão de múltipla escolha { //cadastro de cliente case 1: printf("\n Codigo :"); scanf("%d",&codigo); printf("\n Nome do Cliente :"); gets(nome); printf("\n Tefefone :"); scanf("%d",&fone); printf("\n E-mail :"); gets(email); printf("\n Cidade :"); gets(cidade); printf("\n Rua\\ Avenida :"); gets(rua); printf("\n Numero da casa :"); scanf("%s",&n_casa); printf("\n CEP :"); scanf("%d",&cep); break; // sair da estrutura de repetição case 2: printf("\n Codigo :"); scanf("%d",&codigo); printf("\n Numero de serie :"); gets(n_serie); printf("\n Modelo de Aparelho :"); gets(aparelho); printf("\n Descricao do defeito :"); gets(descricao); printf("\n Diagnostico do defeito :"); gets(diagnostico); printf("\n Valor da manuntencao :"); scanf("%f",&valor_manutencao); break; case 3: do{ // laço de repetição do{ //opção valida printf("\n********** Menu de Vendas **********\n\n"); printf("1 - Consoles \n"); printf("2 - Jogos \n"); printf ("3 - Perifericos \n"); printf("\n\n Escolha uma das opcoes :"); scanf("%d",&opcao2); } while (opcao2 != 1 && opcao2 != 2 && opcao2 != 3); switch (opcao2) { case 1: printf("\n codigo do cliente :"); scanf("%d",&codigo); printf("\n Modelo do Videogame :"); gets(videogame); printf("\n Valor :"); scanf("%f",&valor_videogame); break; case 2: printf("\n codigo do cliente :"); scanf("%d",&codigo); printf("\n Titulo do jogo :"); gets(titulo); printf("\n Valor do jogo :"); scanf("%f",&valor_jogo); break; case 3: printf("\n codigo do cliente :"); scanf("%d",&codigo); printf("\n Nome do periferico :"); gets(periferico); printf("n\ Valor so periferico :"); scanf("%f",&valor_periferico); break; default: printf ("\nOpção inválida. Tente outra vez."); } } break; case 4: printf("\n Codigo :"); scanf("%d",&codigo); break; case 5: printf("\n Codigo:"); scanf("%d",&codigo); break; case 6: default: //se ele não estiver presente, nenhuma ação será realizada se todas as correspondências falharem. printf("\nOpcao invalida. Tente outra vez.\n\n"); } printf("\n"); } while(opcao !=7); getch(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 29, 2009 O problema n está no break. falta você finalizar o primeiro 'do...' do case 3 do primeiro switch. []s Compartilhar este post Link para o post Compartilhar em outros sites
Vilarim 0 Denunciar post Postado Outubro 29, 2009 Deu certo... eu estava colocando uma chave a mais.... Vlw pela ajuda vcs 2.. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 29, 2009 Há e uma coisa lembre-se desse comando: scanf("%s%*c", str); Ele le a string e descarta algum '\n' q estiver "preso"! Você vai precisar! []s Compartilhar este post Link para o post Compartilhar em outros sites