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

derata
nováček
Příspěvky: 1
Registrován: květen 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod derata » 06 kvě 2011 12:05

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


Reklama
  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Pomoc s webem
    od Tay » 09 úno 2025 15:53 » v Web-tipy a vaše weby
    5
    19750
    od Tay Zobrazit poslední příspěvek
    10 úno 2025 12:09
  • Pomoc při taktu Příloha(y)
    od ondyN » 14 led 2025 15:53 » v Taktování a další úpravy PC
    2
    6788
    od Dyonysos Zobrazit poslední příspěvek
    14 led 2025 16:19
  • Pomoc s výběrem PC monitoru. Příloha(y)
    od ski1961 » 17 dub 2025 11:17 » v Rady s výběrem hw a sestavením PC
    29
    6507
    od windroid2 Zobrazit poslední příspěvek
    22 dub 2025 20:28
  • Pomoc s výběrem herního PC
    od RyeNi » 31 bře 2025 12:00 » v Rady s výběrem hw a sestavením PC
    5
    2723
    od Alferi Zobrazit poslední příspěvek
    31 bře 2025 19:37
  • Pomoc s výběrem notebooku na hry
    od Ghoust23 » 23 zář 2024 08:25 » v Rady s výběrem hw a sestavením PC
    4
    2845
    od petr22 Zobrazit poslední příspěvek
    24 zář 2024 07:32

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů