• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Myr

IF's com varias condicoes

3 mensagens neste tópico

Isto eh a coisa mais simples do mundo mas nao funciona nao sei bem porque..

if((boxAux.size != TYPE1) || (boxAux.size != TYPE2) || (boxAux.size != TYPE3))
	c+=1;

if((boxAux.weight < MIN_PESO) && (boxAux.weight > MAX_PESO))
	c+=2;

if((boxAux.max_weight < MIN_SUPORTADO) && (boxAux.max_weight > MAX_SUPORTADO))
	c+=4;

Constantes:

TYPE1 50

TYPE2 75

TYPE3 100

O problema eh, tou numa funcao a validar vários valores, e tenho 3 séries de 'if'

e cada um deles só funciona se tiverem apenas 1 condicao em 1 if, quando tem mais que uma condicao nao compara, ou seja como se o valor estivesse correcto so que nao está, em qualquer um deles

por exemplo, a seguir a primeira validacao com os valores das constantes (TYPE1, TYPE2, TYPE3) que meti em cima:

	
if((boxAux.size != TYPE1) || (boxAux.size != TYPE2) || (boxAux.size != TYPE3))
	c+=1;

Se 'boxAux.size' for 70 deveria ser incrementado 1 valor a 'c' porque eh diferente de TYPE1 ou TYPE2 ou TYPE3, só que nao funciona.

O mesmo acontece com as outras validacoes (ifs), mas se tiver apenas uma condicao (por exemplo ' if(boxAux.size != TYPE1) c+=1; ') ja funciona

weird..

Isto eh um bocado urgente, obgd pa quem rspndr

Alguem me sabe dizer pq?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na verdade a 1ª validação deveria ser sempre verdadeira.

As outras duas, tendo em conta que max>min, deveriam ser sempre falsas.

A primeira condição é equivalente a:

!((boxAux.size == TYPE1) && (boxAux.size == TYPE2) && (boxAux.size == TYPE3))

boxAux.size não pode ser igual a 3 valores ao mesmo tempo, logo é falso. E negando, é sempre verdadeiro.

As outras condições. Um numero não pode ser menor que o minimo e maior que o maximo ao mesmo tempo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epa lol, ya tens razao, o primeiro nao tava mesmo a ver o que era os outros foi mesmo de tar ja a pensar em muita coisa ao mesmo tempo, ja corrigi e estah a funcionar, thanks!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora