• Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   14-02-2016

      Prezados membros do Fórum do Clube do Hardware,

      Está aberto o processo de seleção de novos moderadores para diversos setores do fórum. Os requisitos são:
        Pelo menos 1000 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas ao formulário abaixo:    Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
Rogerio_xD

problema com if na linguagem C

13 posts neste tópico

Escreva um programa em C para ler 3 valores (considere que não serão informados valores iguais) e

escrever a soma dos 2 maiores.

void main()

{

int a, b, c, soma;

printf("Digite o primeiro valor: ");

scanf("%d", &a);

printf("Digite o segundo valor: ");

scanf("%d", &B);

printf("Digite o terceito valor: ");

scanf("%d", &c);

if (a > c < B)

soma = a + b;

printf("Soma e: %d", soma);

if (a > b < c)

soma = a + c;

printf("Soma e: %d", soma);

if (b > c < a)

soma = b + a;

printf("Soma e: %d", soma);

if (b > a < c)

soma = b + c;

printf("Soma e: %d", soma);

if (c > b < a)

soma = c + a;

printf("Soma e: %d", soma);

if (c > a < B)

soma = c + b;

printf("Soma e: %d", soma);

return 0;

}

Compilei desse jeito, ele ate faz certo as somas mais ele mostra os 6 jeitos de somas ¬¬. Alguem pode da uma dica ae... talvez eu esteja usando o IF de forma errada. OBRIGADO !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deveria ter um else entre cada um dos ifs?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim mais quando eu coloquei o else, deu erro na compilação !

Se puder dar um exemplo em alguma linha, só pra mim ver como faz, eu ficaria grato !

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, eu tentei e aqui deu erro de sintaxe... já tentou fazer isso com um switch?

Também sou novo na area e não se se daria certo, mas não custa tentar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se os três valores são a, b, c e a soma é s, então:

#define MAX2(M1,M2) ((M1)>(M2))?(M1):(M2))
#define MAX3(N1,N2,N3) MAX2((MAX2((N1),(N2))),(MAX2((N2),(N3))))

s = MAX3(a+b,a+c,b+c);

Por favor, confiram.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro está no if, dá pra ver de cara

um operador relacional não pode ser sobrecarregado,

if(a>c<B) // errado!

sobrecarregar um operador é você utilizá-lo várias vezes em uma expressão, um operador relacional(<, >, >=, <=, ==, !=) não pode ser sobrecarregado.

você pode usar && (E), || (OU), ! (NÃO), operadores lógicos

escreveria os ifs assim,

if(a>c && c<B) // certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você coloca mais de um comando no if, você deve usar chaves {}

if (x>10)

{

printf("X é maior q 10");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou refazer aqui pessoal, valeu pela dica !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apareceu 6 respostas novamente :( . Quero que aparece só uma resposta ...

void main()

{

int a, b, c, soma;

printf("Digite o primeiro valor: ");

scanf("%d", &a);

printf("Digite o segundo valor: ");

scanf("%d", &B);

printf("Digite o terceito valor: ");

scanf("%d", &c);

if (a > b && b > c);

soma = a + b;

printf("Soma e: %d", soma);

if (a > b && b < c);

soma = a + c;

printf("Soma e: %d", soma);

if (a < b && a > c);

soma = b + a;

printf("Soma e: %d", soma);

if (a < b && a < c);

soma = b + c;

printf("Soma e: %d", soma);

if (a < c && a > B);

soma = a + c;

printf("Soma e: %d", soma);

if (a < c && a < B);

soma = c + b;

printf("Soma e: %d", soma);

return 0;

}

Vocês não vão acreditar porque o programa estava mostrando os 6 resultados... era por causa do (;) tpo aqui ou:

if (a < b && a > c); --- > esse (;) erra o problema oO.

soma = b + a;

printf("Soma e: %d", soma);

Descobri na raça, na cagada, na força de vontade, nunca mais vou esquecer disso Putz !

Compartilhar este post


Link para o post
Compartilhar em outros sites

É você colocou ; na frente do if (...).

Mas precisa de seis printf(...)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

#11   Postado (editado)

É você colocou ; na frente do if (...).

Mas precisa de seis printf(...)?

como Listeiro 037 disse, podia ser escrito assim:


void main()
{
int a, b, c, soma;

printf("Digite o primeiro valor: ");
scanf("%d", &a);
printf("Digite o segundo valor: ");
scanf("%d", &;
printf("Digite o terceito valor: ");
scanf("%d", &c);

if (a > b && b > c) soma = a + b;
if (a > b && b < c) soma = a + c;
if (a < b && a > c) soma = b + a;
if (a < b && a < c) soma = b + c;
if (a < c && a > soma = a + c;
if (a < c && a < soma = c + b;

printf("Soma e: %d", soma);
return 0;
}

você pode simplificar esses ifs, é só usar um pouco de lógica

Editado por Dani0liveira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em vez de procurar os dois maiores, procure o menor.


if(a<b && a<c) soma=b+c;
else
if(b<a && b<c) soma=a+c;
else soma=a+b;

Primeiro ele testa se 'a' é o menor.

Se não for, ele teste se é o 'b' o menor.

Ora, se não for 'a' nem o 'b', é o 'c'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow galera valeu pelas dicas ae !

WhiteDog testei a sua logica, deu certin cara !

Pow tu simplifico minha logica demais... curti :D

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