×
Ir ao conteúdo
  • Cadastre-se

Ajuda no uso da função SWITCH em C


ade_diniz

Posts recomendados

Bom pessoal o meu Prof da facu me passou esse seguinte problema para ser resolvido tanto em pseudocodigo qto em C.

Em pseudocodigo é o de menos. Preciso mesmo é ajuda em C.

O Problema é esse.

1) objetivo : o usuário informará cinco times de futebol. Para CADA time informado, o programa deve escrever na tela de qual estado este time é. Caso o time não seja encontrado ( porque OBVIAMENTE eu não espero que vocês conheçam todos os times do Brasil) , o programa deve escrever que o time não foi encontrado.

2) Metas :

2.1 - escrever um algoritmo em portugues estruturado que atenda o objetivo.

2.2 - o algoritmo deve utilizar a MULTIPLA ESCOLHA (Escolha/ Caso) que foi apresentada na última aula.

3) Meta 2 :

3 - para escrever o mesmo algoritmo, será preciso utilizar o comando SWITCH

Preciso de ajuda pessoal..

To tentando fazer primeiro com uma unica opção.. depois é só copiar pra fazer as demais..ficou assim.. mais porém tá tando um erro.

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<math.h>

#include<string.h>

int main(){

char estado;

char palmeiras;

printf("Informe o primeiro time: ");

scanf("%c", &estado);

palmeiras == 1

switch (estado,palmeiras){case 1:

printf("Sao Paulo");

break;

default:

printf("No Consta no nosso banco de dados");

break;

}

system("pause");

return(0);

}

O Erro q tá dando é esse. (na lihha q está em vermelho):

1>------ Build started: Project: TESTE, Configuration: Debug Win32 ------

1>Compiling...

1>main.c

1>c:\users\diniz\documents\visual studio 2008\projects\teste\teste\main.c(10) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1> c:\program files\microsoft visual studio 9.0\você\include\stdio.h(306) : see declaration of 'scanf'

1>c:\users\diniz\documents\visual studio 2008\projects\teste\teste\main.c(12) : error C2143: syntax error : missing ';' before 'switch'1>c:\users\diniz\documents\visual studio 2008\projects\teste\teste\main.c(12) : warning C4553: '==' : operator has no effect; did you intend '='?

1>Build log was saved at "file://c:\Users\Diniz\Documents\Visual Studio 2008\Projects\TESTE\TESTE\Debug\BuildLog.htm"

1>TESTE - 1 error(s), 2 warning(s)

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Link para o comentário
Compartilhar em outros sites

palmeiras == 1

switch (estado,palmeiras) {[COLOR=Red]
[/COLOR] case 1:
printf("Sao Paulo");
break;
default:
printf("No Consta no nosso banco de dados");
}

switch precisa ter um valor, e usar esse valor pra acessar o case.

Esse valor normalmente é do tipo numérico (ou um char, que é convertido pra int).

Então o correto seria:

palmeiras = 1;
switch (palmeiras) {[COLOR=Red]
[/COLOR] case 1:
printf("Sao Paulo");
break;
default:
printf("No Consta no nosso banco de dados");
}

Nesse caso ele vai sempre acessar o case1.

Dependendo do modo como o usuário informar os times, você tem algumas alternativas pra consertar isso.

Por exemplo, se o usuário tiver que digitar o nome dos times, você vai precisar ter esses nomes guardados, pra comparar:

    char time[4][20] = {
"palmeiras", //time[0]
"flamengo", //time[1]
"corinthians", //time[2]
"bahia" }; //time[3]

Quando o usuário digitar um time, você guarda ele numa variavel e compara com os elementos do seu array de times, se achar, você guarda o valor do indice e usa no switch.

char timeDoUsuario[20];
scanf("%s", timeDoUsuario);

for(x=0; x<4; x++)
if (strcmp (timeDoUsuario, time[x]) == 0) break;

switch(x) {
//...
case 4: //não encontrado

Link para o comentário
Compartilhar em outros sites

Que parte não entendeu?

E como ficou o seu codigo depois que alterou?...

Eu só dei a ideia de criar um array com o nome dos times, e daí usar o índice desse array no switch.

Pelo exemplo que eu dei alí em cima, o "case 0" seria palmeiras (então imprime o estado são paulo?), "case 1" flamango (estado rio de janeiro), etc...

Case 4 seria caso o usuário digitasse um time que não está na tua lista.

Link para o comentário
Compartilhar em outros sites

timeDoUsuario é o time que o usuário vai digitar, e você pode comparar ele com os times que você tem na array (usando aquele FOR com o strcmp).

É uma variavel que você vai criar no começo:

char timeDoUsuario[20];

Mas isso é só uma ideia que eu dei. Você pode fazer de outros jeitos.

Link para o comentário
Compartilhar em outros sites

tentei fazer algo e ficou assim..

só q a partir do momento q você escreve o primeiro time.. ele já automaticamente te dar as respostas das outras 4 opções sem nem mesmo você ter digitado..

segue o código..

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<math.h>

#include<string.h>

int main(){

char estado;

char palmeiras;

char corinthias;

char sport;

char coritiba;

char vasco;

printf("Informe o primeiro time: \n");

scanf("%c", &estado);

palmeiras = 1;

switch (estado,palmeiras){

case 1:

printf("\nO PALMEIRAS PERTENCE AO ESTADO DE SAO PAULO\n\n\n");

break;

default:

printf("\nFALHA!\n\n\n");

}

printf("Informe o segundo time: \n");

scanf("%c", &estado);

corinthias = 2;

switch (estado,corinthias){

case 2:

printf("\nO CORINTHIAS PERTENCE AO ESTADO DE SAO PAULO\n\n\n");

break;

default:

printf("\nFALHA!\n\n\n");

}

printf("Informe o terceiro time: \n");

scanf("%c", &estado);

sport = 3;

switch (estado,sport){

case 3:

printf("\nO SPORT PERTENCE AO ESTADO DE PERNAMBUCO\n\n\n");

break;

default:

printf("\nFALHA!\n\n\n");

}

printf("Informe o quarto time: \n");

scanf("%c", &estado);

coritiba = 4;

switch (estado,coritiba){

case 4:

printf("\nO CORITIBA PERTENCE AO ESTADO DE PARAN\n\n\n");

break;

default:

printf("\nFALHA!\n\n\n");

}

printf("Informe o quinto time: \n");

scanf("%c", &estado);

vasco = 5;

switch (vasco){

case 5:

printf("\nO VASCO PERTENCE AO ESTADO DE RIO DE JANEIRO\n\n\n");

break;

default:

printf("Nao Consta no nosso banco de dados");

break;

}

system("pause");

return(0);

}

Link para o comentário
Compartilhar em outros sites

Primeiro, te peço pra ler esse topico:

http://forum.clubedohardware.com.br/tags-code-como/709848

Sobre o codigo, você ainda tá cometendo os mesmos erros.

char estado;

char palmeiras;

char vasco;

Essas variáveis são todas do tipo CHAR, significa que receberão apenas 1 caractere.

printf("Informe o primeiro time: \n");

scanf("%c", &estado);

Você pede pra informar o primeiro time, mas o usuário teoricamente só poderia informar um caractere.

O switch funciona assim:

int x;
scanf("%d", &x);

switch(x) {
case 1: //se o valor de x == 1, executa essa parte
case 2: //se o valor de x == 2, executa essa outra parte
//etc...
}

Te recomendo pegar algum bom livro ou apostila de C e estudar a sintaxe.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.