Matematica for dummie !!

Enviado:
12 Fev 2014 16:44
por fabim
Pessoa.
Se você, é você mesmo!! não, você !!
Tivesse 2 Ushort, e precisasse fazer um calculo bem rápido, para descobrir se existe uma diferença entre eles maior que 20%, para tomar uma decisão.
Como você faria ? não, fica quieto pô, estou falando com você ai !!
Obrigado
Fabim
Re: Matematica for dummie !!

Enviado:
12 Fev 2014 20:14
por cfreund
(float)(maior / menor) > 1.25
Ou
(maior - menor) > (maior / 5)
Re: Matematica for dummie !!

Enviado:
12 Fev 2014 21:49
por andre_luis
if ( maior - ( menor+menor+menor+menor+menor ) > menor )
Re: Matematica for dummie !!

Enviado:
14 Fev 2014 08:12
por fabim
obrigado pessoal;
float)(maior / menor) > 1.25
Resolveu tranquilo !
Re: Matematica for dummie !!

Enviado:
14 Fev 2014 09:02
por cfreund
Vindo de vc, pensei q era alguma pegadinha...rs
Também pode ser feito da seguinte maneira:
- Código: Selecionar todos
uint32_t x;
x = (uint32_t) var1 * 100 / var2;
if (x < 80) { ... } // testa se var1 < 80% de var2.
if (x > 120) { ... } // testa se var1 > 120% de var2.
Re: Matematica for dummie !!

Enviado:
14 Fev 2014 09:27
por fabim
Pegadinha não.
Estou mexendo com 5 produtos para IEC, estou completamente atrapalhado e sem conseguir pensar direito.
Olha só o que eu fiz aqui !!
Funcionou rápido, perfeito!
- Código: Selecionar todos
if(medidas.binario.OXY1 > medidas.binario.OXY2){
if((((float)(medidas.binario.OXY1 / medidas.binario.OXY2)) > 1.25)&&((alarmes.oxy_falta_sens))){
flags.panico.OXYS = 0xff;
}
}else
if(medidas.binario.OXY2 > medidas.binario.OXY1) {
if((((float)(medidas.binario.OXY2 / medidas.binario.OXY1)) > 1.25)&&((alarmes.oxy_falta_sens))){
flags.panico.OXYS = 0xff;
}
}
Re: Matematica for dummie !!

Enviado:
14 Fev 2014 09:43
por cfreund
Já que vc não esta raciocinando, não custa alertar:
Do jeito que você fez, a referência é o número maior.
Se OXY2 = 100, então OXY1 < 80 ou OXY1 > 120.
80 é 20% de 100. E 100 é (100%+25%) de 80
- Código: Selecionar todos
if (alarmes.oxy_falta_sens) {
float val = (float)medidas.binario.OXY1 / medidas.binario.OXY2;
// Testa se OXY1 for menor que 80% de OXY2 ou OXY1 for maior que 120% de OXY2
if( val < 0.8 || val > 1.2 ) flags.panico.OXYS = 0xff;
}
Re: Matematica for dummie !!

Enviado:
14 Fev 2014 10:04
por fabim
cfreund escreveu:Já que vc não esta raciocinando, não custa alertar:
Do jeito que você fez, a referência é o número maior.
Se OXY2 = 100, então OXY1 < 80 ou OXY1 > 120.
80 é 20% de 100. E 100 é (100%+25%) de 80
- Código: Selecionar todos
if (alarmes.oxy_falta_sens) {
float val = (float)medidas.binario.OXY1 / medidas.binario.OXY2;
// Testa se OXY1 for menor que 80% de OXY2 ou OXY1 for maior que 120% de OXY2
if( val < 0.8 || val > 1.2 ) flags.panico.OXYS = 0xff;
}
AHHHHHHHHH tá.
Veja, eu só faço teste para saber se é maior ou menor para efetuar o calculo !!
É que as células PODEM estar exatamente com o mesmo nível de tensão por algum tempo !!
Brigadu !