Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

C++ Given Code: #include #include using namespace std; int main() { //declare variables to store user input bool cont = true; //implement a loop so

C++ Given Code:

#include #include using namespace std;

int main() { //declare variables to store user input bool cont = true;

//implement a loop so that it will continue asking until the user provides a positive integer // the following provides ONLY part of the loop body, which you should complete { cout <<"How many words are in your message? "; cout <<"Enter value: "; // get user input integer here cout <<" Invalid value. Please Re-enter a number of positive value "; }

//declare a dynamic array of string type with the specified number of elements

// while(cont) { cout <<" Select one of these options: (1) Get Message (2) Encrypt (3) Print (4) Quit"; cout <<" Selection: "; // obtain user input option (an integer) // based on the input the program will perform one of the following operations using switch statement switch(selection) { case 1://Get Message // Get the specified number of words from the user break; case 2: //Encrypt // Based on the shifting encryption strategy described above, encrypt the individual words // Be careful about the difference between the lower case letters and upper case letters break;

case 3: //Print // Print out the encrypted words

break;

case 4: cont = false; break; default: break; } } // Remember to release the memory you allocate above!! return 0;

}

Encryption using Pointers and Dynamic Arrays

Objective:

Agent James Vond, one of our secret agents, Agent 008, has recently been captured in the Caribbean. We have been able to establish contact with him, but need help sending him messages in secret to let him know help is on the way. We believe we can send him messages using a Caesar Cipher, but need your help encoding it. Agent Vond, we task you with encrypting the message and helping Agent 008 escape the Caribbean

Sincerely, M.

Assignment:

The Caesar Cipher technique is one of the earliest and simplest method of encryption. Its a substitution cipher, i.e., each letter of a given text is replaced by a letter some fixed number of positions down the alphabet. For example with a shift of 1, A would be replaced by B, B would become C, and so on.

The encryption equation is E(x) = (x + n) % 26.

The x = the numeric letter value, n = number of shifts, and (% 26) is so that whatever value your result is, it will stay within the alphabet range (0-25).

However, since we will be looking at characters in strings, you need to implement ASCII code so that your equation will look more like:

letter = ( ( (letter - 'A') + shift ) % 26 + 'A')) if it is upper case

Or

letter = ( ( (letter - 'a') + shift ) % 26 + 'a' ) ) if it is lower case.

You subtract 'A' and 'a' in order to get the value of the letter. In ASCII code, letters are assigned values. For example, 'B' is 66. If I subtract the value of 'A' (65) then I get 1. This helps me encode because I can get the values 0-25 for each letter.

Your assignment is to implement a dynamic string array in order to store a message of variable length, and then a pointer to iterate through each letter of the string in order to encrypt it using the equations given above.

You will need to ask the user for the amount of words in the message and then create your dynamic array that way. If the amount of words is a negative number or equal to zero you should output to the screen "Invalid value. Please Re-enter a number of positive value" until they have the correct input.

Get Message

Use cin to get each word the user wishes to put into the message.

After they have input all the strings required, ask for the number of letter shifts they would like to do

Encrypt

Encrypt each letter in each string using the equations provided above if the getMessage pointer isn't null (aka if Get Message option has already been called)

Print Message

Print out the encrypted or unencrypted message

Quit

Simply quits out of the loop

Input:

You many assume that the input to be encrypted will only consist of capital and lower letters, and no other symbols such as white spaces, numbers, or special characters will have to be encrypted.

In order to choose the different options you will take an integer value as input. 1 is for Get Message, 2 is for Encrypt, 3 is for Print, 4 is for Quit

Requirements:

  • Use a dynamic array to store a message of variable length (not using dynamic array will receive 50% penalty)

  • Use a pointer to iterate through each string and encrypt it

  • Do not allow for number of letter shifts to be > 26 (Must be in the range of 0-25 aka the range of 26) [Ex: If I give you 27, your shift should end up being 1] [Hint: %]

  • Do not expect int to hold all possible values when I input the value of shift, test very large numbers

  • Print out your message using pointer arithmetic (ex: *p; p++;)

  • DO NOT iterate through your pointer like an array when printing!!

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

Data Mining Concepts And Techniques

Authors: Jiawei Han, Micheline Kamber, Jian Pei

3rd Edition

0123814790, 9780123814791

Students also viewed these Databases questions

Question

Find the derivative of y= cos cos (x + 2x)

Answered: 1 week ago

Question

4. What advice would you give to Carol Sullivan-Diaz?

Answered: 1 week ago