![]() |
|
Модераторы: Poseidon |
![]()
|
|
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Помогите реализовать наиболее быстрый алгоритм вывода позиций символов в файле.
Входная информация - произвольный файл. Выходная - тоже файл, в котором содержатся записи типа:
все символы 0-255, wide-char разбиваются символы ASCII (0-255). Позиция для записи конкретного символа = разница текущей и предыдущей позиций этого же символа. Определение позиции сивола должно происходить для каждого символа в отдельности, т.е. определить позиции первого сивола, удалить все такие "первые" символы из файла (можно логически), затем определить позиции следующего, удалить его. В итоге входнй файл окажется пустым. Задавайте вопросы. Благодарен за ответ. |
|||
|
||||
| Rodman |
|
|||
|
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 26 Всего: 122 |
tishaishii, c позициями не понятно... позиция в строке или лучше позиция в матрице?!
Добавлено через 11 минут и 33 секунды
так? |
|||
|
||||
| tishaishii |
|
||||||||||||||||||||||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Таак. Попытаюсь обяснить понятнее.
1. Находим самый первый символ в файле, пишем символ. 2. Ищем следующий такой же символ, пишем позицию этого символа в файле в виде ASCII-символов (0-255). 3. Ищем следующий такой же символ, пишем ASCII-символы с кодом "предыдущая позиция минус текущая позиция". 4. И так далее. 5. Удаляем все такие же символы из файла. 6. Находим первый символ в файле....... начинаем с 1го шага, пока файл не станет пустым. Если позиция символа (разность текущей и предыдущей) больше 255, пишем позицию в виде нескольких символов (0-255). Добавлено через 12 минут и 6 секунд Вход:
{chr(x)} - имеется в виду символ с кодом x. 5 и 3 - позиция символа "a", начиная с нулевой позиции. Выход на следующем шаге:
Вход на следующем шаге:
Выход на следующем шаге:
Вход на следующем шаге:
Выход на следующем шаге:
Вход на следующем шаге:
Выход на следующем шаге:
Вход на следующем шаге:
Выход на следующем шаге:
Вход на следующем шаге:
Если разница текущей и предыдущей позиций символа больше 255, надо писать столько символов ASCII(0-255), сколько потребуется. |
||||||||||||||||||||||
|
|||||||||||||||||||||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |