Проверьте код на правильность, пожалуйста

Можете подсказать в чем проблема с функцией удаления ?

/* Написать программу, которая реализует метод закрытого хеширования с квадратичной последовательностью проб и хеш-функцией,
основанной на методе деления с остатком. Данные, хранящиеся в файле занести в хеш-таблицу.
Файл должен содержать не менее 15 целых чисел. Вывести построенную хеш-таблицу на экран (вместе с количеством выполненных проб).
Организовать поиск данных в хеш-таблице. Результаты поиска данных вывести на экран. Также вывести количество проб, которые были затрачены при поиске*/
[CPP]
#include <iostream>
#include <vector>
#include <ctime>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
using namespace std;

class HeshTable
{
public:
int size;
class elem
{
public:
int value;
bool isElem = false;
};

elem* Vec_data;
int count;

HeshTable(int m)
{
size = m;
count = 0;
Vec_data = new elem[size];

for (int i = 0; i < size; i++)
{
Vec_data[i].value = false;
// cout << Vec_data[i].value;
}
}
// Реализует хеш-функцию для поиска индекса
int hashCode(int value)
{
return value % size;
}
int quadratic_sample(int i, int value)
{
return (hashCode(value) + i * i) % size;
}
void Add(int v)
{
// cout << " count = " << count << endl;
if (isFull())
{
cout << "Таблица заполнена";
cout << " count = " << count << endl;
return;
}
int i = 0;
while (i < size && count <= size)
{
// cout << "zashel1" << endl;
if (this->Vec_data[quadratic_sample(i, v)].value == v && this->Vec_data[quadratic_sample(v, i)].isElem != false)
{

return;
}
if (this->Vec_data[quadratic_sample(i, v)].isElem != false) { i++; }// cout << "zashel3-error" << endl; }
if (this->Vec_data[quadratic_sample(i, v)].isElem == false)
{
//cout << "zashel4" << endl;
this->Vec_data[quadratic_sample(i, v)].value = v;
this->Vec_data[quadratic_sample(i, v)].isElem = true;
// cout << quadratic_sample(v, i) << " ---> " << Vec_data[quadratic_sample(v, i)].value << endl;
}
}
count++;
}
int Find(int index)
{
int i = 0;

while (this->Vec_data[quadratic_sample(i, index)].isElem)
{
int newIndex = quadratic_sample(i, index);

if (newIndex == index)
{
cout << "value " << this->Vec_data[quadratic_sample(i, index)].value << "; prob " << i;
return this->Vec_data[quadratic_sample(i, index)].value;
}
i++;
if (i > size)
{
throw "не найдено!!!";
}
}
}
void Remove(int index)
{
int i = 0;
while (this->Vec_data[quadratic_sample(i, index)].isElem == true && i<size)
{
int newIndex = quadratic_sample(i, index);
if (newIndex == index)
{
Vec_data[quadratic_sample(i, index)].isElem = false;
size--;
}

}
i++;
}
// функция для проверки заполненности хеш-таблицы
bool isFull()
{
return (count == size);
}
int get_s()
{
return size;
}
void print()
{

for (int i = 0; i < size; i++)
{
cout << i << "--->" << Vec_data[i].value << endl;
}

}
};
int main()
{
setlocale(LC_ALL, "RU");
HeshTable a(5);
for (int i = 0; i < a.get_s(); i++)
{
int k;
cout << endl << "k=";
cin >> k;
a.Add(k);
}
a.print();
a.Find(1);
a.Remove(3);
a.print();
}

В а чем проблема с функцией?? Код есть. Оформить бы его по человечески… а то глаза прям болят …
image

а как оформить?

поняла)

Так то лучше. Так и в чем проблема?

функция вставки и удаления из хэш-таблицы как то неправильно работают, не могу понять почему

:arrow_down:

Сперва нужно добиться стабильного воспроизведения ошибки.
Напишите минимальный пример некорректной работы в виде функции без ввода с терминала.
Т.е. то, что вводите, нужно записать в виде добавления констант.

видел подобную ошибку на другом форуме. напиши в ЛС, чтобы дал ссылку. Вдруг модерация не пропустит, если тут вставить ссыль

Так можно просто вставить её и проверить, что будет. Не забанят же :laughing:

Вообще кроме ссылки лучше и само решение описывать, ссылки бывают умирают.