So for starters, compare "right":
Code:
char Letter[91] = {'a', 'b', 'c', ...};
to "wrong":
Code:
char *Letter[91] = {"a", "b", "c", ...};
You want to compare letters with ==, as opposed to (failing to build) one-character strings and comparing with strcmp. (Notice that strings must end with a \0 character, which you are consistently failing to do -- this is why your decrypt fails so horribly; you are using strcat to tack things on to the end of your Result array, except for the part where you never initialize Result to be a valid string in the first place, hence the end of it may not exist.)
If you think you are using more than one (in encrypt) or three (in decrypt) elements of your letter[16] array, then you are sadly deluded.
EDIT: While we're here: why are we even using char*? Why aren't we using std::string? (I have the sneaking suspicion the answer is "because ... what's that?", or worse, "because my compiler doesn't know about it", both of which are very bad reasons.)