Pomoc s převodem hash tab. z char na int

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
derata
nováček
Příspěvky: 1
Registrován: 06 kvě 2011 11:58

Pomoc s převodem hash tab. z char na int

Příspěvek od derata »

Ahoj, mám vytvořenou hash tabulku která pracuje s řetězci char. Chci ji využít na výpočet entropie, tak že do ní budu vkládat slova ze souboru. Jelikože nejsem schopný do funkce Insert() dostat z toho dokumentu slovo jako char tak chci aspoň pomocí soubor.get() vkládat do insert znaky a vše co není znak by značilo konec slova. Takže bych dostal něco typu 979797 v ascii. Ale nevím si rady jak tu hash tabulku upravit aby přijímala int. Přepsat char na int nestačí :D :D napíše to: 'InsertHash' : cannot convert parameter 1 from 'const char [10]' to 'int *'

Kód: Vybrat vše

#include <stdio.h>
#include <string.h>
#include "list"
#include <stdlib.h>

class List
{
	private:
		struct ListItems
		{
			char* data;
			ListItems* next;
			ListItems* prev;
		};
		ListItems* head;

	public:
		List();
		bool Search(char* x);
		void Insert(char* x);
};

List::List()
{
	head = NULL;
}

bool List::Search(char *x)
{
	ListItems* p;
	for (p = head; p != NULL; p = p->next)
		if (p->data == x)
			return true;

	return false;
}

void List::Insert(char *x)
{
	ListItems* p;
	p = new ListItems;
	p->data = x;
	p->next = head;
	if (head != NULL)
		head->prev = p;
	head = p;
	p->prev = NULL;
}

/*
	Ukazka, jak implementovat hashovani se separatnim retezenim
	Program k clanku pro Linuxsoft
	Autor: Petr Sklenicka
*/

int Hash(char* data);
void InsertHash(char* data);
bool SearchHash(char* data);

const int n = 50;				// velikost tabulky
List HashTable[n];				// hashovaci tabulka

int main()
{
	// ukazka ulozeni a nasledneho vyhledani zaznamu

	
	InsertHash("some test");
	bool p = SearchHash("some test");
	p == true ? printf("Nalezeno\n") : printf("Nenalezeno\n");

	return 0;
}

int Hash(char* data)
{
	int i, hashKey;

	for (int i = hashKey = 0; i < 10; i++)
		hashKey = (3 * hashKey + data[i]) % n;
	
	return hashKey;
}

void InsertHash(char* data)
{
	int hashKey = Hash(data);
	HashTable[hashKey].Insert(data);
}

bool SearchHash(char* data)
{
	int hashKey = Hash(data);
	return HashTable[hashKey].Search(data);
}

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Pomoc s výběrem
    od belphegor666 » » v Rady s výběrem hw a sestavením PC
    14 Odpovědi
    33064 Zobrazení
    Poslední příspěvek od belphegor666
  • Pomoc s webem
    od Tay » » v Web-tipy a vaše weby
    5 Odpovědi
    68039 Zobrazení
    Poslední příspěvek od Tay
  • Pomoc při taktu
    od ondyN » » v Taktování a další úpravy PC
    2 Odpovědi
    14235 Zobrazení
    Poslední příspěvek od Dyonysos
  • Pomoc při výběru PC
    od gedy1 » » v Rady s výběrem hw a sestavením PC
    6 Odpovědi
    8913 Zobrazení
    Poslední příspěvek od Alferi
  • Pomoc pri upgrade procesoru
    od filipo88 » » v Rady s výběrem hw a sestavením PC
    5 Odpovědi
    6778 Zobrazení
    Poslední příspěvek od petr22

Zpět na „Programování a tvorba webu“