Как загрузить данные в масив? - страница 2

 
OniNePriletyat:
Не могу записать данные в масив, что не правильно?
int Masiv[];
int i, j;
bool m=true;
 
int start()
  {
   while(m)
     {
      Masiv[i]=j;
      i++;
      j=j+2;
      Print(i-1,"-й элемент масива - ",Masiv[i-1]);
      if(j>=20) break;
     }
   m=false;
   return(0);
  }

Размер массива никак не инициализирован не при компиляции, ни динамически.
 

Тоесть размер масива нужно обязательно указывать. А если его размер точно неизвестен, а данные в масив записываются по ходу работы експерта? Можно, например, объявить размер масива 10, а затем, когда будет записываться 11-й элемент масива, чтобы самый старый элемент удалялся, а новый дописывался (тоесть весь масив как бы смещался при записи новых элементов)? Или, например, размер масива увеличивался бы на один при дописи. Общий размер масива будет около 500 элементов. Это можно как-то организовать?

 
Rosh:
Размер массива никак не инициализирован не при компиляции, ни динамически.


Динамически??? А что значит "динамически"???
 
Можно, например, объявить размер масива 10, а затем, когда будет записываться 11-й элемент масива, чтобы самый старый элемент удалялся, а новый дописывался (тоесть весь масив как бы смещался при записи новых элементов)?

Можно, в цикле перенося значения на соседнее место

Или, например, размер масива увеличивался бы на один при дописи. Общий размер масива будет около 500 элементов. Это можно как-то организовать?

ArrayResize в помощь ;)
 
ОК. Буду пробовать.
 
Получилось :о)
int Masiv[1];
int i, j, k;
bool m=true;
 
int start()
  {
   while(m)
     {
      if(ArraySize(Masiv)==5)
        {
         for(k=0; k<5; k++) Masiv[k]=Masiv[k+1];
         i=4;
        }
      if(ArraySize(Masiv)==i && ArraySize(Masiv)<5) ArrayResize(Masiv,ArraySize(Masiv)+1);
      Masiv[i]=j;
      i++;
      j=j+2;
      if(j>=40) break;
     }
   if(m)
     {
      for(k=0; k<ArraySize(Masiv); k++) Print(k+1,"-й элемент масива - ",Masiv[k]);
      Print ("Размер масива - ",ArraySize(Masiv));
     }
   m=false;
   return(0);
  }
 
На всякий случай - Работа с массивами
 
Re: Rosh: ... Спасибо, просматривал.

Есть еще вопрос. Пробую написать индикатор, это мой первый, писал только експерты. Есть два масива, int masiv1[] - в нем записано время в сек. прошедших с 1970 года. И второй, double masiv2[] - в нем записана цена. Получаются как бы координаты точек. Индикатор заключается в том, чтобы отобразить эти точки на графике в виде ломанной линии. Точки будут находится не на каждом баре. Как правильно организовать эти масивы, чтобы потом по ним можно было нарисовать линию?
 
В индикаторах массив, содержащий "время в сек. прошедших с 1970 года" не нужен, нужен массив , содержащий по номеру бара(индексу) значение цены.
 
Rosh:
В индикаторах массив, содержащий "время в сек. прошедших с 1970 года" не нужен, нужен массив , содержащий по номеру бара(индексу) значение цены.


Огромное спасибо, все понял 8)
Но хочется еще кое-что прояснить. Пока не написал индикатор в виде индикатора (поскольку не умею), то реализовал его в виде експерта, а картинка выглядит так:



Если на рисунке последовательно соединить линиями красные и синие стрелочки, то примерно так и будет выглядеть мой индикатор. Как видно из рисунка, координаты точек есть не на каждом баре. Если записывать значение цен в массив по номеру бара (индексу элемента в массиве), то возникает вопрос, как исключить значения цен на тех барах, на которых их нет (чтобы точки соединялись прямыми линиями)? Эту проблему можно как то решить?
Причина обращения: