Ir ao conteúdo
  • Cadastre-se

Switch em C


delemar

Posts recomendados

Boa noite!

 

Galera é o seguinte, quero fazer um switch para um menu com opções de 1 a 7 (numeros), porém caso o usuário digite algum caractere diferente de INT, o programa tem q exibir uma mensagem de opção inválida...

 

ALguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

Boa noite!

 

Galera é o seguinte, quero fazer um switch para um menu com opções de 1 a 7 (numeros), porém caso o usuário digite algum caractere diferente de INT, o programa tem q exibir uma mensagem de opção inválida...

 

ALguém pode me ajudar?

 

 

Se você não se importar em usar goto :P acho que esse código que fiz vai servir.

 

Se o usuário digitar qualquer tecla inválida, incluindo letras, o programa volta ao menu inicial e solicita novamente a entrada de dados:

#include <stdio.h>#include <stdlib.h>int main(void){int escolha;inicio:system("cls");printf("\n\n ----------------------- ");printf("\n 1 - Opcao 1 ");printf("\n 2 - Opcao 2 ");printf("\n 3 - Opcao 3 ");printf("\n 4 - Opcao 4 ");printf("\n 5 - Opcao 5 ");printf("\n 6 - Opcao 6 ");printf("\n 7 - Sair do Programa ");printf("\n\n Escolha uma opcao: ");escolha=getchar();switch (escolha){        case 49:        printf("\n\n Opcao escolhida: 1 \n\n");        system("pause");        break;        case 50:        printf("\n\n Opcao escolhida: 2 \n\n");        system("pause");        break;        case 51:        printf("\n\n Opcao escolhida: 3 \n\n");        system("pause");        break;        case 52:        printf("\n\n Opcao escolhida: 4 \n\n");        system("pause");        break;        case 53:        printf("\n\n Opcao escolhida: 5 \n\n");        system("pause");        break;        case 54:        printf("\n\n Opcao escolhida: 6 \n\n");        system("pause");        break;        case 55:        return 0;        break;        default:        goto inicio;        break;    }return 0;}
Link para o comentário
Compartilhar em outros sites

goto é muita gabiarra e não é recomendado fazer isso, pelo menos foi o que sempre me ensinaram...  :huh:

 

Ao invés disso use um do while que fica bem melhor com base no código acima:

 

 do { printf("\n 1 - Opcao 1 ");.....printf("\n 7 - Sair do Programa ");printf("\n\n Escolha uma opcao: ");escolha=getch(); switch (escolha){case '1':case:'2':...} }while(escolha!='7'); 

 

E ao invés de pegar os números 1 ao 7 com os códigos da tabela ASCII, pode colocá-los dessa forma entre apóstrofos que a variável vai pegar os números como se fossem caracteres, mas ainda assim é tipo int. ;) 

Link para o comentário
Compartilhar em outros sites

Bom, você pode utilizar default:

int a;switch(a){     case 1: printf("'a' tem valor 1");     case 2: printf("'a' tem valor 2");     default: printf("'a' tem um valor diferente de 1 e 2");}

Abraços.

 

Só falta uma coisinha: colocar break ao final de cada código case. Senão ele passa reto para o próximo break

Leia mais sobre GOTO: http://www.cs.utexas.edu/users/EWD/transcriptions/EWD02xx/EWD215.html

Link para o comentário
Compartilhar em outros sites

goto é muita gabiarra e não é recomendado fazer isso, pelo menos foi o que sempre me ensinaram...  :huh:

 

Ao invés disso use um do while que fica bem melhor com base no código acima:

 do { printf("\n 1 - Opcao 1 ");.....printf("\n 7 - Sair do Programa ");printf("\n\n Escolha uma opcao: ");escolha=getch(); switch (escolha){case '1':case:'2':...} }while(escolha!='7'); 

E ao invés de pegar os números 1 ao 7 com os códigos da tabela ASCII, pode colocá-los dessa forma entre apóstrofos que a variável vai pegar os números como se fossem caracteres, mas ainda assim é tipo int. ;) 

Perfeito!

 

Obrigado, resolveu meu problema !

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!