Here's what I want it to do:
the left column represents the new string being assigned, the right is the source, before the digits are rearranged (that would work only if it was 15 characters long):
Code:
sOutput Value
sOutput[x] sInput[x]
0 1
1 3
2 5
3 7
4 9
5 11
6 13
7 15
8 0
9 2
10 4
11 6
12 8
13 10
14 12
15 14
For example: sOutput[1] has the same value as sInput[3]... My method for doing this is as follows:
Code:
void scramble()
{
char sInput[1024];
char sOutput[1024];
int iLength = 0;
int i = 0, x = 0, y = 0, z = 0;
cout << "What message do you want to scramble?\n";
cin.get (sInput, 1024);
cin.ignore(1024, '\n');
iLength = strlen( sInput);
strrev(sInput);
x = 1;
for (i = 0; (i<iLength) && (sInput[x] != '\0'); i++)
{
sOutput[i] = sInput[x];
x = x + 2;
}
x = 0;
for (i; (i<iLength) && (sInput[x] != '\0'); i++)
{
sOutput[i] = sInput[x];
x = x + 2;
}
sOutput[i] = '\0';
cout << sOutput << endl << endl;
// 1 2 3 4 5 is an input example
// 1 3 5 2 4 is the scrambled example
// 4 2 5 3 1 is what it looks like after strrev
}
All that works fine... unless you input a string at least 10 characters (0123456789 won't work, but 123456789 will.)
If you input 10 or more characters, it gives you mostly garbage characters.
Also, I can't think of a simple way to descramble that so that 42531 becomes 13524 (strrev would work for that part), but then I need 13524 to be able to become 12345... so it would work both ways.