Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Помогите сделать поиск хешированием


Автор: Vadv 25.3.2008, 15:53
Содержащий информацию о вершинах горного массива:
название вершины,высота над уровнем моря,категория сложности (от 1 до 5),лучшее время(месяц) для восхождения.Реализовать возможность 
поиска по названию вершины(хешированием) .
Код

#include <stdio.h>
#include <string>
using namespace std;
class CMountain
{
public:
    string mountName[25];
    int height;
    int compl;
    int month;
};
void main()
{
    int const c=2;
    CMountain p[c];
    int compl[c],y[c];
    int height[c],Hy[c];
    for(int i=0;i<c;i++)
    {
        printf("Mountain %d.\n",(i+1));
        printf("Enter name of mountain:");
        scanf("%s",&p[i].mountName);
        printf("Mountain height:");
        scanf("%d",&p[i].height);
        height[i]=p[i].height;
        p[i].compl=0;
        y[i]=i;
        Hy[i]=i;
        while((p[i].compl<1)||(p[i].compl>5))
        {
            printf("Mountain complication(1-5):");
            scanf("%d",&p[i].compl);
            compl[i]=p[i].compl;
            if((p[i].compl<1)||(p[i].compl>5))
                printf("Enter number of 1 to 5.\n");
        }
        p[i].month=0;
        while((p[i].month<1)||(p[i].month>12))
        {
            printf("Best month to mountaineer:");
            scanf("%d",&p[i].month);
            if((p[i].month<1)||(p[i].month>12))
                printf("Please enter the correct month.\n");
                
        }
    }

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

Автор: Lazin 25.3.2008, 16:45
Цитата(Vadv @  25.3.2008,  15:53 Найти цитируемый пост)
string mountName[25];

эээ у горы 25 названий..?

Автор: korian 25.3.2008, 17:02
Цитата(Lazin @  25.3.2008,  15:45 Найти цитируемый пост)
эээ у горы 25 названий..? 

 smile  smile  smile маладец

2 Vadv, не понятно что вы хотите, захешировать данные или написать бинарный поиск?
что есть поиск хешированием

Автор: Vadv 25.3.2008, 17:39
насчет 25 названий ступилsmile , сорри,
насчет хеширования, 
в задании надо организовать поиск по названию вершины,  с помощью хиширования, предполагаю что это бинарный поиск тогда, просто сам термин мне мало знаком...

Автор: Rififi 25.3.2008, 17:47
можно воспользоваться контейнером hash_map (если реализация его поддерживает)

struct mountain {};

stdext::hash_map<std::string, mountain>
соответственно хэш для ключа будет создаваться автоматически.

Автор: archimed7592 25.3.2008, 17:49
Vadv, давай так, либо ты говоришь, в чём у тебя конкретно сложность, а мы подсказываем тебе, как двигаться дальше, либо я перемещаю тему в ЦП, где за тебя сделают всё задание(возможно, а возможно - не сделают).


Цитата(korian @  25.3.2008,  17:02 Найти цитируемый пост)
что есть поиск хешированием 

Ну это когда есть некое множество, в котором необходим очень быстрый поиск(со сложностью O(1)) - составляется хэш-таблица, поиск по которой можно делать очень быстро. Подробнее на algolist.manual.ru

Автор: Vadv 25.3.2008, 18:35
archimed7592, мне надо разобраться как произвести поиск с помощью хеширования, не просто выполнить задание...

Автор: archimed7592 25.3.2008, 18:39
Vadv, ну хэш-таблицы - это целая лекция(а то и две) в примитивном курсе программирования. Очевидно, что никто лекций читать здесь не будет - либо просто сделают за тебя задание, либо ответят на непонятные для тебя моменты в области хэширования. Прочитай про хэш-таблицы: http://algolist.manual.ru/ds/s_has.php и спрашивай, что непонятно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)