Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Тысяча человек уже опубликовали продукты в Маркете. Опубликуй и ты свой!
Semen Aipkin
118
Semen Aipkin 2015.02.26 08:07 

Здравствуйте. Есть одномерный массив. В нем один миллион элементов. В каждом элементе есть числовые значения: нули, единицы, двойки, тройки и т.д.

Подскажите, пожалуйста, можно ли прописать легкий код по сложению всех этих элементов сразу без перечисления каждого? Например, как в Excel, =сумм(А1:А1000000).

Ihor Herasko
8457
Ihor Herasko 2015.02.26 08:31  

Да, можно )))

double GetArraySumm(const double &array[], int startIndex, int endIndex)
{
   int total = (int)MathMin(ArraySize(array) - 1, endIndex);
   double summ = 0.0;  
   for (int i = startIndex; i < total; i++)
      summ += array[i];
      
   return summ;
}

void OnStart()
{
   double myArray[1000000];
   double summ = GetArraySumm(myArray, 0, 999999);                // Вот он - "легкий код" ))
}
Semen Aipkin
118
Semen Aipkin 2015.02.26 08:41  
Спасибо Вам большое. Век живи, век учись. Это я про себя )))).
Semen Aipkin
118
Semen Aipkin 2015.06.22 17:36  

Еще появился вопрос. А возможно ли знак амперсанда, то есть ссылку поставить на определенный массив, это если у меня массивов несколько?

Semen Aipkin
118
Semen Aipkin 2015.06.22 17:38  
Ну то есть на &Myarray, а не на array[].
Ihor Herasko
8457
Ihor Herasko 2015.06.24 07:14  
TerenceHill:

Еще появился вопрос. А возможно ли знак амперсанда, то есть ссылку поставить на определенный массив, это если у меня массивов несколько?

 

Так ведь именно так и делается в приведенном коде. Первый параметр функции - это ссылка на массив. Массив может быть любого размера. Главное, чтобы параметры startIndex и endIndex указывали правильные индексы элементов этого массива, не выходя за его пределы. 

 

P. S. В том коде, который я привел, проверка правильности endIndex сделана, а проверка startIndex не сделана. Ее стоит добавить. 

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий