Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vilarim

[Resolvido] Switch

Recommended Posts

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.