Pomoc s převodem hash tab. z char na int – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Pomoc s převodem hash tab. z char na int – C / C++ – Fórum – Programujte.comPomoc s převodem hash tab. z char na int – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Karel
~ Anonymní uživatel
121 příspěvků
6. 5. 2011   #1
-
0
-

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 *'

#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);
}


Nahlásit jako SPAM
IP: 89.31.8.–
Reklama
Reklama
crAzY^
~ Moderátor
+10
Grafoman
6. 5. 2011   #2
-
0
-

přetížit tu funkci insertHash(int cislo) ??? a použít itoa

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 68 hostů

Podobná vlákna

Int na char — založil filEPina

Char na int — založil vollf82

Int vs. char, chyba programu — založil volnaduse

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý