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

Хэш-таблица - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ работа с файлами http://www.cyberforum.ru/cpp-beginners/thread218395.html
всем преет! есть ли возможность в файл вывести только тот текст который мне нужен т.е мне нужно вывести только cout<<wrift;( в самом конце эта команда вывести нужно все данные в переменной) и можно...
C++ =( Уважаемые программисты. В универе задали написать программу на си, а этот язык я знаю плохо. Помогите пожалуйста). Суть программы: После запуска программы, нужно ввести ряд символов. Затем следует... http://www.cyberforum.ru/cpp-beginners/thread218391.html
Дружественная функция C++
Здастье,у меня вопрос. Как через дружественую ф-ю сравнить две символьные строки но использовать стандартную ф-ю strcmp нельзя. Можна ли какнибудь сравнить длинну первой и второй строки или как (пишу...
Четырехугольник C++
Я с OpenGL работаю не так давно и вот появился вопрос как нарисовать четырехугольник с помощью OpenGL?
C++ Подсчитать количество простых чисел в произвольном интервале http://www.cyberforum.ru/cpp-beginners/thread218369.html
Подсчитать количество простых чисел в произвольном интервале. Границы интервала задаются с клавиатуры. #include<iostream> using namespace std; int main() { int min, max; cout <<...
C++ Как настроить формат вывода символов в файл, используя fputc? Пишу программу которая бы предоставленный файл с С++ кодом форматировала стцупенчатой аннотацией. Т.е. после '{' увеличиваем отступ, после '}' уменьшаем и т.д. ... вот набросок, почему - то при... подробнее

Показать сообщение отдельно
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
24.12.2010, 14:13  [ТС]
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
#include "stdafx.h"
#include "string.h"
#include "iostream"
#include "conio.h"
#include "locale.h"
 
using namespace std;
 
const int m=6;
const int a=127;
int c1=5, c2=3, g=0;
char*  H[m]={0};
char k[];
 
 
int h1(char s[],int n)
{
    if (n>0) return ((a*h1(s, n-1))+s[n-1])%m;
        else return 0;  
};
 
int h(char k[], int i, int n)
{
    if(i<(m-1)) return ((h1(k, n)+c1*i+c2*i*i)%m);
    else return 0;
};
 
int Hash_Insert(char* H[m], char k[]) //вставка элемента
{
    int i=0; //номер иследования
    do
    { int n = strlen(k);
        int j=h( k, i, n);
        {
            if(H[j]==NULL) 
                {
                     H[j]=k;
                     cout << j << endl;
                    
                        g++;
                     cout << "количество элементов в таблице" << endl;
                     cout << g << endl;
                     if(g==m/2 && H[j]!=0)
                     {
                                            char** u = new char* [2*m];
                                            cout << "увелечение хэш таблицы в двое:" << endl;
                                            for(i=0; i<m; i++)
                                            {
                                                if(H[i]!=NULL)
                                                    Hash_Insert(u, H[i]);
                                                    cout << i << endl;
                                            }   
                     }
                return j;
                }
                else i++;
        }
    }
    while(i!=m);
        return NULL;
};
 
 
int Hash_Search(char* H[m], char k[])// поиск элемента
{
    int i=0;
    int j=0;
    do
    {
    int n = strlen(k);
         j=h(k, i, n);
        if(H[j]!=0 && strcmp(H[j],k)==0){
            cout<<" "<< endl;
        cout << j << endl;
        return j;}
        else i++;   
    }
    while(H[j]!=NULL && i!=m);
        return -1;
};
 
 
int _tmain()
{   setlocale (LC_ALL, "Russian");
    char a[m]="asy";
    int r=h1(a, 3);
    cout << "Вывод h1:" << endl;
    printf("%d\n",r);  // вывод h1
    int e=h("asy", 0, 3);
    cout << "Вывод h:" << endl;
    printf("%d\n", e);
 
cout << "Вывод вставки asy:" << endl;
    Hash_Insert(H, "asy");
cout << "Вывод вставки asyi:" << endl;
    Hash_Insert(H, "asyi");
cout << "Вывод вставки asyo:" << endl;
    Hash_Insert(H, "asyo");
cout << "Вывод вставки asyp:" << endl;
    Hash_Insert(H, "asyp");
 
cout << "\nВывод поиска asyo:" << endl;
    Hash_Search(H, "asyo");
 
 
 
    _getch();
    return 0;
}
Вот, добавила условие на увеличение хэш-таблицы
C++
1
2
3
4
5
6
7
8
9
10
11
 if(g==m/2 && H[j]!=0)
{
      char** u = new char* [2*m];
cout << "увелечение хэш таблицы в двое:" << endl;
            for(i=0; i<m; i++)
                {
                if(H[i]!=NULL)
                Hash_Insert(u, H[i]);
                cout << i << endl;
                }   
                     }
но тут проблемы с тем что мне надо вывести увеличиный массив который содержит эл-ты первоначального массива, а после сделать так что бы массуив увеличенный стал основным - короче я запуталась, помогите кто может, пж

Добавлено через 15 часов 56 минут
неужели никто с массивом помочь 6не может???
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru