массив - список значеий

 

Наверно туплю но не пойму как удалять элементы массива чтобы работать со списком не обработаных элементов

например:

 int arTiket[11];
   
   for(int i=1; i<11; i++)
   {
      arTiket[i] = i+100;
      Print("i="+i+"    arTiket[i]="+arTiket[i]);
   }
   

   //но как тут удалить допустим 3-е или 3-е и 4-е значения в массиве чтобы массив соответственно сократился ?
   
   int dim_size=ArrayRange(arTiket, 0);//уже после обработки
   for(int w=1;w<dim_size;w++)
   {
      Print("arTiket[w]="+arTiket[w]);
   }
 

Самый простой и быстрый способ удаления элементов массива - с использованием сортировки:

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

2. Отсортировать массив так, чтобы удаляемые элементы оказались в конце.

3. Уменьшить размер массива на количество удалённых элементов.

 

да и как задать неизвестного размера масив тоже не найду

 
snik_666 писал(а) >>

да и как задать неизвестного размера масив тоже не найду

никак не надо задавать... просто декларируйте безразмерный массив:

int array[];

а перед каждым добавлением нового элемента увеличивайте размер массива на единицу:

int k=ArraySize(array);
ArrayResize(array, k+1);
array[k]=Значение;
 

спасибо. понял! жесть... считать на сколько уменьшить массив после сортировки.

 
snik_666 писал(а) >>

спасибо. понял! жесть... считать на сколько уменьшить массив после сортировки.

хм... жесть! А что бы Вы сказали, если бы Вам перед каждым объявлением переменной приходилось думать о количестве выделяемой памяти? И не забывать освобождать память после использования переменной. Избаловала Вас езда на джипе. Электричка уже и не транспорт.

 
Написал функцию ArrayDeleteInt(). Она удаляет один элемент массива по его индексу и соответственно на единицу уменьшает размер массива.