Убрать из Массива нулевые значения - страница 3 123456 Новый комментарий Alexey Viktorov 2017.09.01 10:51 #21 Alexandr Andreev: Этож в учебниках должно быть разобрано уже много раз.... Свой вариант - не претендую на хорошестьно вроде норм, один цикл и одно условиеЗамечательный пример как делать не надо...Весь массив, в результате такого колдовства, заполняется значением нулевого индекса массива. Alexey Viktorov 2017.09.01 10:52 #22 STARIJ:Мне на днях 76 будет, а Вам?Действительно старый... Мне всего 63. Konstantin Erin 2017.09.01 10:53 #23 Alexandr Andreev: Этож в учебниках должно быть разобрано уже много раз.... Свой вариант - не претендую на хорошестьно вроде норм, один цикл и одно условиеПишет array out of range вот здесь: else src[i-n]=src[i]; Konstantin Erin 2017.09.01 11:07 #24 int n = -1, size = ArraySize(src); if (src[i]==0) n++; else src[i-n]=src[i]; // при i=0 src[i]=1 и оно копируется в src[i-n] = src[2] и весь массив заполняется 1 единицами Valeriy Korobeynik 2017.09.01 11:37 #25 Проще всего пользоваться СБ#include <Arrays\ArrayInt.mqh> void OnStart() { CArrayInt arr; arr.Add(1); arr.Add(4); arr.Add(2); arr.Add(0); arr.Add(0); arr.Add(5); arr.Add(0); arr.Add(3); arr.Add(0); for(int i=0; i<arr.Total(); i++) if(arr.At(i)==0) arr.Delete(i); Print(arr.Total()); } Dmitry Fedoseev 2017.09.01 11:44 #26 Valeriy Korobeynik: Проще всего пользоваться СБНерационально. При каждом удалении выполняется смещение всех оставшихся данных в массиве. Здесь правильный ответ уже дан во втором комменте, правда с ошибкой в коде... но там делов то, исправить. Valeriy Korobeynik 2017.09.01 11:56 #27 Зависит от того, нужна копия без нулей, или лучше текущий править. Для копи так#include <Arrays\ArrayInt.mqh> void OnStart() { CArrayInt arr,arr1; arr.Add(1); arr.Add(4); arr.Add(2); arr.Add(0); arr.Add(0); arr.Add(5); arr.Add(0); arr.Add(3); arr.Add(0); for(int i=0; i<arr.Total(); i++) if(arr.At(i)!=0) arr1.Add(arr.At(i)); Print(arr1.Total()); } Alexandr Andreev 2017.09.01 11:56 #28 STARIJ: Пишет array out of range вот здесь: else src[i-n]=src[i]; Исправил - проверяй, повторюсь написал код с телефона, с машины Konstantin Erin 2017.09.01 12:08 #29 Alexandr Andreev: Исправил - проверяй, повторюсь написал код с телефона, с машиныуже сыт этой задачей Vitaly Muzichenko 2017.09.01 12:19 #30 STARIJ: уже сыт этой задачейНе пропустили моё сообщение, или уже не актуально? 123456 Новый комментарий
Этож в учебниках должно быть разобрано уже много раз....
Свой вариант - не претендую на хорошесть
но вроде норм, один цикл и одно условие
Замечательный пример как делать не надо...
Весь массив, в результате такого колдовства, заполняется значением нулевого индекса массива.
Мне на днях 76 будет, а Вам?
Действительно старый... Мне всего 63.
Этож в учебниках должно быть разобрано уже много раз....
Свой вариант - не претендую на хорошесть
но вроде норм, один цикл и одно условие
Проще всего пользоваться СБ
Нерационально. При каждом удалении выполняется смещение всех оставшихся данных в массиве.
Здесь правильный ответ уже дан во втором комменте, правда с ошибкой в коде... но там делов то, исправить.
Пишет array out of range вот здесь: else src[i-n]=src[i];
Исправил - проверяй, повторюсь написал код с телефона, с машины
уже сыт этой задачей
уже сыт этой задачей
Не пропустили моё сообщение, или уже не актуально?