Скачиваний:
33
Добавлен:
10.05.2014
Размер:
2.11 Кб
Скачать
#include <iostream>
#include <string.h>

using namespace std;


int hash_calc(char x[],const int size)
{
	int StringLength,HashKey,i,tmp;
	StringLength=strlen(x); //Начало вычисления ключа
		HashKey=0;
		if (StringLength%2==0) //Чётный случай
		{
			for (i=0; i<StringLength; i=i+2)
			{
				tmp=x[i];
				tmp=tmp*1000;
				tmp=tmp+x[i+1];
				HashKey=HashKey+tmp;
			}
		}
		if (StringLength%2!=0) //Нечётный случай
		{
			for (i=1; i<=StringLength; i=i+2)
			{
				tmp=x[i];
				tmp=tmp*1000;
				tmp=tmp+x[i+1];
				HashKey=HashKey+tmp;
			}
			HashKey=HashKey+x[0];
		} //конец вычисления ключа
		return (HashKey);
}



int main(void)
{
	int N=19;
	char st[N][10];
	int j,k,keyd[N],ht1[N],ht2[N],ArrOfSin[N];
	
	strcpy(st[0],"zero");
    strcpy(st[1],"one");
    strcpy(st[2],"twoa");
    strcpy(st[3],"three");
    strcpy(st[4],"four"); 
    strcpy(st[5],"five");
    strcpy(st[6],"six");
    strcpy(st[7],"seven");
    strcpy(st[8],"eight");
    strcpy(st[9],"nine");
    strcpy(st[10],"ten");
    strcpy(st[11],"eleven");
    strcpy(st[12],"twelve");
    strcpy(st[13],"thirteen");
    strcpy(st[14],"fourteen");
    strcpy(st[15],"fifteen");
    strcpy(st[16],"sixteen");
    strcpy(st[17],"seventeen");
    strcpy(st[18],"eighteen");
    strcpy(st[19],"nineteen");
    
    for (j=0; j<=N; j++) //Вычисление хэш кода
    {
		keyd[j]=hash_calc(st[j],strlen(st[j]))%(N+1); //Свёртка 2
		cout<<j<<") "<<keyd[j]<<"\n";
	}
	keyd[2]=12;
	// создание хэш таблицы
	for (j=0; j<=N; j++)
	{
		ht1[j]=-1;
		ht2[j]=-1;
		ArrOfSin[j]=-1;	
	}
	k=0;
	for (j=0; j<=N; j++)
	{
		if (ht1[keyd[j]]==-1)
		{
			ht1[keyd[j]]=j;
		}
		else
		{
			if (ht2[keyd[j]]==-1)
			{
				ht2[keyd[j]]=j;
			}
			else
			{
				ArrOfSin[k]=j;
				k++;
			}
		}
	}
	
	cout<<"\n";
	for (j=0; j<=N; j++) {cout<<j<<") "<<ht1[j]<<" * "<<ht2[j]<<"\n";}
	cout<<"\n";
	for (j=0; j<=N; j++) {cout<<j<<") "<<ArrOfSin[j]<<"\n";}
	
}
Соседние файлы в папке old1