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

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