Скачать MetaTrader 5

как сделать переиндексацию массива?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Что происходит в MQL5.community? Раздел Стена ответит на этот вопрос!
sava
46
sava 2015.11.18 08:43 

Добрый день ! ни как не могу сообразить как сделать так то бы по определенному условию происходила перииндексация массива, предыдущее значение должно принять текущее, я сделал вот так поместил в цикл вот это выражение  m[i-1]=m[i], но есть одно "но" он все элементы массива до нулевого заполняет значение текущего(i) , а мне нужен сдвиг , вот так

m[3]=m[i]

m[2]=m[3]

m[1]=m[2]

m[0]=m[1]

 так что бы значения не перезаписывались получается на текущие , а сдвигались просто 

Dmitry Fedoseev
42913
Dmitry Fedoseev 2015.11.18 09:11  
Наверно цикл не в ту сторону крутите. Еще стоит попробовать использовать ArrayCopy(), будет быстрей работать. 
sava
46
sava 2015.11.18 09:36  

да нет все кручу в ту

   while(i!=0)

        {

         mt[i-1]=mt[i];

          i--;


        }

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

Dmitry Fedoseev
42913
Dmitry Fedoseev 2015.11.18 09:55  
Точно не в ту сторону
sava
46
sava 2015.11.18 10:20  

с  чего вы взяли что не в ту, если i=3(к примеру)  то будет предыдущему присваиваться значение текущего

 m[2]=m[3]

m[1]=m[2]

m[0]=m[1] 

sava
46
sava 2015.11.18 10:33  

попробую объяснить наглядней если значения элементов массива к примеру вот такие  m[0]=10, m[1]=20, m[2]=30, m[3]=40

если как сейчас у меня то при индексации получается следующие

m[0]=40

m[1]=40

m[2]=40

m[3]=40

 а мне надо что бы был сдвиг

m[0]=20

m[1]=30

m[2]=40


Dmitry Fedoseev
42913
Dmitry Fedoseev 2015.11.18 10:41  

Сделайте так:

ArrayCopy(m,m,0,1); 

sava
46
sava 2015.11.18 10:50  

пробовал не копирует одинаковые массивы

sava
46
sava 2015.11.18 10:55  

извините первый раз напортачил что то

сейчас заработало, но последнему значению присваивает ноль это меня не устроит 

Dmitry Fedoseev
42913
Dmitry Fedoseev 2015.11.18 11:10  
SAVA:

извините первый раз напортачил что то

сейчас заработало, но последнему значению присваивает ноль это меня не устроит 

 

Так присвойте ему то, что надо.
Dmitry Fedoseev
42913
Dmitry Fedoseev 2015.11.18 11:19  

Или так: 

ArrayCopy(m,m,0,1,ArraySize(m)-1); 

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