#include "CodeWheel.h"
#include <iostream>
using std::endl;
using std::cout;
const int ALPHABET_MAX = 26;
const int ASCII_LOWERCASE_MAX = 'z';
CodeWheel::CodeWheel(short assignRotor, short assignStartPos)
: startPos(assignStartPos)
{
//as far as I can tell, there isn't a better way to
//create unique wheels shy of either 1) creating a
//class for every rotor type, or 2) do it this way
//with a big switch
int i = 0;
char c = 'a';
for(i = 0; i < ALPHABET_MAX; ++i)
{
alphaSet[0][i] = c;
++c;
}
switch(assignRotor)
{
case 0:
alphaSet[1] [0] = 't'; alphaSet[1][1] = 'w'; alphaSet[1][2] = 'h';
alphaSet[1] [3] = 'v'; alphaSet[1][4] = 'b'; alphaSet[1][5] = 's';
alphaSet[1] [6] = 'm'; alphaSet[1][7] = 'a'; alphaSet[1][8] = 'l';
alphaSet[1] [9] = 'n'; alphaSet[1][10] = 'u'; alphaSet[1][11] = 'i';
alphaSet[1][12] = 'c'; alphaSet[1][13] = 'z'; alphaSet[1][14] = 'd';
alphaSet[1][15] = 'q'; alphaSet[1][16] = 'x'; alphaSet[1][17] = 'p';
alphaSet[1][18] = 'e'; alphaSet[1][19] = 'k'; alphaSet[1][20] = 'o';
alphaSet[1][21] = 'r'; alphaSet[1][22] = 'y'; alphaSet[1][23] = 'f';
alphaSet[1][24] = 'g'; alphaSet[1][25] = 'j';
break;
case 1:
alphaSet[1] [0] = 'f'; alphaSet[1][1] = 'h'; alphaSet[1][2] = 'm';
alphaSet[1] [3] = 'x'; alphaSet[1][4] = 'a'; alphaSet[1][5] = 'i';
alphaSet[1] [6] = 't'; alphaSet[1][7] = 'k'; alphaSet[1][8] = 'b';
alphaSet[1] [9] = 'u'; alphaSet[1][10] = 's'; alphaSet[1][11] = 'y';
alphaSet[1][12] = 'l'; alphaSet[1][13] = 'z'; alphaSet[1][14] = 'e';
alphaSet[1][15] = 'j'; alphaSet[1][16] = 'w'; alphaSet[1][17] = 'r';
alphaSet[1][18] = 'c'; alphaSet[1][19] = 'n'; alphaSet[1][20] = 'q';
alphaSet[1][21] = 'v'; alphaSet[1][22] = 'p'; alphaSet[1][23] = 'd';
alphaSet[1][24] = 'o'; alphaSet[1][25] = 'g';
break;
case 2:
alphaSet[1] [0] = 'j'; alphaSet[1][1] = 'u'; alphaSet[1][2] = 'o';
alphaSet[1] [3] = 'f'; alphaSet[1][4] = 'w'; alphaSet[1][5] = 'g';
alphaSet[1] [6] = 'p'; alphaSet[1][7] = 'e'; alphaSet[1][8] = 'k';
alphaSet[1] [9] = 'v'; alphaSet[1][10] = 'n'; alphaSet[1][11] = 'z';
alphaSet[1][12] = 'b'; alphaSet[1][13] = 't'; alphaSet[1][14] = 'c';
alphaSet[1][15] = 'q'; alphaSet[1][16] = 'i'; alphaSet[1][17] = 's';
alphaSet[1][18] = 'a'; alphaSet[1][19] = 'l'; alphaSet[1][20] = 'x';
alphaSet[1][21] = 'h'; alphaSet[1][22] = 'y'; alphaSet[1][23] = 'r';
alphaSet[1][24] = 'd'; alphaSet[1][25] = 'm';
break;
case 3:
alphaSet[1] [0] = 'f'; alphaSet[1][1] = 'o'; alphaSet[1][2] = 'l';
alphaSet[1] [3] = 'z'; alphaSet[1][4] = 'b'; alphaSet[1][5] = 't';
alphaSet[1] [6] = 'k'; alphaSet[1][7] = 'v'; alphaSet[1][8] = 'g';
alphaSet[1] [9] = 's'; alphaSet[1][10] = 'a'; alphaSet[1][11] = 'p';
alphaSet[1][12] = 'j'; alphaSet[1][13] = 'w'; alphaSet[1][14] = 'e';
alphaSet[1][15] = 'y'; alphaSet[1][16] = 'c'; alphaSet[1][17] = 'u';
alphaSet[1][18] = 'n'; alphaSet[1][19] = 'h'; alphaSet[1][20] = 'r';
alphaSet[1][21] = 'm'; alphaSet[1][22] = 'q'; alphaSet[1][23] = 'd';
alphaSet[1][24] = 'x'; alphaSet[1][25] = 'i';
break;
}
cout << "StartPosition is " << startPos << endl;
short holderFirst, holderSecond;
for(i = 0; i < ALPHABET_MAX; ++i)
{
holderFirst = (short)alphaSet[0][i] + startPos;
if((holderFirst) > ASCII_LOWERCASE_MAX)
{
holderFirst = holderFirst - ALPHABET_MAX;
}
alphaSet[0][i] = holderFirst;
holderSecond = (short)alphaSet[1][i] + startPos;
if((holderSecond) > ASCII_LOWERCASE_MAX)
{
holderSecond -= ALPHABET_MAX;
}
alphaSet[1][i] = holderSecond;
cout << alphaSet[0][i] << ", " << alphaSet[1][i] << endl;
}
}
void CodeWheel::ConvertLetter(char& newLetter)
{
}
# |
Change |
User |
Description |
Committed |
|
#1
|
4634 |
gweiss |
Adding Enigma to public so I can get it.
:) |
|
|