Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1412

 
str+="--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";
 
ANDREY:

Получилось , то что мне нужно

LoY[r] = 1.6104---LoY[r] = 1.6105---LoY[r] = 1.6106---LoY[r] = 1.6107---LoY[r] = 1.6108---LoY[r] = 1.6109---LoY[r] = 1.6110---LoY[r] = 1.6111....

А можно еще попросить Print(), что бы она еще и вместо [r]  подставляла значения индексов.
Буду очень признателен, если напишете пример такого кода, а не ограничитесь объяснением  на словах.
Спасибо за помощь.

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

 
Aleksei Stepanenko:

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

 
Aleksei Stepanenko:

Внимательно изучил Ваш код. Понял каждый его символ. Не понял только знаки + выделенные красным

str+="--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";
Буду признателен если подскажете какую функцию выполняют эти плюсы и где о них почитать. В учебнике Ковалева информацию о них я не смог найти.
Когда я убирал эти плюсы , компилятор выдавал какие то ошибки. К сожалению я с английским не дружу и поэтому не знаю , что конкретно он имел в виду.

 Еще раз спасибо за информационную поддержку.  

 
ANDREY:

Внимательно изучил Ваш код. Понял каждый его символ. Не понял только знаки + выделенные красным

str+="--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";
Буду признателен если подскажете какую функцию выполняют эти плюсы и где о них почитать. В учебнике Ковалева информацию о них я не смог найти.
Когда я убирал эти плюсы , компилятор выдавал какие то ошибки. К сожалению я с английским не дружу и поэтому не знаю , что конкретно он имел в виду.

 Еще раз спасибо за информационную поддержку.  

А вот объяснения словами это пожалуйста………

Если складывать числа, например 2.3+3.6 то будет так-же число, 5.9, а если складывать строки DoubleToString(2.3, 1)+ DoubleToString(3.6, 1) то будет 2.33.6 в виде строки.

 

Верно Алексей сказал, это просто сложение строк.

Вот это может быть Вам интересным:

a+=4; -это тоже самое, что и a=a+4;
по аналогии:
a-=4;
a*=4;
a/=4;

a++; - означает a=a+1;
a--;

 
Alexey Viktorov:

А вот объяснения словами это пожалуйста………

Если складывать числа, например 2.3+3.6 то будет так-же число, 5.9, а если складывать строки DoubleToString(2.3, 1)+ DoubleToString(3.6, 1) то будет 2.33.6 в виде строки.

Спасибо за подсказку

 
Aleksei Stepanenko:

Верно Алексей сказал, это просто сложение строк.

Вот это может быть Вам интересным:

Спасибо за подсказку.

 
Alexey Viktorov:

А вот объяснения словами это пожалуйста………

Если складывать числа, например 2.3+3.6 то будет так-же число, 5.9, а если складывать строки DoubleToString(2.3, 1)+ DoubleToString(3.6, 1) то будет 2.33.6 в виде строки.

То есть на каждой итерации значение строки LoY["IntegerToString(r)"] увеличивается на 1 и значение строки DoubleToString(LoY[r],4) увеличивается на 1.

Но увеличение на 1 оформляется не так как я привык  LoY["IntegerToString(r)"] ++; Но увеличение на 1 оформляется по особому  LoY["+IntegerToString(r)+"], то есть переменная помещается между плюсами.

Тогда как же нужно оформлять увеличение строковой переменной не на 1, а на 2? В обычном варианте это увеличение оформляется ПЕРЕМЕННАЯ +=2. А как увеличение на 2 нужно оформлять в моем коде?

А в дальнейшем значения элементов моего массива будут идти вообще вразнобой, а не в строгой последовательности как сейчас. Например будет так....

LoY[0]= 1.6104, LoY[1]= 1.6114 , LoY[2]= 1.6100 , LoY[3]= 1.6120, LoY[4]= 1.6115, LoY[5]= 1.6115, LoY[6]= 1.6098,  LoY[7]= 1.6085, LoY[8]= 1.6125,..... и так далее. То есть, эти значения будут присваиваться элементам массива в другой части кода и не обязательно при помощи цикла.
При помощи коннектации строковых переменных корректно отображать такую последовательность в функции Print() вряд ли получится..... как мне кажется.


Спасибо за помощь.

 
ANDREY:

То есть на каждой итерации значение строки LoY["IntegerToString(r)"] увеличивается на 1 и значение строки DoubleToString(LoY[r],4) увеличивается на 1.

Но увеличение на 1 оформляется не так как я привык  LoY["IntegerToString(r)"] ++; Но увеличение на 1 оформляется по особому  LoY["+IntegerToString(r)+"], то есть переменная помещается между плюсами.

Тогда как же нужно оформлять увеличение строковой переменной не на 1, а на 2? В обычном варианте это увеличение оформляется ПЕРЕМЕННАЯ +=2. А как увеличение на 2 нужно оформлять в моем коде?

А в дальнейшем значения элементов моего массива будут идти вообще вразнобой, а не в строгой последовательности как сейчас. Например будет так....

LoY[0]= 1.6104, LoY[1]= 1.6114 , LoY[2]= 1.6100 , LoY[3]= 1.6120, LoY[4]= 1.6115, LoY[5]= 1.6115, LoY[6]= 1.6098,  LoY[7]= 1.6085, LoY[8]= 1.6125,..... и так далее. То есть, эти значения будут присваиваться элементам массива в другой части кода и не обязательно при помощи цикла.
При помощи коннектации строковых переменных корректно отображать такую последовательность в функции Print() вряд ли получится..... как мне кажется.


Спасибо за помощь.

Функции IntegerToString() и DoubleToString() всего лишь представляют число в виде строки которое передано в функцию. Вот в примере

как раз и происходит перевод числа r в строку и строки «складываются». Но перед этим значение r меняется.

Я не совсем понял вопрос, но если надо сделать чтобы выбрать из массива только чётные элементы, то цикл надо строить так

for(int i = 0; i <= 30; i+=2)


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