Страница: 1 |
Как сделать: В файле есть большое кол-во числовых значений. Среди них есть одинаковые, как сделать копию этого файла но только с одной копией каждого из значений ? Например: Содержание файла(или массива): 456 666 777 888 456 777 333 Нужно: 456 666 777 888 333
Как идея на вскидку 1. прочитать одну строку из файла (или элемент из массива) 2. проверять или числи в стринге функцией InStr 3 если число не встроке, то добавить в строку разделяя числа знаком ";" 4 перейти к пункту 1. После прочтения всего файла (или массива) получилась строка содержащая уникальные номера. У этого алгоритма при всех плюсах(быстро, просто) есть один недостаток, и если его учитывать, то будет нормально работать. А состоит он в следующем: Если длина чисел разная, то может произойти ситуация: 666778890900 788 и при этом Instr проигнорирует 788, так как оно уже содержится в строке 666778890900. Это можно обойти, сначала отсортировав массив чисел по длине числа(первые элементы должны иметь меньшую длину, т.е. сначала шло 788, а затем 666778890900). Либо довести длину всех чисел до длины максимального, а после отсечения ненужных вернуть исходную длину. А если длина чисел одинаковая, то проблем никаких Все верно, cresta, если искать число как оно есть. Но если искать число обрамленое знаками ";", то все будет впорядке. К примеру, str будет содежать ";100;10;20;" а поиск производится следующим образом InStr(str, ";10;") Дополнительный плюс, после получения стринга, его легко перевести в массив функцией Split Страница: 1 |
Вопрос: >>?<<
Добавлено: 01.01.04 23:32
Автор вопроса: M@X
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #1
Добавлено: 01.01.04 23:55
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 02.01.04 01:50
Номер ответа: 3
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #3
Добавлено: 02.01.04 15:16
Номер ответа: 4
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #4
Добавлено: 02.01.04 20:53
ОК, берем на заметку