Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Решить квадратное уравнение https://www.cyberforum.ru/ cpp-beginners/ thread3160999.html
Написание кода по блок-схеме
C++ Обратное число
Добрый вечер, форумчане. В этой задаче нужно ответить на 1≤t≤105 запросов. Каждый запрос состоит из двух целых чисел 2≤p≤109 и 0<a<p, число p является простым. На каждый запрос нужно вывести в отдельной строке целое число 0<b<p такое, что (a⋅b−1) ⋮ p. Входные данные: В первой строке дано целое число t — количество запросов. В следующих t строках даны по два числа pi и ai, i=1,…,t. ...
C++ Заменить динамический массив на статический Помогите, пожалуйста, преобразовать динамический массив в статический. #include <iostream> using namespace std; int main() { int n, m; cin >> n >> m; int** a = new int* ; for (int i = 0; i < n; i++) { a = new int; https://www.cyberforum.ru/ cpp-beginners/ thread3160954.html C++ Необходимо решить кубическое уравнение с положительными коэффициентами Нужно найти положительный корень уравнения A * X3 + B * X2 + C * X = D. В первой строке заданы 4 натуральных числа — A, B, C, D (1 ≤ A, B, C, D ≤ 100). Вывести единственное число — положительный корень уравнения. Абсолютная или относительная ошибка не должна превышать 10 - 6. Примеры: >>> 1 2 3 6 1.0000 >>> 1 2 3 4 0.7760454350 https://www.cyberforum.ru/ cpp-beginners/ thread3160906.html
C++ Топогрофически отсортировать граф по алгоритму Демукрона
Нужно написать программу которая будет по алгоритму Демукрона топогрофически отсортировывать граф, который введен в консоль с клавиатуры на с++. Задание дали в университете, учусь на 1 курсе. Не знаю как реализовать удаление столбца, где в матрице смежности будет 0 и соответсвующей строки на матрице смежности, и чтобы программа запомнила елементы в 1 строке матрицы, где нули. На выходе у...
C++ Ошибка компиляции " undefined reference to `sotr::vvod()" Я работаю в C-Free 5 и столкнулся с такой ошибкой: --------------------Configuration: mingw5 - CUI Debug, Builder Type: MinGW-------------------- Checking file dependency... Linking... D:\211\main.cpp:23: undefined reference to `sotr::vvod()' collect2: ld returned 1 exit status Complete Make main: 2 error(s), 0 warning(s) Честно ума не приложу почему он не видит функцию в .h файле https://www.cyberforum.ru/ cpp-beginners/ thread3160820.html
C++ Объединить функции Find и FindPlace #include <iostream> #include <fstream> #include <map> #include <string> using namespace std; typedef map<string, int> Dict; int main(int argc, char* argv) https://www.cyberforum.ru/ cpp-beginners/ thread3160812.html Как мне сделать спавн фруктов не в змейке? C++
Сделал змейку по видеоуроку, и начал сам доделывать, т.к. автор сделал её играбельной, но с кучей багов. Но не могу пофиксить баг: если змейка уже длинная, то спавн фруктов всё равно продолжается по всему полю, в том числе в самой змейке, а не в свободном пространстве, как должно быть. Напишите варианты, как я могу реализовать данную проверку. Просьба не скидывать код с уже пофикшенным багом,...
C++ Задача "Порталы в Берляндии" В Берляндии все перемещения между городами осуществляются с помощью порталов. Если между городом v и u есть портал со стоимостью w, это значит, что вы можете из города v попасть в город u или из города u попасть в город v за w бурлей. Все города имеют номер от 1 до n. Вам нужно помочь Богдану добраться из города s в город e (возможно с пересадками) потратив наименьшее количество бурлей. У... https://www.cyberforum.ru/ cpp-beginners/ thread3160802.html C++ Вычисление значения выражения sqrt(x^50 + sqrt(x^49 + ... + sqrt(x^1))) используя рекурсию https://www.cyberforum.ru/ cpp-beginners/ thread3160779.html
Вычислить значение выражения, где x задаётся пользователем. «Начало счёта» F(50). sqrt(x^50 + sqrt(x^49 + ... + sqrt(x^1)))
C++ Рекурсивное вычисление значения выражения
Не понимаю как написать программы рекурсивного вычисления значения выражения 1)Нужно вычислить сумму первых k слагаемых, где k и x задаются пользователем. «Начало счёта» S(k, x) S = 2x + 3x/2 + 4x/3 + 5x/4 + ... 2)Вычислить значение выражения, где x задаётся пользователем. «Начало счёта» F(50). F = sqrt(x^50 + sqrt(x^49 + ... + sqrt(x+1)))
C++ Stack around the variable 'matr' was corrupted https://www.cyberforum.ru/ cpp-beginners/ thread3160667.html
День добрый, уже создавал сегодня тему по этой задаче в категории Ассемблеры, но сейчас возник вопрос по с++ поэтому пришел сюда. Итак есть задача. Дан квадратный двумерный массив. Найти сумму элементов каждой его строки и упорядочить строки в соответствии со значениями этих сумм, используйте ММХ-расширение процессоров I80x86 чтобы реализовать заданный алгоритм. Вот код, но есть момент я долго...
0 / 0 / 0
Регистрация: 28.03.2024
Сообщений: 2
0

Программа не может получить данные элементов хеш-таблицы - C++ - Ответ 17260001

28.03.2024, 01:16. Показов 472. Ответов 4
Метки (Все метки)

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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <string.h>
#define CAPACITY 50000 // размер хеш-таблицы
using namespace std;
 
unsigned long hash_function(char* str) { // хеш-функция
    unsigned long i = 0;
    for (int j = 0; str[j]; j++)
        i += str[j]; // находим сумму значений ASCII строки
    return i % CAPACITY; // возвращаем хешированное значение введенной строки
}
 
typedef struct Ht_item Ht_item;
 
struct Ht_item { // структура данных хеш-таблицы
    char* key; // термин
    char* value1; // подтермины
    char* value2;
    char* value3;
};
 
typedef struct HashTable HashTable;
 
struct HashTable { // структура самой хеш-таблицы
    Ht_item** items; // указатель к данным хеш-таблицы
    int size;
    int count;
};
 
Ht_item* create_item(char* key, char* value1 = NULL, char* value2 = NULL, char *value3 = NULL) { // функция создания элемента хеш-таблицы (термина и подтерминов)
    Ht_item* item = (Ht_item*)malloc(sizeof(Ht_item)); // выделяем память на ячейку (а также на термин и подтермины внутри ячейки)
    item->key = (char*)malloc(strlen(key) + 1);
    item->value1 = (char*)malloc(strlen(value1) + 1);
    item->value2 = (char*)malloc(strlen(value2) + 1);
    item->value3 = (char*)malloc(strlen(value3) + 1);
 
    strcpy_s(item->key, strlen(key) + 1, key); // вносим значения термина в ячейку
    strcpy_s(item->value1, strlen(value1) + 1, value1); // и подтерминов
    strcpy_s(item->value2, strlen(value2) + 1, value2);
    strcpy_s(item->value3, strlen(value3) + 1, value3);
 
    return item;
}
 
HashTable* create_table(int size) { // создание хеш-таблицы
    HashTable* table = (HashTable*)malloc(sizeof(HashTable)); // выделяем память для хеш-таблицы
    table->size = size;
    table->count = 0;
    table->items = (Ht_item**)calloc(table->size, sizeof(Ht_item*));
 
    for (int i = 0; i < table->size; i++) // устанавливает для всех элементов значение NULL (так как на момент создания таблицы они не используются)
        table->items[i] = NULL;
 
    cout << "Таблица успешно создана." << endl;
 
    return table;
}
 
void free_item(Ht_item* item) { // функция освобождения памяти ячейки 
    free(item->key);
    free(item->value1);
    free(item->value2);
    free(item->value3);
    free(item);
}
 
void free_table(HashTable* table) { // функция освобождения памяти таблицы
    for (int i = 0; i < table->size; i++) {
        Ht_item* item = table->items[i];
        if (item != NULL)
            free_item(item);
    }
 
    free(table->items);
    free(table);
}
 
void ht_insert(HashTable* table, char* key, char* value1 = NULL, char* value2 = NULL, char* value3 = NULL) { // функция добавления
    Ht_item* item = create_item(key, value1, value2, value3);
    int index = hash_function(key); // хешируем значение термина
    Ht_item* current_item = table->items[index];
 
    if (current_item == NULL) {
        if (table->count == table->size) {
            cout << "Хеш-таблица заполнена." << endl;
            free_item(item);
            return;
        }
    }
    table->items[index] = item;
    table->count++;
    cout << "Добавлен новый элемент." << endl;
}
 
void ht_search(HashTable* table, char* key) { // функция поиска термина в хеш-таблице
    int index = hash_function(key);
    Ht_item* item = table->items[index];
 
    if (item != NULL) {
        if (strcmp(item->key, key) == 0)
            cout << "По термину " << key << " найдено: " << table->items[index]->value1 << ", " << table->items[index]->value2 << ", " << table->items[index]->value3 << "." << endl;
    }
    else {
        cout << "По термину " << key << " ничего не найдено." << endl;
    }
}
 
void print_table(HashTable* table) { // функция вывода хеш-таблицы на экран
    cout << "Ваша таблица:" << endl;
    for (unsigned long i = 0; i < table->size; i++) {
        Ht_item* item = table->items[i];
        if (table->items[i]) {
            cout << "----------------------------------------" << endl;
            cout << "Термин: " << item->key << " | Подтермины: " << item->value1 << ", " << item->value2 << ", " << item->value3 << "." << endl;
        }
    }
    cout << "----------------------------------------" << endl;
}
 
int main() {
    setlocale(LC_ALL, "ru");
 
    HashTable *ht = create_table(3); // ИСПРАВИТЬ КОЛИЧЕСТВО ЭЛЕМЕНТОВ (5)
 
    char* term = new char, *podterm1 = new char, * podterm2 = new char, * podterm3 = new char;
 
    for (int i = 0; i < ht->size; i++) {
        cout << "Введите термин и три термина: " << endl;
 
        cin >> term;
        cin >> podterm1;
        cin >> podterm2;
        cin >> podterm3;
 
        ht_insert(ht, term, podterm1, podterm2, podterm3);
    }
 
    print_table(ht);
 
    free_table(ht);
 
    return 0;
}
Проблема возникает в функции print_table. Она должна выводить на экран всю хеш-таблицу. В 111, 112 строках table->items[i] возвращает nullptr. Хотя, как видно в мейне, элементы заданы, там точно не может быть nullptr. Вопрос в том, как обратиться к этим данным корректно, чтобы они не были nullptr. Та же проблема наблюдается в функции free_table.

Вернуться к обсуждению:
Программа не может получить данные элементов хеш-таблицы C++
0
Заказать работу у эксперта
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2024, 01:16
Готовые ответы и решения:

Хеш-таблицы и хеш-функции. Имеется программа, но не могу переделать тип входных данных
Доброго времени суток. Есть программа работающая с хеш-таблицами. То есть создается таблица,...

Данные о читателях должны быть организованны в виде хеш-таблицы
Данные о каждом читателе должны содержать: № читательского билета – строка формата «ANNNN-YY», где...

Получить данные из одной таблицы по определнному периоду дат на основе данных из другой таблицы
Добрый день. Имеется: Две таблицы, в каждой из которой есть столбец с датами (Y-m-d). Необходимо...

Хеш-функциии и хеш-таблицы
Приветствую вас, форумчане! Нужна помощь в создании хэш-таблицы с цепочками коллизий. Исходные...

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

Подсчитать сколько элементов хеш-таблицы со случайными ключами превышает среднее значение от всех ключей
Подсчитать сколько элементов хеш-таблицы со случайными ключами превышает среднее значение от всех...

WebClient не может получить данные
Добрый день! Пытаюсь получить HTML код с сайта ...

Система не может получить данные из .ini файла
Не получается получить данные из файла config.ini В \bin\debug создал файл config.ini, чтобы...

Retrofit не может получить данные через API
Добрый день. Такая проблем: Есть сайт с магазином с API, типа www.site.ru/api/product/ При...

Программа не может получить доступ к файлу
При завершении программы PascalABC.Net она не выгружается (т.е. процесс написанной программы в...

SQL - получить перечень значений, которые может принимать поле таблицы
Есть 2 связанные 1-М таблицы, соответственно одно поле второй таблицы может принимать только одно...

OpenProcess, программа не может получить доступ к процессу
Здравствуйте уважаемые форумчане я пишу Trainer для одной игры под названием WM3 столкнулся с...

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