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;

}