Нужна ли независимая проверка продуктов Фриланса? - страница 17

 
TheXpert:
Вот как раз так неправославно вообще-то

Аргументируйте .....

то есть  double  MathAbs(   double  value   ); такая передача не правильная ?

 
VOLDEMAR:
Аргументируйте .....

Что делать с константами и временными значениями?

VOLDEMAR:

то есть  double  MathAbs(   double  value   ); такая передача не правильная ?

Вот как раз так нормально

а void MathAbs(double& value) моск ломает.

 
TheXpert:

Что делать с константами и временными значениями?

Вот как раз так нормально

а void MathAbs(double& value) моск ломает.

Ну время отрицательным по логике не может быть, а отправляя отрицательную константу нужно получить новое положительное значениt в другую переменную, а это уже плодить кучи переменных, вставлять и делать что типа funk(MathAbs(c)) не есть хорошо, как и что то типа funk(int c){ return MathAbs(c); }
 
Я думаю что для каждой ситуации может быть свой вариант ... И уменее выбрать наиболее экономный и быстрый вариант и есть профессионализм ...
 
VOLDEMAR:
Я думаю что для каждой ситуации может быть свой вариант ... И уменее выбрать наиболее экономный и быстрый вариант и есть профессионализм ...

не забываем про удобство использования, в Вашем случае - void Abs(double &x) нельзя с ходу написать любую математическую формулу:

r= | a+b·i |  в mql эта запись эквивалентна: r = MathAbs( a+b*i ) ; 

это очень удобно и читаемо, в Вашем случае формула   r= | a+b·i | будет записана:

tmp = a + b*i;

Abs(tmp);

r = tmp;

или придется изменять порядок вычисления в формуле, что может привести к логическим ошибкам:  

r = a + b*i; 

Abs(r);

 
IgorM:

не забываем про удобство использования, в Вашем случае - void Abs(double &x) нельзя с ходу написать любую математическую формулу:

r= | a+b·i |  в mql эта запись эквивалентна: r = MathAbs( a+b*i ) ; 

это очень удобно и читаемо, в Вашем случае формула   r= | a+b·i | будет записана:

tmp = a + b*i;

Abs(tmp);

r = tmp;

или придется изменять порядок вычисления в формуле, что может привести к логическим ошибкам:  

r = a + b*i; 

Abs(r);

К сожалению тут я Вам не собеседник, кроме мкл4 языков больше не знаю ...
 

а так мона?

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double varx=5.1;
//---
   for(double idx=1.;idx>=-1.;idx-=2.)
     {
      double res=Abs(varx*=idx);
      string out_str=(res<0.)?"<0 : ":">0 : ";
      PrintFormat(out_str+"%0.2f  --> %0.2f",varx,res);
     }
  }
//+------------------------------------------------------------------+
double Abs(double x)
  {
   return x;
  }
//+------------------------------------------------------------------+
 
denkir:

а так мона?

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double varx=5.1;
//---
   for(double idx=1.;idx>=-1.;idx-=2.)
     {
      double res=Abs(varx*=idx);
      string out_str=(res<0.)?"<0 : ":">0 : ";
      PrintFormat(out_str+"%0.2f  --> %0.2f",varx,res);
     }
  }
//+------------------------------------------------------------------+
double Abs(double x)
  {
   return x;
  }
//+------------------------------------------------------------------+

Вам можно, но я бы не стал у Вас заказывать в фриланс - не знаю почему, но считаю плохим тоном программирования использование оператора for для итераций с вещественными числами, как сказали выше - неправославно все это, хотя может я и не прав

double Abs(double x) {
   return(x<0 ? -x : x);
}
 
IgorM:
Вам можно, но я бы не стал у Вас заказывать в фриланс

Спасибо! А аргументы?

 
denkir:

Спасибо! А аргументы?

обновил свое сообщение - не люблю замысловатые конструкции в for - используйте while - хотя наверное это из книг, там всегда все наглядно

ЗЫ: аргумент один - Вы выложили непроверенный и нерабочий код ))))

2015.01.27 19:23:42.335 test (EURUSD,H1) <0 : -5.10 --> -5.10
2015.01.27 19:23:42.335 test (EURUSD,H1) >0 : 5.10 --> 5.10