Wednesday, 8 October 2014

Encryption using Hashing

/* CSEMATTER.BLOGSPOT.IN
    Encryption using Hashing         */


#include <iostream>
#include<cstring>
#include<cmath>
using namespace std;
int evaluate(string str);

int myatoi(string num)
{
int temp=1,res=0,i=0;
while(num[i]!='\0')
{
res=res+temp*num[i++]-'0';
temp=temp*10;
}
return res;
}
int main()
{
string num;
getline(cin,num);
int num=myatoi(num);
cout<<"\n";
while(num>0)
{
int var;
string str1;
getline(cin,str1);
cout << str1<< "\n";
var=evaluate(str1);
--num;
}
return 0;
}

int evaluate(string str)
{
   // cout << "Hello World!" << endl;
   int n,i,k,l,int1,int2;
 
   //string str;
 
    // getline(cin,str);
    int arr[256]={0},arr_cpyi[256]={0},arr_cpy[256]={0};
    for(int j=0;j<str.size();j++)
    {
    ++arr[str[j]];
    ++arr_cpyi[str[j]];
    ++arr_cpy[str[j]];
    }
    // int *ini=&arr_cpy[0];
   
   
       for(k=0;k<256;k++)
    {
   
    for(l=0;l<255;l++)
    {
    if(arr_cpyi[l]>arr_cpyi[l+1])
    {
    // cout<<"*";
    int temp1=arr_cpyi[l];
    arr_cpyi[l]=arr_cpyi[l+1];
    arr_cpyi[l+1]=temp1;
    }
    }
    }
    int z=0;
    for(i=0;i<256;i++)
    {
    if(arr_cpyi[i]!=0)
    ++z;
    else
    continue;
    }
   
    int j,q,v=0;
    int y=ceil(+(z/2))+1;
    // cout<<y<<"\n";
    // int y=str.size()-2;
   
   
    //for(i=255;i>=(256-str.size());i--)
    while(y>0)
    {
    j=0;
    q=255;
    char ch1,ch2;
    // while(arr_cpyi[i]!=arr_cpy[j])
    // j++;
   
    while(arr_cpyi[256-z]!=arr_cpy[j])
    j++;
    while(arr_cpyi[255-v]!=arr_cpy[q])
    q--;
    // cout<<"j="<<j;
    // cout<<"q="<<q<<"\n";
    arr_cpy[j]=0;
    arr_cpy[q]=0;
   
   
    // cout<<"j="<<j<<"\n";
    // cout<<"q="<<q<<"\n";
   
    // ch=*temp-*ini;
    int1=&arr_cpy[j]-&arr_cpy[0];
    int2=&arr_cpy[q]-&arr_cpy[0];
    ch1=(char)int1;
    ch2=(char)int2;
    for(int x=0;x<str.size();)
    {
    if(ch1==str[x])
    {
    str[x]=ch2;
   
    ++x;
    }
    else if(ch2==str[x])
    {
    str[x]=ch1;
   
    ++x;
    }
    else
    ++x;
    }
    --z;
    ++v;
    --y;
   
   
    }
   
   
    cout<< str << endl;
   
    return 0;
}
   

No comments:

Post a Comment