Ir para conteúdo
Fórum Script Brasil
  • 0

menus com switch


alecation

Pergunta

estou tentando fazer um switch dentro de outro mas ele passa direto

como eu faco um menu dentro de outro

sou novo com C, obrigado



#include <stdio.h>
#include <stdlib.h>

main (){
char sex,serv,h,m,a,b,c,d;

printf ("(h) ou (m)?\n");
scanf ("%c",&sex);
switch (sex){
case 'h': ("h");break;
case 'm': printf ("a,b,c,d\n");break;
}
scanf ("%c", &serv);
switch (serv) {
case 'a': printf ("a");break;
case 'b': printf ("b");break;
case 'c': printf ("c");break;
case 'd': printf ("d");break;
}
system("pause");
}
[/codebox]

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

você não está informado a variavel "ser", qual valor dela?

scanf ("%c", &serv);
             switch (serv) {
                    case 'a': printf ("a");break;
                    case 'b': printf ("b");break;
                    case 'c': printf ("c");break;
                    case 'd': printf ("d");break;
                    }

Link para o comentário
Compartilhar em outros sites

  • 0

Olá amigo.

Primeiro declare a variavel serv.

Agora, se voce quiser colocar um switch dentro de outro, tente coloca-lo dentro de um dos case do primeiro. Do jeito que está, voce esta declarando dois switch independentes e não um dentro do outro.

alecation, o codigo a seguir foi compilado com exito.

Sugiro tambem colocar um laço do{}while

#include <stdio.h>
#include <stdlib.h>
main ()
{ 
       char sex,serv,h,m,a,b,c,d;         
       printf ("(h) ou (m)?\n");      
       scanf ("%c",&sex);      
       switch (sex)
       { 
           int serv;
           case 'x' :                     
                     scanf ("%c", &serv); 
                     switch (serv)
                     {              
                        case 'a': printf ("a");break;                    
                        case 'b': printf ("b");break;                    
                        case 'c': printf ("c");break;                    
                        case 'd': printf ("d");break;                    
                     }
                     break;                    
                          
           case 'h': ("h");break;             
           case 'm': printf ("a,b,c,d\n");break;
       }
                   
       
                   
      
       system("pause");                    
}

Link para o comentário
Compartilhar em outros sites

  • 0

Olá meu amigo!

Você pode fazer um menu dentro do outro sem ter que usar, necessariamente, um switch dentro de outro.

Dá uma olhada no código-fonte que segue.

Espero poder ter ajudado de alguma forma.


#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define x 3
/*
struct TipoDatFilme
{
int Dia;
int Mes;
int Ano;

};
*/
struct filme
{
char nome[30];
char genero[20];
char atorprincipal[40];
float valor;
//struct TipoDatFilme DataFilme;

};
typedef struct filme reg;


void CadastrarFilme()
{

FILE *filme = fopen("C:\\Filmes\\filme.bin", "w+");

int continuar = 1, opcao;
char nomefilme[40];
reg atributos;


system("cls");

/**/
if(!filme == NULL)
{


printf("\n\n==== BEM-VINDO AO CADASTRO DE FILMES ====");

while(continuar==1)
{

printf("\n\n\n");
printf("\n\n\ INFORME O NOME DO FILME (S - Sair):");
gets(atributos.nome);


if(((strcmp(atributos.nome,"S")==0)||(strcmp(atributos.nome,"s")==0)))
{
continuar = 2;
break;
}

printf("\n\n\ INFORME O GENERO DO FILME (S - Sair): ");
gets(atributos.genero);

if(((strcmp(atributos.genero,"S")==0)||(strcmp(atributos.genero,"s")==0)))
{
continuar = 2;
break;
}
//putc(atributos, *filme);

if(fwrite(&atributos, sizeof(reg),1, filme)!=1)
{
printf("ERRO NA GRAVACAO DOS DADOS");
}
else
{
system("cls");
printf("DADOS GRAVADOS COM SUCESSO!!! (1 - CONTINUAR / 2 - SAIR )");
}

fclose(filme);

}//while


}//if
else
{
printf("não E POSSIVEL CADASTRAR O FILME.");
}

}//void CadastrarFilme()

void MenuFilme()
{
int opcao,continuar = 4;

while (continuar == 4)
{
system("cls");
do
{
printf ("\n\n======= GERENCIADOR DE FILMES ===============");
printf ("\n\n\n 1 - CADASTRAR FILME");
printf ("\n\n\ 2 - LISTAR FILME");
printf ("\n\n\ 3 - BUSCAR FILME");
printf ("\n\n\ 4 - ALTERAR FILME");
printf ("\n\n\ 5 - EXCLUIR FILME");
printf ("\n\n\ 6 - RETORNAR AO MENU ANTERIOR: ");
// printf ("\n\n\n ESCOLHA SUA OPCAO: ");
scanf("%d",&opcao);
system("cls");
}while(opcao < 1 || opcao > 6);

if(opcao ==6)
{
system("cls");
continuar = 3;
}

else
{

switch (opcao)
{



case 1:
CadastrarFilme();
break;
system("cls");
}//switch

} //else


} //while


}//void MenuFilme()

int main(int argc, char *argv[])
{

int opcao, continuar=4;
FILE *filme;


// printf ("\n\n\n\n\======= MENU DE OPCAO =======");

while(continuar == 4)
{
do
{
printf ("\n\n============= SEJA BEM-VINDO ==============\n\n");
printf ("\n\n============ SITEMA DE LOCADORA ===============");
printf("\n\n\n 1 - GERENCIADOR DE FILMES \n\n ");
printf("2 - GERENCIADOR DE CLIENTES \n\n ");
printf("3 - GERENCIADOR DE USUARIOS \n\n ");
printf("4 - GERENCIADOR DE CONFIGURACOES \n\n ");
printf("5 - SAIR DO PROGRAMA");
printf("\n\n\nESCOLHA SUA OPCAO: ");
scanf("%d",&opcao);
}while(opcao < 1 || opcao > 5);

if (opcao == 5)
{
continuar = 3;
}
else
{
switch (opcao)
{
case 1:
system("cls");
MenuFilme();
break;
}
}
}

printf("\n\n");
system("PAUSE");
return 0;
}



[/codebox]

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...