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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Структуры. База данных о автомобилях http://www.cyberforum.ru/cpp-beginners/thread857653.html
База данных содержит информацию о автомобилях. Модель (ключевое поле, имеющее уникальное неповторяющиеся значение), производитель (поле используется для отбора элементов), год выпуска и мощность двигателя. Информацию хранить в базе данных структур и обеспечить: 1) Добавление n элементов в базу данных 2) Удаление элемента по значению ключевого поля 3) Вывод всей информации о каком либо...
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 надо как-то исправить код так, чтобы если вдруг в продукте нет одного поля, то и его не должно быть в функции info(). Спасибо заранее за советы#include "stdafx.h" #include <iostream> #include <vector> using namespace std; // Классы всех возможных родов войск class Infantryman { ...
C++ Сравнение строк http://www.cyberforum.ru/cpp-beginners/thread857633.html
Не прибегая к функциям сравнения строк, создайте программу, которая запрашивает у пользователя две строки и производит их сравнение, возвращая 0 , если строки равны,, +1, если первая строка больше второй, и -1 в противном случае. Я не знаю как решить эту задачу без strcmp() Помогите пожалуйста
C++ Массивы. С++ Builder. Вычислить среднее арифметическое элементов матрицы, расположенных на главной диагонали Помогите пожалуйста решить данную задачу...) Вычислить среднее арифметическое элементов матрицы, расположенных на главной диагонали. Вывести элементы, расположенные на главной диагонали. подробнее

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

| 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 - Совпадения
        }
    }
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru