Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> хэширование 
:(
    Опции темы
pepperoni
Дата 6.5.2015, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.5.2015

Репутация: нет
Всего: нет



Задача: разработать приложение для более быстрого, индексированного поиска файлов по заданному пользователем имени. Индексирование и поиск выполнять в пределах указанной пользователем папки.
1). Разработайте хеш-функцию для получения хеш-кода входной строки (пути и имени файла). Используйте подход контрольной суммы для кодов символов по основанию 255 (тип Byte).
2) Разработайте функцию формирования хеш-таблицы с коллекциями. Входной аргумент - имя стартовой папки. Результат работы - массив arrRes(255) As Collection
PM MAIL   Вверх
Akina
Дата 6.5.2015, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



И чё? задание понять не можешь?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
pepperoni
Дата 6.5.2015, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.5.2015

Репутация: нет
Всего: нет



вот у меня есть модуль:
Код

Private arrRes(255) As Collection
    ' Подготовка Хеш-таблицы
    ' Вход - имя папки с которой начинаем обработку файлов и всех вложенных подпапок
    Public Sub PrepareHashTable(ByVal strFolder As String)
        Dim strS As String
        Dim bHash As Byte
        Console.Write(".")
        ' Цикл по файлам в папке
        For Each strS In Directory.GetFiles(strFolder)
            ' !!!!!!!!!!!! Здесь должен быть Ваш код        
 
        Next
 
        ' Фикл по подпапкам
        For Each strS In Directory.GetDirectories(strFolder)
            ' !!!!!!!!!!!! Здесь должен быть Ваш код
 
        Next
    End Sub
    ' Возвращает хеш-значение, которая является контрольной суммой кодов символов входной строки по основанию 255
    ' Регистр НЕ учитывается (всегда делается преобразование к верхнему регистру)
    Public Function GetHashCode(ByVal strValue As String) As Byte
        ' !!!!!!!!!!!! Здесь должен быть Ваш код
 
 
    End Function
 End Module

не знаю с чего начать,что нужно первое написать?
PrepareHashTable или GetHashCode?
PM MAIL   Вверх
Akina
Дата 6.5.2015, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Да какая нахрен разница?

Я бы начал с PrepareHashTable, а вместо кода GetHashCode воткнул бы временную затычку, возвращающую любой (строго определённый, воспроизводимо изменяющийся или рандомный - какой захочешь) байт.

Добавлено через 1 минуту и 27 секунд
Вот только в упор не понимаю, за каким рожном тут коллекция. Как на корове седло, ей-бо...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
pepperoni
Дата 6.5.2015, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.5.2015

Репутация: нет
Всего: нет



ну задание такое
PM MAIL   Вверх
pepperoni
Дата 6.5.2015, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.5.2015

Репутация: нет
Всего: нет



неподскажите как написать? smile 
PM MAIL   Вверх
Akina
Дата 8.5.2015, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Здесь - форум. На нём помогают тем, кто делает сам. Придумывайте алгоритм и программируйте его, а мы поможем поправить те моменты, которые работают не так, как хочется.
А те, кто желает не сделать, а получить готовое - те ищут наверху страницы ссылку "Фриланс", создают там заказ и озвучивают бюджет мероприятия.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
pepperoni
Дата 9.5.2015, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.5.2015

Репутация: нет
Всего: нет



 
Код

   Public Sub PrepareHashTable(ByVal strFolder As String)
        Dim strS As String
        Dim bHash As Byte
        Console.Write(".")
        ' Цикл по файлам в папке
        ' !!!!!!!!!!!! Здесь должен быть Ваш код 

        For Each strS In Directory.GetFiles(strFolder)
            bHash = GetHashCode(Path.GetFileName(strS))
            arrRes(bHash).Add(strS)
        Next

        ' Цикл по подпапкам
        For Each strS In Directory.GetDirectories(strFolder)
            ' !!!!!!!!!!!! Здесь должен быть Ваш код
            Try
                PrepareHashTable(strS)
            Catch ex As UnauthorizedAccessException
            End Try : Next
    End Sub

проверьте пожалуста,правильно ли написано?

M
diadiavova
Не забываем использовать теги code

PM MAIL   Вверх
Akina
Дата 9.5.2015, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Нет, неправильно. Вы в цикле ForEach перебираете коллекцию ОБЪЕКТОВ, но в качестве итератора используете не объетные переменные требуемого типа, а скалярный String. Ничего хорошего из этого не получится.
Ну и Directory и Path в справке - это не переменные, а указание, объект какого типа тут должен использоваться. И егонадо 1) определить 2) инициализировать.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
diadiavova
Дата 9.5.2015, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Akina @  9.5.2015,  21:41 Найти цитируемый пост)
Вы в цикле ForEach перебираете коллекцию ОБЪЕКТОВ, но в качестве итератора используете не объетные переменные требуемого типа, а скалярный String. Ничего хорошего из этого не получится.
Ну и Directory и Path в справке - это не переменные, а указание, объект какого типа тут должен использоваться. И егонадо 1) определить 2) инициализировать.

Path, Directory.
Это классы, содержащие наборы статических методов для работы с путями и папками соответственно. Ну и в вбнет нет скалярных типов, стринг - это класс, а тот метод, который он форичит действительно возвращает массив строк, так что в этой части он все правильно делает. 
Насчет остального не знаю smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.