Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Хеширование элементарной базы данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры. База данных о автомобилях http://www.cyberforum.ru/cpp-beginners/thread857653.html
База данных содержит информацию о автомобилях. Модель (ключевое поле, имеющее уникальное неповторяющиеся значение), производитель (поле используется для отбора элементов), год выпуска и мощность...
C++ Конституционно-правовое законодательство на C++ Здравствуйте! Помогите написать программу на C++ по конституционно-правовому законодательству http://www.cyberforum.ru/cpp-beginners/thread857652.html
C++ Как пересчитать одно в другое?
b|g 0|0000000000 1|0000000001 2|0000000011 3|0000000111 4|0000000101 5|0000000100 6|0000001100 7|0000001101 8|0000001111
C++ Паттерн Builder
Вот у меня есть код примера реализации паттерна Builder(другие примеры не предлагать). В классе Army надо как-то исправить код так, чтобы если вдруг в продукте нет одного поля, то и его не должно...
C++ Сравнение строк http://www.cyberforum.ru/cpp-beginners/thread857633.html
Не прибегая к функциям сравнения строк, создайте программу, которая запрашивает у пользователя две строки и производит их сравнение, возвращая 0 , если строки равны,, +1, если первая строка больше...
C++ Массивы. С++ Builder. Вычислить среднее арифметическое элементов матрицы, расположенных на главной диагонали Помогите пожалуйста решить данную задачу...) Вычислить среднее арифметическое элементов матрицы, расположенных на главной диагонали. Вывести элементы, расположенные на главной диагонали. подробнее

Показать сообщение отдельно
boycott
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 5

Хеширование элементарной базы данных - C++

06.05.2013, 19:23. Просмотров 362. Ответов 0
Метки (Все метки)

Товарищи, усиленно прошу помощи!!!
Часть программы уже написана, но как ее закончить или изменить, чтобы все работало верно я не знаю. Точнее есть идеи, но реализовать я их не могу
Собственно задание
Составить программу для поиска по хэшам данных. В модуле поиска, предусмотреть реализацию обработки случая, при котором хэш-коды различных данных совпадают. Дана таблица текстовой базы данных записями: фамилия; имя; отчество; телефон. Произвести хэширование и поиск по номеру телефона.
База данных

| Pavlov | Alexandr | Sergeevich | 5552001 |
| Zelenov | Pavel | Antonovich | 5352661 |
| Saveliev | Anton | Andreevich | 5562772 |
| Grigoriev | Sergey | Igorevich | 5552996 |
| Petrov | Ivan | Alekseevich | 5227662 |
| Derevtsova | Anna | Alekseevna | 5659887 |
| Yakovleva | Alexandra | Sergeevna | 5237663 |
| Sinyaev | Nikolay | Mihailovich | 4236587 |
| Sergeev | Grigory | Pavlovich | 6548798 |
| Ivanov | Petr | Ivanovich | 7654321 |

Уже написанный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
void file_scan()
{
    char symbol;
    ifstream data;
    cout << "Ваша база данных: " << endl;
    cout << "" << endl;
    data.open("database.txt", ios::binary);
    while(!data.eof())
    {
        data.get(symbol);
        source_text = source_text + symbol;
    }
    source_text.erase(source_text.size()-1,1);
    cout << source_text << endl;
    data.close();
}
void format_file()
{
    for (int i = 0; i < source_text.size(); i++)
    {
        if (source_text[i] == ' ')
        {
            continue;
        }
        new_text = new_text + source_text[i];
    }
    cout << new_text << endl;
}
void telefoni_string()
{
    int kol_razdel=0;
    for (int i = 0; i < new_text.size(); i++)
    {
        if (new_text[i] == '|')
        {
            kol_razdel++;
        }
        if (kol_razdel%(telef_stolb+1) == telef_stolb)
        {
            if (new_text[i] == '|')
            {
                telefoni = telefoni + ' ';
            }
            else
            {
                telefoni = telefoni + new_text[i];
            }
        }
    }
    cout << "Столбец телефонов: " << telefoni << endl;
}
void HASH()
{
    int hash=0;
    for (int i = 1; i < telefoni.size(); i++)
    {
        if ((i == telefoni.size()-1) || (telefoni[i] == ' '))
        {
            if (telefoni[i] == ' ')
            {
                stringstream stream;
                stream << hash;
                string stroka;
                stream >> stroka;
                telefoni_hash = telefoni_hash + stroka + ' ';
                hash = 0;
            }
            if (i == telefoni.size()-1)
            {
                hash = hash + telefoni[i];
                stringstream stream;
                stream << hash;
                string stroka;
                stream >> stroka;
                telefoni_hash = telefoni_hash + stroka + ' ';
                hash = 0;
            }
        }
        else
        {
            hash = hash + telefoni[i];
        }
    }
 
    cout << "Хеш столбца с телефонами: " << telefoni_hash << endl;
}
void search()
{
    string iskomoe = "";
    int iskomoe_hash = 0;
    int ss=0;
    cout << "Введите искомый номер телефона: " ;
    cin >> iskomoe;
    for (int i = 0; i < iskomoe.size(); i++)
    {
        iskomoe_hash = iskomoe_hash + iskomoe[i];
    }
    cout << "" << endl;
    cout << "Хеш искомого номера телефона: " << iskomoe_hash << endl;
    
    for (int i = 0; i < telefoni_hash.size();)
    {
        if (telefoni_hash.find(iskomoe, i) < 6000)
        {
            i = telefoni_hash.find(iskomoe, i) + 1;
            ss++;       // search sovpadeniya - Совпадения
        }
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru