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

using namespace std;

int n,i,j,m,sr,r,t,de,de1,number;
int key[60];
char x[10],z[10],a[10],b[10];
char hesh[25][10];

int output(void)
{
    cout<<"Hash table:\n";
    cout<<"_________________________\n";
    for(j=0; j<21; j++)
    cout<<"| "<<j<<" |  "<<hesh[j]<<"\n";
    cout<<"_________________________\n";

}

int add(void)
{
    cout << "Vvedite element: ";
    cin>>z;
    cout << "\n_________________\n";
	de=0;
	for (j=0; j<10; j++) de=de+z[j];
	cout <<"Key="<<de<<"\n";
	de=de*de;
	cout <<"Key^2="<<de<<"\n";
	i=0;
	de1=de;
	do
	{
         de=de/10;
         i=i+1;
    }
	while (de!=0);
	i=i/2;
	sr=de1/pow(10,i+1);
	sr=de1/pow(10,i-1)-sr*100;
	n=0;
	while (n!=2)
	{
	t=sr%(20-n);
	cout <<"Hash adress"<<n+1<<"="<<t<<"\n";
	if (strcmp(hesh[t],z)==0) 
       {
          cout << "This key can't be used\n";                   
          return 0;
       }
	if (strcmp(hesh[t],"")==0)
	   {
	      strcpy(hesh[t],z);
	      number=number+1;
          cout << "Free space\n";
	      return 0;
        }
        n=n+1;
     }
cout << "Search free space LNP\n"; 
r=1;
do 
   {
   if (strcmp(hesh[t],z)==0) 
     {
     cout << "This key can't be used!!!\n";                   
     return 0;
     }       
   if (t<20)
     {
     t=t+1;
     r=strcmp(hesh[t],""); 
     }
     else
     t=-1;                  
     }
while (r!=0);
strcpy(hesh[t],z);
cout <<"Final hash="<<t<<"\n";
number=number+1;
}

int del(void)
{
    cout << "Vvedite element: ";
    cin>>z;
    cout << "\n_________________\n";
	de=0;
	for (j=0; j<10; j++) de=de+z[j];
	de=de*de;
		i=0;
	de1=de;
	do
	{
         de=de/10;
         i=i+1;
    }
	while (de!=0);
	i=i/2;
	sr=de1/pow(10,i+1);
	sr=de1/pow(10,i-1)-sr*100;
	n=0;
	while (n!=2)
	{
	t=sr%(20-n);
	if (strcmp(hesh[t],z)==0)
	   {
	      strcpy(hesh[t],"");
	      number=number-1;
          cout << "Key delete\n";
	      return 0;
       }
    else cout <<"Hash adress "<<n+1<<"="<<t<<" not found\n";
    n=n+1;  
    } 
    r=1;
    i=0;
    do 
       {
          if (t<20)
          {
          i=i+1;
          t=t+1;
          r=strcmp(hesh[t],z); 
          }
          else
          t=-1;
          if (i>20) 
          {
          cout << "There is no that key in hash\n";
          return 0; 
          }                       
       }
       while (r!=0);
       strcpy(hesh[t],"");
       cout << "Search key LNP and delete\n";
       number=number-1;
}


int main(void)
{
int menu=0;
n=20;
number=0;
while(menu<5)
{
cout<<"MENU:\n";
cout<<"<1>-Add key\n";
cout<<"<2>-Delete key\n";
cout<<"<3>-Exir\n";
cout<<"Operation: ";
cin>>menu;
switch(menu)
{
case 1:{
     if (number>19) 
     {
     cout<<"Table full\n";
     break;
     }
     else
     {
        add();
        output();
        break;
     }
     }
case 2:{del();output();break;}
case 3:{return 0;}
}
}
return 0;
}
Соседние файлы в папке 3