Форум программистов, компьютерный форум 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
26.12.2010, 18:49  [ТС]
Теперь у меня почему то возникает отрицательная длина строки,.. я в ступоре, с чем это может быть связано/???

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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "stdafx.h"
#include "string.h"
#include "iostream"
#include "conio.h"
#include "locale.h"
 
using namespace std;
 
int m=6;
const int a=127;
int c1=5, c2=3, g=0;
char** H;
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, 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;
                     printf("           %d\n", g);
                     if(g==m/2 && H[j]!=0)
                     {
                           char** u = new char* [2*m];
                            cout << "увелечение хэш таблицы в двое:\n" << endl;
g=0;
                            for(int y=0; y<m; y++)
                            {
                                
                                if(H[y]!=NULL)
                                {
                                    Hash_Insert(u, H[y]); 
                                    cout << k << endl;
                    
                                    g++;
                                    printf("            %d\n", g);
                                }
                                m *=2;  
                            }
                            delete [] u ;
                     }
                return j;
                }
            else i++;
        }
    }
    while(i!=m);
        return NULL;
};
 
int Hash_Search(char** H, 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** H = new char* [m];
    int n;
for ( int i=0; i<m; i++)
{
    H[i]=new char [m];
}
    char a[]="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 << "Вывод вставки asyp:" << endl;
    Hash_Insert(H, "asyp");
cout << "Вывод вставки asyt:" << endl;
    Hash_Insert(H, "asyt");
cout << "Вывод вставки asyp:" << endl;
    Hash_Insert(H, "asyp");
 
cout << "\nВывод поиска asyt:" << endl;
    Hash_Search(H, "asyt");
 
    _getch();
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru