Piszę na uczelnię tablicę mieszającą. Mam funkcję Szukaj która ma znaleźć komórkę z zadaną wartością Klucz. Funkcja oblicza indeks na podstawie funkcji haszującej i sprawdza czy w komórce jest szukana wartość. Jeśli nie, sprawdza liniowo dalej. W przypadku gdy element szukany nie istnieje, funkcja przechodzi dalej aż wyjdzie poza zakres tablicy. Jak temu zapobiec? Chciałem sprawdzać rozmiar tablicy i zatrzymywać funkcję w miejscu końca tablicy, ale przeczytałem że nie można gdy tablica jest dynamiczna - ja alokuję minimalne miejsce i chcę w razie potrzeby zwiększać je realloc-kiem.
#include <iostream>
#include <math.h>
#include <fstream>
using namespace std;
int *tablica, X, k1, k2 ,k3, k4, k5;
void odczyt_pliku(){
fstream plik;
plik.open("inlab05.txt", ios::in);
if(plik.good()==false){
cout<<"Nie udalo sie odczytac pliku lub plik nie istnieje";
exit(0);
}
plik >> X >> k1 >> k2 >> k3 >> k4 >> k5;
plik.close();
}
void dodaj_jeden(int * tablica, int klucz){
int indeks = (((klucz%1000)+pow(2,(klucz%10)))%997)
while((tablica[indeks] != 0) || (tablica[indeks] != -1)){
if((tablica[indeks] == 0) || (tablica[indeks] == -1)){
tablica[indeks]=klucz;
}
else{
indeks++;
}
}
}
int szukaj(int * tablica, int klucz){
int indeks = (((klucz%1000)+pow(2,(klucz%10)))%997)
while(tablica[indeks] != klucz){
if(tablica[indeks] == klucz){
return indeks;
}
else{
indeks++;//szuka az wyjdzie poza zakres
}
}
}
int main()
{
cout << "Hello world!" << endl;
return 0;
}