Lab task Hashing
#include<iostream>
#include<string>
using namespace std;
int Prime(int large)
{
int check=large,check2=0;
for(large ; true ;large++)
{
check2=0;
for(int check=large-1 ; check!=2 ; check--)
{
if(large%check==0)
{
check2=1;
break;
}
}
if(check2==0)
return large;
}
}
struct student
{
int regNo;
string name;
float gpa;
student()
{
regNo=-1;
}
};
class Hash
{
student *arr;
int size;
int totalElems;
public:
Hash()
{
arr=new student[5];
size=5;
totalElems=0;
}
void insert(const student stu)
{
int key=stu.regNo%size;
while(arr[key%size].regNo!=-1)
key++;
arr[key%size]=stu;
totalElems++;
if(size<(totalElems*2))
{
student* temp=new student[size];
for(int i=0 ; i<size ; i++)
temp[i]=arr[i];
delete[] arr;
int p_size=size;
size=Prime(totalElems*2);
arr=new student[size];
totalElems=0;
for(int i=0 ; i<p_size ; i++)
{
if(temp[i].regNo==-1)
continue;
this->insert(temp[i]);
}
}
}
void search(int reg)
{
int key=reg%size;
int check=0;
while(arr[key%size].regNo!=reg && check!=size)
{
key++;
check++;
}
if(arr[key%size].regNo==reg)
cout<<"Information for searched student is \nName : "<<arr[key%size].name<<" Reg #"<<arr[key%size].regNo<<" GPA : "<<arr[key%size].gpa;
else
cout<<"No Results found";
}
};
void main()
{
Hash H1;
student temp;
char check='y';
while(check=='y')
{
cout<<"Enter Student Name\n";
cin>>temp.name;
cout<<"Enter Student reg Number\n";
cin>>temp.regNo;
cout<<"Enter Student GPA\n";
cin>>temp.gpa;
H1.insert(temp);
cout<<"Do you want to enter more records. Y/N\n";
cin>>check;
}
system("cls");
cout<<"Enter Reg # to search student";
cin>>temp.regNo;
H1.search(temp.regNo);
}
#include<string>
using namespace std;
int Prime(int large)
{
int check=large,check2=0;
for(large ; true ;large++)
{
check2=0;
for(int check=large-1 ; check!=2 ; check--)
{
if(large%check==0)
{
check2=1;
break;
}
}
if(check2==0)
return large;
}
}
struct student
{
int regNo;
string name;
float gpa;
student()
{
regNo=-1;
}
};
class Hash
{
student *arr;
int size;
int totalElems;
public:
Hash()
{
arr=new student[5];
size=5;
totalElems=0;
}
void insert(const student stu)
{
int key=stu.regNo%size;
while(arr[key%size].regNo!=-1)
key++;
arr[key%size]=stu;
totalElems++;
if(size<(totalElems*2))
{
student* temp=new student[size];
for(int i=0 ; i<size ; i++)
temp[i]=arr[i];
delete[] arr;
int p_size=size;
size=Prime(totalElems*2);
arr=new student[size];
totalElems=0;
for(int i=0 ; i<p_size ; i++)
{
if(temp[i].regNo==-1)
continue;
this->insert(temp[i]);
}
}
}
void search(int reg)
{
int key=reg%size;
int check=0;
while(arr[key%size].regNo!=reg && check!=size)
{
key++;
check++;
}
if(arr[key%size].regNo==reg)
cout<<"Information for searched student is \nName : "<<arr[key%size].name<<" Reg #"<<arr[key%size].regNo<<" GPA : "<<arr[key%size].gpa;
else
cout<<"No Results found";
}
};
void main()
{
Hash H1;
student temp;
char check='y';
while(check=='y')
{
cout<<"Enter Student Name\n";
cin>>temp.name;
cout<<"Enter Student reg Number\n";
cin>>temp.regNo;
cout<<"Enter Student GPA\n";
cin>>temp.gpa;
H1.insert(temp);
cout<<"Do you want to enter more records. Y/N\n";
cin>>check;
}
system("cls");
cout<<"Enter Reg # to search student";
cin>>temp.regNo;
H1.search(temp.regNo);
}