Удаление дубликатов из массива. - страница 4

 
bahko24rus:

Здравствуйте, помогите с проблемой, я создаю 2 массива, 1 строковый, 2 числовой, в строковый записываю пары из обзора рынка, записываются как положено, в цифровой записываю расчитаный размер стоплоса и тут проблема, в тот момент когда ячейка из числового массива соответствующая ячейки из строкового пересчитывается и записывается в массив на свое место, предыдущая ячейка обнуляется, я хочу что бы обнуления не было, но запись идет как положено.

Вот код:

    string mas[100]; 

    for (int i = 0; i < SymbolsTotal(true); i++)

       {

        mas[i] = SymbolName(i, true);

       }

    double mass[100];

    for (int p = 0; p < OrdersTotal(); p++)

       {

        for (int k = 0; k < SymbolsTotal(true); k++)

                       {

                        if (mas[k] != OrderSymbol()) continue;

                           {

                            mass[k] = MathAbs(OrderOpenPrice() - OrderStopLoss());

                           }

                       }

                   }


Создайте один строковой двух-мерный массив, и туда всё записывайте, при получении числовых значений - приведите их к типу double, и никаких проблем. Таким образом, у вас не будет перепутана таблица.

 
Vitaly Muzichenko:

Создайте один строковой двух-мерный массив, и туда всё записывайте, при получении числовых значений - приведите их к типу double, и никаких проблем. Таким образом, у вас не будет перепутана таблица.


Спасибо за совет, к сожалению он не помог, но он решил другую проблему, так что спасибо за помощь, есть еще идеи по моей проблеме?

 
bahko24rus:

Спасибо за совет, к сожалению он не помог, но он решил другую проблему, так что спасибо за помощь, есть еще идеи по моей проблеме?

Никто не знает вашей проблемы, и что вам нужно.

 
Nefedov Kirill:
В массив загоняются данные из файла построчно.
Потом происходит сортировка и т.д. в самом массиве.
Как до сортировки удалить из массива повторяющиеся строки.
Ниже приведу примерт того, что построчно находится в массиве.

3319 602.62 7 0.00 86.09 0.00 0.00
3187 602.62 7 0.00 86.09 0.00 0.00
3165 602.62 7 0.00 86.09 0.00 0.00
3060 602.62 7 0.00 86.09 0.00 0.00
2522 602.62 7 0.00 86.09 0.00 0.00
3903 590.62 6 0.00 98.44 0.00 0.00
3902 590.62 6 0.00 98.44 0.00 0.00
3901 590.62 6 0.00 98.44 0.00 0.00
3900 590.62 6 0.00 98.44 0.00 0.00

после удаления всех повторов должно остаться только

2522 602.62 7 0.00 86.09 0.00 0.00
3903 590.62 6 0.00 98.44 0.00 0.00

С массивами еще плохо разобрался, поэтому прошу помощи.

Unique Sorted Set

на MQL исполняется мучительно больно, через самописные деревья. В некой "стандартной библиотеке" есть соотв.код работы с деревьями. На словах довольно просто - прочёл запись из файла, ищеш её в дереве поиска, если нашёл то ничего (или увеличил счётчик в узле), если не нашёл то добавляешь новый узел.

 
Maxim Kuznetsov:

Unique Sorted Set

на MQL исполняется мучительно больно, через самописные деревья. В некой "стандартной библиотеке" есть соотв.код работы с деревьями. На словах довольно просто - прочёл запись из файла, ищеш её в дереве поиска, если нашёл то ничего (или увеличил счётчик в узле), если не нашёл то добавляешь новый узел.

Закодировать самому двоичную сортировку очень просто, потренировавшись на колоде карт. Там есть старшинство карт по масти: пика, креста, черва, бубна и внутри масти по номиналу. Основной алгоритм, ядро алгоритма, состоит в формировании возрастающей последовательности карт.

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

Формируем две новых пачки до тех пор пока не кончатся карты в исходных пачках:

Старт возрастающей последовательности карт понятен: перекладываем минимальную из исходных карт. Открываем карту под ней.

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

Здесь варианты:

1. Если максимальная из карт в исходных пачках меньше карты в формируемой последовательности, то формирование в этой пачке завершено. Переключаемся на формирование восходящей последовательности карт в другой пачке

2. Иначе Если минимальная из карт больше карты в формируемой последовательности, то перемещаем ее, иначе перемещаем вторую карту.

Карты закончились. Переворачиваем сформированные пачки и поехали снова, до тех пор пока все карты не соберутся в одну пачку.

Количество переворачиваний карт отличается от логарифма по основанию два от числи карт не более, чем на 1. Т.е., для колод карт 36 и 52 не более 7.

 
Vitaly Muzichenko:

Создайте один строковой двух-мерный массив, и туда всё записывайте, при получении числовых значений - приведите их к типу double, и никаких проблем. Таким образом, у вас не будет перепутана таблица.


тогда уж лучше создать массив стркутуры - не нужно будет конвертировать туда/обратно

 
Maxim Kuznetsov:

Unique Sorted Set

Довольно просто реализуется на сортированном массиве. Вставка О(n), поиск О(log(n)), итого O(n^2).
 
Комбинатор:
Довольно просто реализуется на сортированном массиве. Вставка О(n), поиск О(log(n)), итого O(n^2).

дерево быстрее. Там просто O(log(n)).

 
Maxim Kuznetsov:

дерево быстрее. Там просто O(log(n)).

Ага здрасте. А балансировать кто будет? Там тот же O(n)

Хотя ладно, на дереве будет быстрее, но для этого нужна хорошая реализация хорошего дерева.

И еще надо сравнить с реализацией хэшсета.

 
Комбинатор:

Ага здрасте. А балансировать кто будет? Там тот же O(n)

Хотя ладно, на дереве будет быстрее, но для этого нужна хорошая реализация хорошего дерева.

И еще надо сравнить с реализацией хэшсета.

по сравнению с массивом оно точно быстрее :-) А если заранее неизвестен объём данных (число узлов) так вообще по скоростям кроет как бык овцу.