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 při taktu
    od ondyN » » v Taktování a další úpravy PC
    2 Odpovědi
    10284 Zobrazení
    Poslední příspěvek od Dyonysos
  • Pomoc s webem
    od Tay » » v Web-tipy a vaše weby
    5 Odpovědi
    49449 Zobrazení
    Poslední příspěvek od Tay
  • Pomoc s výběrem
    od belphegor666 » » v Rady s výběrem hw a sestavením PC
    14 Odpovědi
    12349 Zobrazení
    Poslední příspěvek od belphegor666
  • Pomoc s výběrem komponent
    od kurkisak » » v Rady s výběrem hw a sestavením PC
    2 Odpovědi
    4284 Zobrazení
    Poslední příspěvek od kurkisak
  • Pomoc s výběrem komponentů
    od Robrt » » v Rady s výběrem hw a sestavením PC
    2 Odpovědi
    4923 Zobrazení
    Poslední příspěvek od Robrt

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