leet.cpp
// Programmer: Price date: 4/11/13
// File: leet.cpp class: cs53
// Purpose: this file contains the defns of the functions for the leet translat
// program.
#include "leet.h"
#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;
void greet()
{
cout<<"\n\n\n.........Greetings, we are here to serve as your trasnlator.....\n\n";
return;
}
void signoff()
{
cout<<"\n\n...Bye now!!! Exiting............."<<endl<<endl;
return;
}
char menu()
{
char response;
cout<<"\n\n\tWhatcha wanna do?"<<endl<<endl;
cout<<"1. english to leet"<<endl;
cout<<"2. leet to english"<<endl;
cout<<"3. quit"<<endl<<endl
<<"Your choice: ";
cin>>response;
return response;
}
void translate()
{
char next;
cout<<"enter english phrase to translate to leet: ";
cin.ignore(40,'\n'); //dump leading whitespace
cin.get(next); //read char by char
cout<<endl;
while (next != '\n')
{
next=tolower(next); //consistency
if ('a'== next) cout<<LEET_A;
else if ('b'== next) cout<<LEET_B;
else if ('c'== next) cout<<LEET_C;
else if ('d'== next) cout<<LEET_D;
else if ('e'== next) cout<<LEET_E;
else if ('f'== next) cout<<LEET_F;
else if ('g'== next) cout<<LEET_G;
else if ('h'== next) cout<<LEET_H;
else if ('i'== next) cout<<LEET_I;
else if ('j'== next) cout<<LEET_J;
else if ('k'== next) cout<<LEET_K;
else if ('l'== next) cout<<LEET_L;
else if ('m'== next) cout<<LEET_M;
else if ('n'== next) cout<<LEET_N;
else if ('o'== next) cout<<LEET_O;
else if ('p'== next) cout<<LEET_P;
else if ('q'== next) cout<<LEET_Q;
else if ('r'== next) cout<<LEET_R;
else if ('s'== next) cout<<LEET_S;
else if ('t'== next) cout<<LEET_T;
else if ('u'== next) cout<<LEET_U;
else if ('v'== next) cout<<LEET_V;
else if ('w'== next) cout<<LEET_W;
else if ('x'== next) cout<<LEET_X;
else if ('y'== next) cout<<LEET_Y;
else if ('z'== next) cout<<LEET_Z;
else
cout<<next; //non-alpha chars
cin.get(next);
}
cout<<endl<<endl;
return;
}
void get_leet(char leet[])
{
cout<<"\nPlease enter leet phrase to translate (max "<<MAX_LEET_INPUT
<<" chars): ";
cin.ignore(499,'\n');
cin.getline(leet,499,'\n');
return;
}
void translate(const char leet[],char english[])
{
short i=0, start=0,j=0,jump=0; //counters and indexes
english[0]='\0'; //empty english return array
char leet_letter[MAX_LEET_SIZE]; //used to store a leet letter
char english_letter = '\0'; //store the translated leet
char match = '\0'; //temp translated leet
leet_letter[0]='\0'; //empty leet letter
while(leet[start] != '\0') //look until data ends
{
jump=0; //how long offset is
english_letter = '\0'; //empty english return array
english[j] = leet[start]; //cpy over leet char if not
// translatable
i=0; //cntr for size of substring of leet
while(leet[start+i] != '\0' && i<MAX_LEET_SIZE-1)//grabbing substrs no
{ // bigger than a biggest leet
match='\0'; //new try
copy(leet_letter,leet,start,i); //grab i+1 chars from leet
if(!strcmp(leet_letter,LEET_A)) match='a';//look for match in dictionary
else if(!strcmp(leet_letter,LEET_B)) match='b';
else if(!strcmp(leet_letter,LEET_C)) match='c';
else if(!strcmp(leet_letter,LEET_D)) match='d';
else if(!strcmp(leet_letter,LEET_E)) match='e';
else if(!strcmp(leet_letter,LEET_F)) match='f';
else if(!strcmp(leet_letter,LEET_G)) match='g';
else if(!strcmp(leet_letter,LEET_H)) match='h';
else if(!strcmp(leet_letter,LEET_I)) match='i';
else if(!strcmp(leet_letter,LEET_J)) match='j';
else if(!strcmp(leet_letter,LEET_K)) match='k';
else if(!strcmp(leet_letter,LEET_L)) match='l';
else if(!strcmp(leet_letter,LEET_M)) match='m';
else if(!strcmp(leet_letter,LEET_N)) match='n';
else if(!strcmp(leet_letter,LEET_O)) match='o';
else if(!strcmp(leet_letter,LEET_P)) match='p';
else if(!strcmp(leet_letter,LEET_Q)) match='q';
else if(!strcmp(leet_letter,LEET_R)) match='r';
else if(!strcmp(leet_letter,LEET_S)) match='s';
else if(!strcmp(leet_letter,LEET_T)) match='t';
else if(!strcmp(leet_letter,LEET_U)) match='u';
else if(!strcmp(leet_letter,LEET_V)) match='v';
else if(!strcmp(leet_letter,LEET_W)) match='w';
else if(!strcmp(leet_letter,LEET_X)) match='x';
else if(!strcmp(leet_letter,LEET_Y)) match='y';
else if(!strcmp(leet_letter,LEET_Z)) match='z';
if(match!='\0') // match for i+1 chars
{
jump=i; //set the offset
english_letter=match; //copy the match
}
i++; //increment size of poss leet match
}
if(english_letter!='\0') //translation found
{
english[j]=english_letter; //put translated letter into output
start = start + jump; //increment start for next search
}
start++;
english[j+1]='\0'; //ensure ntca of return english
j++;
}
return;
}
void copy(char letter[],const char array[],const short start,const short num)
{
short j=0;
letter[0]='\0'; //make ntca
for (int i=start; i<=start+num; i++)
{
letter[j]=array[i];
j++;
}
letter[j]='\0'; //make ntca
return;
}