I've created this program to decrypt sentences with a key that shifts the alphabet. The problem with it is that when i have any non-Alphabetic characters, the punctuation or numbers will turns it into a Alphabetic character for some reason. I cannot find the problem with the code. I know the error occurs when it's checking for the uppercase letters because uppercase letters are always displayed. If you guys could shed any light onto this that would be great. I also commented out the quick fix I made...but it does not allow some characters as well.
Code:
#include <iostream>
#include <fstream> //read from file
using namespace std;
int main()
{
int offset;
const int ENCRYPTED = 250;
char message[ENCRYPTED];
char AlphabetLower[]="abcdefghijklmnopqrstuvwxyz";
char AlphabetHigher[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char AlphabetLowerKey[26];
char AlphabetHigherKey[26];
// char OtherChars[]="1234567890- ;:,.?!$&*()=+-";
int length;
int k = 0;
int l = 0;
int m = 0;
int n = 0;
int loop = 1;
int num = 0;
int arraynum = 0;
cout << "Please enter the encrypted message: ";
cin.getline (message, ENCRYPTED, '\n');
cin.ignore(100, '\n');
cout << "Please enter the decryption key: ";
cin >> offset;
int a = offset; //Have to be initialized after offset is inputted
int b = offset;
length = strlen(message);
for (a; a < 26; a++)
{
AlphabetLowerKey[k]=AlphabetLower[a];
k++;
}
for (b; b < 26; b++)
{
AlphabetHigherKey[l]=AlphabetHigher[b];
l++;
}
for (m; m < offset; m++)
{
AlphabetLowerKey[k]=AlphabetLower[m];
k++;
}
for (n; n < offset; n++)
{
AlphabetHigherKey[l]=AlphabetHigher[n];
l++;
}
while (arraynum < length)
{
while (loop == 1)
{
if (message[arraynum] == AlphabetLower[num])
{
message[arraynum] = AlphabetLowerKey[num];
loop = 0;
}
else
if (message[arraynum] == AlphabetHigher[num])
{
message[arraynum] = AlphabetHigherKey[num];
loop = 0;
}
else
// if (message[arraynum] == OtherChars[num])
// {
// loop = 0;
// }
// else
num++;
}
num = 0;
loop = 1;
arraynum++;
}
cout << message << endl;
return 0;
}