Hey i got this assignment from my C++ class and I have no idea where to begin.
we were given some code to start out with & here are the instructions.
any help is appreciated
Your assignment is to decode a secret message. The message will be 26 characters in length, and will be given to you as a series of numbers. These numbers must be sorted and compared against a translation set of characters in order to decode it. This method is based upon the decoder rings that used to be available in packages of cereal.
Perhaps the easiest way to show how to decode a message is to first show how a message is encoded. First, the letters of the alphabet, the numbers, and any punctuation is scrambled into some sort of sequence.
For example, the string below can be found in codefile.txt:
CFL2AP(T9W,H!JEM86ND0BZ7UK1Y3VG4XR)ISOQ5. ;-
Notice that the above string contains 52 characters (including the nine blanks near the end). Now, let's suppose that we want to encode the message:
HELP ME!
Looking up each of the letters in the above string we find that H is the 11th character (zero-based indexing), E is the 14th, L the 2nd, P the 5th, one of the blanks the 41st, M the 15th, E the 14th, and ! the 12th. Therefore, our initial coding is:
11 14 02 05 41 15 14 12
Next, each number is assigned a three digit sequence number to precede it. These numbers indicate relative position, and need not be consecutive. For example, we might assign the following numbers:
10111
12214
12802
12905
13541
13715
14214
15112
Finally, the order of the numbers is scrambled:
13541
12214
10111
15112
13715
12802
14214
12905
This is the list of numbers you would be given to decode. To decode a message, simply reverse the process: read the numbers into an array and sort them into ascending order. "Cut" each sorted number into two, using the last two digits as the index to the correct character and print the character.
For this lab the encoded message in numeric format is given below and can be found in: msgfile.txt:
19546
14501
17309
13027
16149
21512
18035
14014
15700
12515
16514
18207
13407
14837
16842
21037
15333
13244
21224
16321
14146
16014
20727
12804
18811
13711
Given below is the main body of the program that you should use. For extra credit, pass the file names for this lab as command-line arguments.
Code:
int main(void) {
char code[MAX];
int msg[MAX];
int msgSize;
getCode(code);
msgSize = getMessage(msg);
sortMessage(msg, msgSize);
decodeMessage(code, msg, msgSize);
return 0;
}
Note that the string used to hold the 52 characters read from codefile.txt should be declared to be of length 53 (to reserve a space for the NULL character).
Here is a function that will sort an integer array:
Code:
void sortMessage(int msg[], int msgSize) {
int i, j, temp;
for (i = 1; i < msgSize; i++) {
temp = msg[i];
j = i - 1;
while (j >= 0 && temp < msg[j]) {
msg[j+1] = msg[j];
j = j - 1;
}
msg[j+1] = temp;
}
}