Question

In: Computer Science

This is C++. It's based on structured data, chapter 11 of Starting out with C++. Please...

This is C++. It's based on structured data, chapter 11 of Starting out with C++. Please use basic operations. Please read the requirements carefully and make sure it's executable. The first 2 answers that I received are nowhere close. Thank you.

Secret Codes!

Create a program that will accept a message from the user and either
encrypt ordecrypt it with the following algorithms:

To encrypt:

get the character you wish to encrypt

find the index of that character in the alphabet array

add the shift offset to the index

add the increment to the index

"wrap around" the new index so the result is between 0 and 29

find the character at the new index

To decrypt:

get the character you wish to decrypt

find the index of that character in the alphabet array

subtract the shift offset from the index

subtract the increment from the index

"wrap around" the new index so the result is between 0 and 29

find the character at the new index

repeat steps 1-6 for every shift offset

The alphabet is <space>,a-z(lowercase),<period>,<question mark>,
and <comma> in that order.

The increment should be +3 per letter position.

Here is a sample message. Who said it?

f..yqjrnvrpuabefw.j,ddxgcndpxmsdehsomjkcydfygtd.rrp?dgstmvxmf.wo?jxgrneslzifrgzyqv.v

Solutions

Expert Solution

#include <iostream>
using namespace std;

char c[]= {' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm','n','o','p','q','r','s','t','u','v','w','x','y','z', '.', '?'};
int inc = 3;

string encrypt(string text, int s)
{
string result = "";

// traverse text
for (int i=0;i<text.length();i++)
{
if (islower(text[i]))
result += c[((text[i] - 'a' + 1) + s + inc)%29];
else if (text[i] == ' ')
{
result += c[(0 + s + inc)%29];
}
else if (text[i] == '.')
{
result += c[(27 + s + inc)%29];
}
else if (text[i] == '?')
{
result += c[(28 + s + inc)%29];
}
else
{
result += text[i];
}
}

// Return the resulting string
return result;
}

int wrapIndex(int i, int i_max) {
return ((i % i_max) + i_max) % i_max;
}

string decryptHelper(string text, int s)
{
string result = "";

// traverse text
for (int i=0;i<text.length();i++)
{
if (islower(text[i]))
result += c[wrapIndex((text[i] - 'a' + 1) - s - inc, 29)];
else if (text[i] == ' ')
{
result += c[wrapIndex(0 - s - inc, 29)];
}
else if (text[i] == '.')
{
result += c[wrapIndex(27 - s - inc, 29)];
}
else if (text[i] == '?')
{
result += c[wrapIndex(28 - s - inc, 29)];
}
else
{
result += text[i];
}
}

// Return the resulting string
return result;
}


void decrypt(string text)
{
for (int i = 0; i < 28; i++)
{
cout << "Shift s: " << i << " decrypted string: " << decryptHelper(text, i) << endl;
}
}

// Driver program to test the above function
int main()
{
string text="attackatonce";
int s = 4;
cout << "Text : " << text;
cout << "\nShift: " << s;
string cipher = encrypt(text, s);
cout << "\nCipher: " << cipher;

cout << "Possible decryption: " << endl;
decrypt(cipher);

return 0;
}

Output:


Related Solutions

Chapter 11: Using the attached dataset “Chapter 11 Data Set 1” to test the research hypothesis...
Chapter 11: Using the attached dataset “Chapter 11 Data Set 1” to test the research hypothesis that males raise their hands in class more often than females. (Please note that these data are not exactly the data provided by the author). a. Is this a directional or non-directional hypothesis? b. Should you use a one-tailed or two-tailed test? c. What is the corresponding null hypothesis? d. Conduct the between groups t-test using Excel (either method). Use the .05 confidence level....
#11.     Consider the (fictitious) data labelled “problem # 11” which gives starting salaries of fresh...
#11.     Consider the (fictitious) data labelled “problem # 11” which gives starting salaries of fresh graduates and their CGPA at the time of graduation. (i) Construct a simple linear regression model that predicts the starting salary of a fresh graduate based on his/her CGPA. (a) clearly write the model, and (b) quote the R2 from Excel output and interpret the number. (10 + 5 =15 points) (ii) Using your model in (i) estimate the starting salary of a fresh...
Financial Management Chapter 11 Case CompU is looking at starting a major advertising campaign to further...
Financial Management Chapter 11 Case CompU is looking at starting a major advertising campaign to further expand their business. Based on preliminary estimates, the advertising campaign will cost $100,000 and will increase revenue by $80,000 per year for the next 5 years. The increased expenses excluding depreciation will be $35,000 per year. Inventory will increase by $25,000, accounts receivable will increase by $20,000, accounts payable will increase by $20,000, and accruals will increase by $15,000. The company is in the...
Starting Out with Java (6th Edition) chapter 8, 3PC Requirement: Each of the RoomCarpet and RoomDimension...
Starting Out with Java (6th Edition) chapter 8, 3PC Requirement: Each of the RoomCarpet and RoomDimension classes should have a toString method, an equals method, a copy method, and a copy constructor. The RoomCarpet class should have mutators and accessors for both of its fields.
Chapter 8: Employees and Payroll Additionally, please refer to Chapter 11 in your Cengage Accounting eText,...
Chapter 8: Employees and Payroll Additionally, please refer to Chapter 11 in your Cengage Accounting eText, accessible from the eText link in the Course Navigation Panel to the left of your screen. Requirement Tonya Latirno is a staff accountant for Cannally and Kennedy, a local CPA firm. For the past 10 years, the firm has given employees a year-end bonus equal to two weeks' salary. On November 15, the firm's management team announced that there would be no annual bonus...
2. What is Chapter 7 liquidation and Chapter 11 reorganization? When should each be used? Please...
2. What is Chapter 7 liquidation and Chapter 11 reorganization? When should each be used? Please choose one company that has gone through either type of bankruptcy proceeding and describe the circumstances leading up to the filing.
Chapter 6, Starting out with Programming and Logic, 4th Edition, Page 265 #6 Kinetic Energy In...
Chapter 6, Starting out with Programming and Logic, 4th Edition, Page 265 #6 Kinetic Energy In physics, an object that is in motion is said to have kinetic energy. The following formula can be used to determine a moving object’s kinetic energy: KE=12mv2 The variables in the formula are as follows: KE is the kinetic energy, m is the object’s mass in kilograms, and v is the object’s velocity, in meters per second. Design a function named kineticEnergy that accepts...
Starting out with python Lists and Tuples - US Population Data In this assignment, you will...
Starting out with python Lists and Tuples - US Population Data In this assignment, you will be reading the contents of a file into a list. This file contains the midyear population of the United States, in thousands, during the years 1950 through 1990. The first line in the file contains the population for 1950, the second line contains the populations for 1951, and so forth. You will ask the user to input a specific year to check the population...
Starting out with Control Structures: Program challenges in C++ by Tony Gaddis This problem was adapted...
Starting out with Control Structures: Program challenges in C++ by Tony Gaddis This problem was adapted from questions 9 and 10 on page 661 Write a program that keeps track of a speakers’ bureau. The program should use a structure to store the following data about a speaker: Name, Telephone Number, Speaking Topic, Fee Required. The program should use a vector of structures. It should let the user enter data into the vector, change the contents of any element, and...
PLEASE, it's URGENT Devise a digital marketing strategy of Adidas based on the below stages :...
PLEASE, it's URGENT Devise a digital marketing strategy of Adidas based on the below stages : Goal setting of Adidas Internet marketing strategy. Situation review of Adidas Internet marketing strategy.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT