13 / 13 / 9
Регистрация: 23.10.2014
Сообщений: 184
1

Переделать код с использованием vector

09.03.2015, 16:49. Показов 446. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как реализовать данный код с помощью вектора

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
class Table
{
public:
    Table(int);
    int Hash(int)const;
    void Put(int);
    void show()const;
    ~Table();
private:
    struct TElem
    {
        int number = 0;
        TElem *next = nullptr;
    };
    TElem *bucket;
    const int COUNT_BUCKET;//число блоков
    int PRIMARY_COUNT_BLOCK = 100;
    int COUNT_ELEM = 0;//кол-во всех элементов в данный момент
    int COUNT_ELEM_IN_HEAD_BUCKET = 0;//кол-во элементов в голове
    int LEVEL = 0;//2^LEVEL x N
    int LEVEL_UP = 100;// для проверки 90%
    void Destructor(TElem*);
};
 
Table::Table(int a = 1600) : COUNT_BUCKET(a)
{
        bucket = new TElem[COUNT_BUCKET];
}
 
int Table::Hash(int number)const
{
    return number % (static_cast<int>(pow(2, LEVEL)) * PRIMARY_COUNT_BLOCK);
}
void Table::Put(int number)
{
    int hash_result = Hash(number);
 
    if (COUNT_ELEM_IN_HEAD_BUCKET == COUNT_BUCKET) LEVEL = LEVEL;
    else if (COUNT_ELEM_IN_HEAD_BUCKET >= LEVEL_UP / 100 * 95)
    {
        ++LEVEL;
        LEVEL_UP *= 2;
    }
    if (!bucket[hash_result].number)
    {
        bucket[hash_result].number = number;
        ++COUNT_ELEM;
        ++COUNT_ELEM_IN_HEAD_BUCKET;
    }
    else
    {
        TElem *temp = nullptr;
        for (temp = &bucket[hash_result];; temp = temp->next)
        {
            if (temp->number == number) return;
            if (temp->next == nullptr) break;
        }
        temp->next = new TElem;
        temp->next->number = number;
        ++COUNT_ELEM;
    }
}
void Table::show()const
{
    TElem *temp = nullptr;
    int i = 0;
    for (int i = 0; i < COUNT_BUCKET; ++i)
    {
        for (temp = &bucket[i]; temp != nullptr; temp = temp->next)
        {
            cout << temp->number << " ";
            Sleep(50);
        }
        cout << endl;
    }
}
void Table::Destructor(TElem* ptr)
{
    if (ptr->next != nullptr)
    {
        Destructor(ptr->next);
        delete ptr;
    }
    else return;    
}
Table::~Table()
{
    for (int i = 0; i < COUNT_BUCKET; ++i)
    {
        Destructor(&bucket[i]);
    }
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "Rus");
    srand((unsigned)time(NULL));
    Table one;
    for (int i = 0; i <= 500; i++)
         one.Put(rand()%1000 + 1);
    for (int i = 0; i <= 500; i++)
        one.Put(rand() % 1000 + 1);
    for (int i = 0; i <= 500; i++)
        one.Put(rand() % 1600 + 1);
    for (int i = 0; i <= 500; i++)
        one.Put(rand() % 1600 + 1);
    for (int i = 0; i <= 500; i++)
        one.Put(rand() % 1600 + 1);
    one.show();
    cin.ignore(cin.rdbuf()->in_avail());
    cin.get();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2015, 16:49
Ответы с готовыми решениями:

Переделать код из Queue в vector
Как переделать этот код под вектор? #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;algorithm&gt;...

Переделать код с использованием указателей
Всем доброго времени суток. Подскажите как еще можно написать программу к следующему заданию через...

Переделать код с использованием динамического массива
#include&lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main( ) { int const...

Переделать код с использованием функции (процедуры)
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;complex&gt; int main() { std::cout &lt;&lt;...

0
09.03.2015, 16:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2015, 16:49
Помогаю со студенческими работами здесь

Объединить 2 массива: переделать код с использованием функций
Программа, которая с помощью созданной функции, осуществляет объединение двух массивов А, В в...

Массив. Переделать код с использованием динамической памяти
Помогите переделать код с использованием динамической памяти и с выбором сколько строк и столбцов...

Переделать код с использованием StringBuffer
Помогите пожалуиста переделать код с String в StringBuffer public class Lab3 // public -...

Переделать код (с использованием функций)
Получить квадратную матрицу порядка n: Program EMatrix; var a:array of integer; n, i,...

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

Переделать код с использованием mysqli
доброе утро.помогите пожалуста переделать в mysqli: &lt;? $bd_host = &quot;localhost&quot;; $bd_user = &quot;user&quot;;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru