Página 1 de 1

Matematica for dummie !!

MensagemEnviado: 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 !!

MensagemEnviado: 12 Fev 2014 20:14
por cfreund
(float)(maior / menor) > 1.25

Ou

(maior - menor) > (maior / 5)

Re: Matematica for dummie !!

MensagemEnviado: 12 Fev 2014 21:49
por andre_luis
if ( maior - ( menor+menor+menor+menor+menor ) > menor )

Re: Matematica for dummie !!

MensagemEnviado: 14 Fev 2014 08:12
por fabim
obrigado pessoal;
float)(maior / menor) > 1.25

Resolveu tranquilo !

Re: Matematica for dummie !!

MensagemEnviado: 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 !!

MensagemEnviado: 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 !!

MensagemEnviado: 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 !!

MensagemEnviado: 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 !