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 při taktu Příloha(y)
    od ondyN » 14 led 2025 15:53 » v Taktování a další úpravy PC
    2
    9481
    od Dyonysos Zobrazit poslední příspěvek
    14 led 2025 16:19
  • Pomoc s webem
    od Tay » 09 úno 2025 15:53 » v Web-tipy a vaše weby
    5
    44775
    od Tay Zobrazit poslední příspěvek
    10 úno 2025 12:09
  • Pomoc s výběrem
    od belphegor666 » 16 říj 2025 17:06 » v Rady s výběrem hw a sestavením PC
    14
    5395
    od belphegor666 Zobrazit poslední příspěvek
    30 říj 2025 06:25
  • Pomoc s výběrem ntb na programování v .NET 25k
    od Kubasky » 20 říj 2025 08:11 » v Rady s výběrem hw a sestavením PC
    1
    1883
    od petr22 Zobrazit poslední příspěvek
    20 říj 2025 08:23
  • Pomoc s výběrem nového PC Příloha(y)
    od Benzou » 24 črc 2025 18:46 » v Rady s výběrem hw a sestavením PC
    6
    10214
    od WinDroid Zobrazit poslední příspěvek
    25 črc 2025 08:23

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 11 hostů