Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: >>?<< Добавлено: 01.01.04 23:32  

Автор вопроса:  M@X

Как сделать:

В файле есть большое кол-во числовых значений. Среди них есть одинаковые, как сделать копию этого файла но только с одной копией каждого из значений ?

Например:

Содержание файла(или массива):

456

666

777

888

456

777

333

Нужно:

456

666

777

888

333

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #1
Добавлено: 01.01.04 23:55

Как идея на вскидку

1. прочитать одну строку из файла (или элемент из массива)

2. проверять или числи в стринге функцией InStr

3 если число не встроке, то добавить в строку разделяя числа знаком ";"

4 перейти к пункту 1.

После прочтения всего  файла (или массива) получилась строка содержащая уникальные номера.

Ответить

Номер ответа: 2
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #2 Добавлено: 02.01.04 01:50

У этого алгоритма при всех плюсах(быстро, просто) есть один недостаток, и если его учитывать, то будет нормально работать. А состоит он в следующем:

Если длина чисел разная, то может произойти ситуация:

666778890900

788

и при этом Instr проигнорирует 788, так как оно уже содержится в строке 666778890900. Это можно обойти, сначала отсортировав массив чисел по длине числа(первые элементы должны иметь меньшую длину, т.е. сначала шло 788, а затем 666778890900). Либо довести длину всех чисел до длины максимального, а после отсечения ненужных вернуть исходную длину. А если длина чисел одинаковая, то проблем никаких

Ответить

Номер ответа: 3
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #3
Добавлено: 02.01.04 15:16

Все верно, cresta, если искать число как оно есть.

Но если искать число обрамленое знаками ";", то все будет впорядке.

К примеру,

str будет содежать ";100;10;20;"

а поиск производится следующим образом

InStr(str, ";10;")

Дополнительный плюс, после получения стринга, его легко перевести в массив функцией Split

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 02.01.04 20:53
ОК, берем на заметку

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам