
/*
 * Ten modul zawiera funkcje haszujace potrzebne do sprawnego dzialania hasza.
 * Sprobuj napisac wlasne funkcje oparte o wzorce zawarte tutaj. Pamietaj, ze
 * kazda funkcja musi pobierac jeden parametr bedacy liczba rzeczywista, a
 * wynikiem musi byc liczba calkowita z zakresu 0 - HASH_MAX.
 *
 * [c]piotao, 20060107
 */

#ifndef __HASHFNC__
#define __HASHFNC__

#include <stdlib.h>

// aby dzialaly operacje takie jak pierwiastkowanie, logarytmy i inne
// matematyczne bajery trzeba dolaczyc ta biblioteke.

#include <math.h>

// jezeli jakims cudem stala HASH_MAX nie jest jeszcze znana, nalezy ja tutaj
// zdefiniowac.  Normalnie, ta stala powinna byc zdefiniowana w module Hash.h.
// Innym sposobem definicji tej stalej jest napisanie:
// extern const int HASH_MAX = 10000;

#ifndef __HASH__
# define HASH_MAX 10000
#endif



// ... i teraz leca funkcje haszujace. Ich dzialanie musi byc takie:
// 1. Funkcja pobiera jeden parametr bedacy liczba rzeczywista
// 2. Funkcja robi sobie jakies obliczenia.
// 3. Funkcja zwraca wynik obliczen jako liczbe calkowita [0,HASH_MAX)


int hashgen1( double x ){
  return (int) ( 2017 * drand48() * x ) % HASH_MAX;
}

int hashgen2( double x ){
	x = x;
  return rand() % HASH_MAX;
}

int hashgen3( double x ){
  return (int) (HASH_MAX * x) % HASH_MAX;
}

int hashgen4( double x ){
  int a = (int) ( 2017 * x * floor(x) ) % HASH_MAX;
  return a;
}

int hashgen5( double x ){
	return (int)( (double)123456789 * (double)(x-floor(x)) ) % HASH_MAX;
}





#endif

