[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 57

 
Sepulca:

Попробуйте так:

https://docs.mql4.com/ru/basis/variables/formal

 

Есть две функции. 
// заполняет массив фракталами, найденными в пределах заданного количества баров
double FractalsUP[], FractalsDN[];
void FractalsMassive(string symb, int timeframe, int bars)
 {
  int fr, frtUP=0, frtDN=0;
  for(fr=3; fr<=bars; fr++)
   {
    if(iFractals(symb,timeframe,MODE_UPPER,fr)>0)
     {
      ArrayResize(FractalsUP,frtUP+1);
      FractalsUP[frtUP]=iFractals(symb,timeframe,MODE_UPPER,fr);
      frtUP++;
     }
    if(iFractals(symb,timeframe,MODE_LOWER,fr)>0)
     {
      ArrayResize(FractalsDN,frtDN+1);
      FractalsDN[frtDN]=iFractals(symb,timeframe,MODE_LOWER,fr);
      frtDN++;      
     }
   }
 }
double ExtremeFractalUP(double& fractalup[])
 {
  int masrange, efup;
  masrange=ArrayRange(fractalup,1);
  
  for(efup=0; efup<masrange; efup++)
   {
    if(fractalup[efup]>fractalup[efup+1])
     {
      return(fractalup[efup]);
     }
    else continue;
   }  
 }

При попытке скомпилировать в эксперте выдает ошибку "FractalsUP - incompatible types" 

   FractalsMassive(Symbol(),0,100);
   double extr=ExtremeFractalUP(FractalsUP[]);

Функции и объявленные массивы хранятся во включаемых файлах, если что. 

 
silhouette:
Учебник читал перед тем как писать, выделенное подчеркиванием видел, но на практике реализовать не удалось - пишет о несовместимом типе. 


Видел рабочий пример передачи параметров значений элементов массивов по ссылке (с префиксом &).

 
silhouette:
Есть две функции. 

При попытке скомпилировать в эксперте выдает ошибку "FractalsUP - incompatible types" 

Функции и объявленные массивы хранятся во включаемых файлах, если что. 

 


Дай бог памяти, вот так должно сработать. По крайней мере компилируется без ошибок:

int start()
{
 double FractalsUP[], FractalsDN[];
 ExtremeFractalUP(FractalsUP);// Передаем ссылку на один массив
 ExtremeFractalUP(FractalsDN);// Передаем ссылку на другой массив
}
//
double ExtremeFractalUP(double& fractalup[]) // В параметрах указываем что будет передаваться ссылка на массив
 {
  int masrange, efup;
  masrange=ArrayRange(fractalup,1);
  
  for(efup=0; efup<masrange; efup++)
   {
    if(fractalup[efup]>fractalup[efup+1])
     {
      return(fractalup[efup]);
     }
    else continue;
   }  
 }
 
Sepulca:


Дай бог памяти, вот так должно сработать. По крайней мере компилируется без ошибок:

 

Спасибо за помощь, с принципом в роде бы разобрался. 
 

Здравствуйте Ув. программисты!

Подскажите, что я делаю не правильно?

У меня есть внешняя переменная типа int, в программе она должна задавать сколько элементов будет в массиве типа double,

делаю так как показано снизу, но компилятор выдает ошибки, уже пробовал внешнюю переменную писать типа double, но всё равно ошибки?

Подскажите пожалуйста. 

extern int       max_count=4;

int start()
{
   static double A[max_count];

 Ошибки

 
SvSerg:

Здравствуйте Ув. программисты!

Подскажите, что я делаю не правильно?

У меня есть внешняя переменная типа int, в программе она должна задавать сколько элементов будет в массиве типа double,

делаю так как показано снизу, но компилятор выдает ошибки, уже пробовал внешнюю переменную писать типа double, но всё равно ошибки?

Подскажите пожалуйста. 

 

Инициализируйте массив явным значением double А[4];

Затем уже изменяйте его размер при помощи ArrayResize();

 
artmedia70:

Инициализируйте массив явным значением double А[4];

Затем уже изменяйте его размер при помощи ArrayResize();



Спасибо! 

Я вот подумал, ведь если инициализировать  пустой массив double А[];  , то в него вроде сколько хочешь можно циклом засунуть? 

Извиняюсь, за нубовские вопросы, но массивы для меня как новичка - это капец какой то. 

 
SvSerg:


Спасибо! 

Я вот подумал, ведь если инициализировать  пустой массив double А[];  , то в него вроде сколько хочешь можно циклом засунуть? 

Извиняюсь, за нубовские вопросы, но массивы для меня как новичка - это капец какой то. 

В любой массив можно напихать сколько памяти хватит, главное не забывать изменять его размер. Особенно, если массив пустой.
 
artmedia70:
В любой массив можно напихать сколько памяти хватит, главное не забывать изменять его размер. Особенно, если массив пустой.


Спасибо ещё раз! Жаль + нельзя поставить.
 

Добрый день!

Уважаемые программисты! Нужно написать эксперт.

Описание имеется.

Какие условия? Какие гарантии?

С уважением, Максим.

Причина обращения: