Ir ao conteúdo
  • Cadastre-se
Paulo Roberto Lobo

C RESOLVIDO Problema com o IF ELSE

Recommended Posts

Tenho que fazer um programa que receba um ano digitado pelo usuário. Se nesse ano houve copa, o programa tem que apresentar a seleção vencedora do ano. Caso o ano digitado pelo usuário não foi ano de copa, o programa apresenta a mensagem "Não aconteceu Copa do Mundo nesse ano."

 

O problema está no fato de que o programa não está passando do if, ou seja, está apresentando somente a mensagem acima citada, mesmo quando um ano em que houve copa é digitado. 

 

Pra ficar bem claro, um exemplo. Seu digitasse 2002, o programa deveria apresentar a mensagem "Brasil". Mas, ao invés disso, "Não aconteceu Copa do Mundo nesse ano." é apresentado. 

 

O código segue abaixo: 

#include <stdio.h>
main ()

{int num1;

 printf ("Insira um ano qualquer: ");
 scanf ("%d", &num1);

 if (num1!=1930 || num1!=1934 || num1!=1938 || num1!=1950 || num1!=1954 || num1!=1958 || num1!=1962 || num1!=1966 || num1!=1970 || num1!=1974 || num1!=1978 || num1!=1982 || num1!=1986 || num1!=1990 || num1!=1994 || num1!=1998 || num1!=2002 || num1!=2006 || num1!=2010)
     printf ("Nao aconteceu Copa do Mundo nesse ano.");
 else
 {
     if (num1==1930)
     printf ("Uruguai.");
     if (num1==1934)
     printf ("Italia.");
     if (num1==1938)
     printf ("Italia.");
     if (num1==1950)
     printf ("Uruguai.");
     if (num1==1954)
     printf ("Alemanha Ocidental.");
     if (num1==1958)
     printf ("Brasil.");
     if (num1==1962)
     printf ("Brasil.");
     if (num1==1966)
     printf ("Inglaterra.");
     if (num1==1970)
     printf ("Brasil.");
     if (num1==1974)
     printf ("Alemanha Ocidental.");
     if (num1==1978)
     printf ("Argentina.");
     if (num1==1982)
     printf ("Italia.");
     if (num1==1986)
     printf ("Argentina.");
     if (num1==1990)
     printf ("Alemanha Ocidental.");
     if (num1==1994)
     printf ("Brasil.");
     if (num1==1998)
     printf ("Franca.");
     if (num1==2002)
     printf ("Brasil.");
     if (num1==2006)
     printf ("Italia.");
     if (num1==2010)
     printf ("Espanha.");
     if (num1==2014)
     printf ("Alemanha.");
 }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde. A comparação está errada. Deveria ser && e não ||.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 minutos atrás, Math.Pi disse:

Boa tarde. A comparação está errada. Deveria ser && e não ||.

Valeu man, funcionou. Mas, na real, eu não entendi porque o || não funciona nesse caso. Buguei um pouco agr.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para que a condição possa ser válida, todos os elementos da condicional terão que ser verdadeiros. Ou seja, o ano tem que ser diferente de 1934 E 1938 E 1942 E 1950 E 1954, etc.

 

No caso de você usar OU ele considerará qualquer qualquer uma das proposições como validação do condicional. O ano deveria ser diferente de 1943 OU 1938 OU 1950, etc. Nesse caso, o 2002 também valida a condição pois é diferente de todos os outros valores. Apesar de não ser diferente de todos os comparativos, ele já satisfaz o condicional por causa do OU.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Math.Pi disse:

Para que a condição possa ser válida, todos os elementos da condicional terão que ser verdadeiros. Ou seja, o ano tem que ser diferente de 1934 E 1938 E 1942 E 1950 E 1954, etc.

 

No caso de você usar OU ele considerará qualquer qualquer uma das proposições como validação do condicional. O ano deveria ser diferente de 1943 OU 1938 OU 1950, etc. Nesse caso, o 2002 também valida a condição pois é diferente de todos os outros valores. Apesar de não ser diferente de todos os comparativos, ele já satisfaz o condicional por causa do OU.

beleza, agr entendi. valeu novamente man.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×