Hash Table Неправильный вывод через find

238
12 октября 2017, 12:13

Где ошибка. Хочу узнать какие парные числа, какие нет. Через объект int find() . Заполняю ключем/ числом через void push(int key,int value) , а оно выводит все и потом неизвестное число, что не так, где ошибка?

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#define KOL_STRUCT 10
using namespace std;
class HashMenu
{
    int key;
    int value;
public:
    HashMenu(int key,int value)
    {
        this->key = key;
        this->value = value;
    };
    int getKey()
    {
    return key;
    };
    int getValue()
    {
    return value;
    };
};
class HashTable
{
private:
    HashMenu **arr;
    int g=0;
public:
    HashTable()                  /// konstrucktor
    {
    arr = new HashMenu*[KOL_STRUCT]; /// sozdanie dinamyc massiva
    for(int i=0; i<KOL_STRUCT; i++)
    {arr[i]=NULL;}   ///arr[] = nylevoi ykazatel
    };
    void push(int key,int value) /// dobavlenie elem v spisok
    {
    int hash = (key % KOL_STRUCT);
    while (arr[hash]!=NULL && arr[hash]->getKey() != key)
            hash=(hash+1)%KOL_STRUCT;
            if(arr[hash] !=NULL)
                delete arr[hash];
            arr[hash] = new HashMenu(key,value);
            g++;
        };
    int get(int key)  ///ydalenie elementa
    {
    int hash = (key % KOL_STRUCT);
    while(arr[hash] !=NULL && arr[hash]->getKey()!=key)
        hash = (hash+1)%KOL_STRUCT;
        if(arr[hash] == NULL)
            return -111;
        else return arr[hash]->getKey();
    };
    int find()
    {
             int p=0,tt=0,hash=0;
        for(int key=1; key<=3; key++)
         {
            int hash = (key % KOL_STRUCT);
            if(arr[hash] == NULL)
           {
            cout <<  "not have value " << endl;
           }
            else
                {
                    p= arr[hash]->getKey();
                    tt = arr[p]->getValue();
                    if(tt%2)
                    {
                        p=tt;
                        cout << p <<" =   = " << endl;
                    }
                else
                    {
                        cout << "not %" << endl;
                    }
                }
            }
    }
  ~HashTable()///destructor
     {
        for (int i = 0; i <KOL_STRUCT ; i++)
             if (arr[i] != NULL)
                {delete arr[i];
            delete[] arr;}
        };
};

int main()
{
    HashTable rqw;
    rqw.push(1,6);
    rqw.push(2,5);
    rqw.push(3,4);
    rqw.push(4,2);
    cout << rqw.find() << endl;
    return 0;
}
READ ALSO
Тест по технологии CUDA [требует правки]

Тест по технологии CUDA [требует правки]

Укажите вывод программы (“comp”, если программа не скомпилируется и “err”, если произойдет ошибка при исполнении):

219
как подключить BDA device в C++

как подключить BDA device в C++

как подключить PCI Tuner в C++ чтоб потом работать с BDA

234
Как правильно вставить окно в окно в mfc С++?

Как правильно вставить окно в окно в mfc С++?

Всем доброго времени суток

232
QNetworkReply не возвращает значение QNetworkRequest::ContentDispositionHeader заголовка

QNetworkReply не возвращает значение QNetworkRequest::ContentDispositionHeader заголовка

Нужно получить значение заголовка Content-Disposition из QNetworkReply

244