Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

#include #include std::string msg; int key; ///Determines the number of letters on each rail, given a key and an encoded message, and separates ///the encoded

image text in transcribed

image text in transcribed

#include #include

std::string msg; int key;

///Determines the number of letters on each rail, given a key and an encoded message, and separates ///the encoded message into an array of size key, representing the rails. The length of the cycle ///must be determined, along with the size of the remainder representing an unfinished cycle. void splitEncoded( std::string strarray[]){ int cycle= (2 * key)-2; int div=cycle; int len=msg.length(); int remainder=0; int pos=0; for(int i=0; i int counter=((len)/div);

if(cycle!=0 && remainder!=0){ counter= 2*counter; if((len%div)>=(div-(i-1))){ counter+=2; } else if((len%div)>i){ counter++; } } else if(((len)%div)>i){ counter++; }

strarray[i]=msg.substr(pos,counter); pos+=counter; cycle=cycle-2; remainder+=2;

}

}

///Takes the filled array representing the rails and cycles down and up to ///to retrieve the chars in the correct order, building the decoded /// message. std::string concatDecoded( std::string strarray[], int len){ std::string decodedMsg; int counter=0;

while(counter for(int i=0; i if(counter==len){ return decodedMsg; } decodedMsg+=strarray[i][0]; if(strarray[i].length()>1) strarray[i]=strarray[i].substr(1); else strarray[i]=""; ++counter;

} for(int i=key-2; i>0; i--){ if(counter==len){ return decodedMsg; } decodedMsg+=strarray[i][0]; if(strarray[i].length()>1) strarray[i]=strarray[i].substr(1); else strarray[i]=""; ++counter;

} } return decodedMsg; }

///returns a char converted to Uppercase

char toUpperCase (char c) { ///FILL THIS FUNCTION: converts char c to UPPER CASE and returns UPPER CASE.

return c; };

///Return true if char is alpha numeric

bool isAlphanumeric (char c) { ///FILL THIS FUNCTION: evaluates char c, returns true if c is Alphanumeric (0-9, A-Z, a-z)

return true;///this is just a place holder for your return statement. };

///Given an uncoded message and an array representing the rails ///cycles down and up the rails, filling the array until message ends void splitMessage( std::string strarray[]){ int counter=0;

while(counter for(int i=0; i strarray[i]+= msg[counter]; ++counter; if(counter==msg.length()) return; } for(int i=key-2; i>0; i--){ strarray[i]+= msg[counter]; ++counter; if(counter==msg.length()) return; } }

};

///given a filled array representing the rails, concatenates the ///strings on the rails and returns a coded message std::string concatEncoded(std::string strarray[]){ ///FILL THIS FUNCTION: given an array of strings representing the rails, ///and the size of the array, ///concatenate the strings into a single string representing the encoded message and ///return it.

return "this is an encoded message";///this is just a place holder for your return statement }

///given a message, formats the message for encoding or decoding void prepmessage(){ ///FILL THIS FUNCTION: given a message, converts message to all ///uppercase and removes non-alphanumeric characters including spaces ///and punctuation. Notice this is a VOID function!!!

} ///makes functions calls for encoding a message void encodeMessage(){ prepmessage(); std::string encoded[key];//an array representing the rails splitMessage(encoded); msg=concatEncoded(encoded);

};

///makes function calls to decode a coded message void decodeMessage(){ std::string decoded[key];//an array representing the rails splitEncoded(decoded); msg=concatDecoded( decoded, msg.length()); }

///********************************************** ///EVERYTHING BELOW THIS LINE REMAINS IN RAILFENCE.CPP ///**********************************************

///reads message from file stream in

std::string readMessage(std::istream& in) { std::string inmsg; std::string line; getline (in, line); while (in) { inmsg = inmsg + line + " "; getline (in, line); }

return inmsg; }

///given an out stream, prints the message

void printMessage(std::ostream& out){ out

}

///promps the user for a KEY 2-5

int getKey(){ int newkey; while(true){ std::cout>newkey){ if(newkey>1 && newkey

///prints a menu and asks the user for a selection

char getselection(){ std::string selection="0"; std::cin.clear(); while(selection[0]'3'){ std::cout

getline(std::cin, selection);

if(selection[0]'3'){ std::cout

int main() { bool quit=false; while(!quit){ char select=getselection(); switch(select){ case '1': key = getKey(); msg=readMessage(std::cin); printMessage(std::cout); encodeMessage(); printMessage(std::cout); break;

case '2': key = getKey(); msg=readMessage(std::cin); printMessage(std::cout); prepmessage(); decodeMessage(); printMessage(std::cout); break;

case '3': std::cout

} }

return 0; }

Everything is here, i need this code to take from a ifstream instead of cin and need help with concatencoded() and prepmessage()

General Instructions: Read the problem description below and implement this program in C++. The files for this assignment are provided under the folder for this assignment. You will be submitting two separate projects. See Part A and Part B for details. All of the functions making up this program are complete and in working order except for those marked with ///FILL THIS FUNCTION comments, which you must implement. The major challenge in this assignment is to divide the program into separately compiled modules. An Encoder module, consisting of files 'encoder.h' and 'encoder.cpp', containing code dealing specifically with encoding a message. A decoder module, consisting of files 'decoder.h' and 'decoder.cpp', containing code dealing specifically with decoding a message. There are some functions that are not specifically related to either of these modules, but that contain code needed by them. You should apportion these functions to the modules in a way consistent with the goals of high cohesion and low coupling. Consult the comments in the provided code for additional details. First step will be to change input from std::cin to taking input from a file called message.txt or "encoded.txt". o The given code has two Global Variables. Your finished code should have no Global Variables. Input Input to the program is taken from the standard input (cin). You will need to change this to make your program read a single line of input from the text file message.txt or encoded.txt" as appropriate. Example files are included. The encoded message in encoded.txt was encoded with a key of 3. You should also test your decoder on messages encoded with other keys. Output The program is set to print the result to screen. In addition to printing to the screen, your program should also print to a file "result.txt". Part A: Create a project containing the file 'railFence.cpp'. Implement the empty functions marked with "//Fill This Function comments, remove Global Variables, and ensure correct input and output. The program should compile and have expected Input and Output as outlined above. You will not need to split the functions into Modules for this portion. General Instructions: Read the problem description below and implement this program in C++. The files for this assignment are provided under the folder for this assignment. You will be submitting two separate projects. See Part A and Part B for details. All of the functions making up this program are complete and in working order except for those marked with ///FILL THIS FUNCTION comments, which you must implement. The major challenge in this assignment is to divide the program into separately compiled modules. An Encoder module, consisting of files 'encoder.h' and 'encoder.cpp', containing code dealing specifically with encoding a message. A decoder module, consisting of files 'decoder.h' and 'decoder.cpp', containing code dealing specifically with decoding a message. There are some functions that are not specifically related to either of these modules, but that contain code needed by them. You should apportion these functions to the modules in a way consistent with the goals of high cohesion and low coupling. Consult the comments in the provided code for additional details. First step will be to change input from std::cin to taking input from a file called message.txt or "encoded.txt". o The given code has two Global Variables. Your finished code should have no Global Variables. Input Input to the program is taken from the standard input (cin). You will need to change this to make your program read a single line of input from the text file message.txt or encoded.txt" as appropriate. Example files are included. The encoded message in encoded.txt was encoded with a key of 3. You should also test your decoder on messages encoded with other keys. Output The program is set to print the result to screen. In addition to printing to the screen, your program should also print to a file "result.txt". Part A: Create a project containing the file 'railFence.cpp'. Implement the empty functions marked with "//Fill This Function comments, remove Global Variables, and ensure correct input and output. The program should compile and have expected Input and Output as outlined above. You will not need to split the functions into Modules for this portion

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Transactions On Large Scale Data And Knowledge Centered Systems Vi Special Issue On Database And Expert Systems Applications Lncs 7600

Authors: Abdelkader Hameurlain ,Josef Kung ,Roland Wagner ,Stephen W. Liddle ,Klaus-Dieter Schewe ,Xiaofang Zhou

2012th Edition

3642341780, 978-3642341786

More Books

Students also viewed these Databases questions

Question

Identify three types of physicians and their roles in health care.

Answered: 1 week ago

Question

Compare the types of managed care organizations (MCOs).

Answered: 1 week ago