чего то не хватает

 

Доброе утро!

Чего то не хватает чтобы получить данные массива 2 прошу подсказать


double t1=1;
double t2=1;
double myMap1 [2];
myMap1 [0]=t1;

myMap1 [1]=t2;
myMap1 [2] = My_function( );
Alert (myMap1 [0]); Alert (myMap1 [1]); // остается без изменений (



return(0); }

double My_function()
{double t3 =10;
double t4 =20;
double myMap2 [2];
myMap2 [0]=t3;

myMap2 [1]=t4;

return (myMap2[2]);}

 
dimmi2000:

Доброе утро!

Чего то не хватает чтобы получить данные массива 2 прошу подсказать


double t1=1;
double t2=1;
double myMap1 [2];
myMap1 [0]=t1;

myMap1 [1]=t2;
myMap1 [2] = My_function( );
Alert (myMap1 [0]); Alert (myMap1 [1]); // остается без изменений



return(0); }

double My_function()
{double t3 =10;
double t4 =20;
double myMap2 [2];
myMap2 [0]=t3;

myMap2 [1]=t4;

return (myMap2[2]);}

Выход за пределы массива. Выделенные элементы не существуют, но myMap1[2] (тоже не существует) хотя бы пытается получить значение, а чему равен  myMap2[2] ? В общем случае "мусор".

Что-то не похоже на то, что Вы прочли учебник - я Вам ссылку на массивы оставлял в предыдущей вашей ветке.

Поймите одно: это не экзамены в ВУЗЕ - наскоком или "на шару" не проскочить. Рисковать то своими деньгами будете.

Удачи. 

 
VladislavVG:

Выход за пределы массива. Выделенные элементы не существуют, но myMap1[2] (тоже не существует) хотя бы пытается получить значение, а чему равен myMap2[2] ? В общем случае "мусор".

Что-то не похоже на то, что Вы прочли учебник - я Вам ссылку на массивы оставлял в предыдущей вашей ветке.

Поймите одно: это не экзамены в ВУЗЕ - наскоком или "на шару" не проскочить. Рисковать то своими деньгами будете.

Удачи.


"шары" нет нужно же как то учиться в 45 лет (на макет пришла автоматизация и 11 лет стажа торговли вручную вот это стало "мусором" (((спасибо роботам ))) ...с форумом получается быстрее раз в 10 за что всем откликающимся респект

просто конструкция в

когда t3 и t4 заданы за пределами функции -все работает и расчеты из функции выводятся (контролирую алертами )

myMap [2] - обьявляю массив а ....[0] и [1] его элементы

 
dimmi2000:


"шары" нет нужно же как то учиться в 45 лет (на макет пришла автоматизация и 11 лет стажа торговли вручную вот это стало "мусором" (((спасибо роботам ))) ...с форумом получается быстрее раз в 10 за что всем откликающимся респект

просто конструкция в

когда t3 и t4 заданы за пределами функции -все работает и расчеты из функции выводятся (контролирую алертами )

myMap [2] - обьявляю массив а ....[0] и [1] его элементы


Вы возвращаете значение элемента №2, а такого элемента не существует - Вы для него память не отвели. Существуют элементы 0 и 1 - всего 2-а элемента, как у Вас и описано: double myMap1 [2]; А из double My_function() Вы возвращаете не только не размещенный элемент, но еще и не проинициализированный - Вы ему нигде не присваиваете значения. Хотя, если присвоите, то результата тоже не будет. Чтобы существовал элемент с номером 2 размерность массива должна быть не менее 3-х.

Удачи. 

 
VladislavVG:


Вы возвращаете значение элемента №2, а такого элемента не существует - Вы для него память не отвели. Существуют элементы 0 и 1 - всего 2-а элемента, как у Вас и описано: double myMap1 [2]; А из double My_function() Вы возвращаете не только не размещенный элемент, но еще и не проинициализированный - Вы ему нигде не присваиваете значения. Хотя, если присвоите, то результата тоже не будет. Чтобы существовал элемент с номером 2 размерность массива должна быть не менее 3-х.

Удачи.


double t1=1;
double t2=1;
double myMap1 [1];
myMap1 [0]=t1;
myMap1 [1]=t2;
myMap1 [1] = My_function( );
Alert (t1);Alert (t2);

return(0); }

double My_function()
{double t3 =10;
double t4 =20;
double myMap2 [1];
myMap2 [0]=t3; Alert (t3) ;
myMap2 [1]=t4; Alert (t4) ;

return (myMap2[1]);}

устранил несоразмерность ....10 и 20 не возвращаются ((

 
int start() 
{
  double t1=1;
  double t2=1;
  double myMap1[2];
  myMap1 [0]=t1; 
  myMap1 [1]=t2; 
  myMap1 [1] = My_function( ); 
  Alert (myMap1[0]);
  Alert (myMap1[1]);
  
  return(0); 
}


double My_function() 
{
  double t3 =10; 
  double t4 =20; 
  double myMap2 [1];
  myMap2 [0]=t3; Alert (t3) ;
  myMap2 [1]=t4; Alert (t4) ; 

  return (myMap2[1]);
} 
 

так он вытаскивает t4 только

 

Чтобы существовал элемент с номером 2 размерность массива должна быть не менее 3-х.

Вы символьный массив с числовым не путайте.

 

Вернуть целый массив из функциии - нельзя. ВОзвращение отдельных его элементов - нецелесообразно.

 
Ololo:

Чтобы существовал элемент с номером 2 размерность массива должна быть не менее 3-х.

Вы символьный массив с числовым не путайте.

 

Вернуть целый массив из функциии - нельзя. ВОзвращение отдельных его элементов - нецелесообразно.

 

 


  Поясните в чем разница и заодно что такое символьный массив в МКЛ ? ;)

https://book.mql4.com/ru/basics/types

ЗЫ если для Вас это новость, поскажу в МКЛ нет такого типа ;).... Так что там с массивами ?  

 

int array[2];

Я могу обращаться к элементу с индексом 2 хоть 1000...........................N раз. 

 

char array[2];

А тут последним должен быть символ конца строки(\0).

Правда, возможно в mql4 такого правила нет, поэтому и тут я спокойно обращусь к array[2] =) 

 
int start() 
{
  double t1=1;
  double t2=1;
  double myMap1[2];
  myMap1 [0]=t1; 
  myMap1 [1]=t2; 
  Alert (myMap1[0]);
  Alert (myMap1[1]);

  My_function(myMap1); 
  
  Alert (myMap1[0]);
  Alert (myMap1[1]);
  
  return(0); 
}


void My_function(double & myMap2[]) 
{
  double t3 =10; 
  double t4 =20; 
  myMap2 [0]=t3;   
  myMap2 [1]=t4;  
} 
Как я понял. Товарищ хочет всем элементам массива присвоить значения
Причина обращения: