Question
Your assignment is to write a C program, decode.c, that will decode a secret message. The message will be 26 characters in length, and will
Your assignment is to write a C program, decode.c, that will 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, in ascending order, 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
Your lab should include at least the following functions:
getCode() - reads string from codefile.txt
getMessage() - reads encoded message from msgfile.txt
sortMessage() - sorts the encoded message
decodeMessage() - decodes and outputs the message
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 terminating NULL character).
Be sure to do error checking when attempting to open a file for input or output. For extra credit, pass the files names to this lab as command-line-arguments.
Remember that the main() function should appear as the first function in the program. Be sure to use the function prototypes for each of the functions that are used in your program. Output from your program should be sent to the terminal window (your screen) as well as the requested csis.txt output file.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started