In: Computer Science
(1) Prompt the user for a title for data. Output the title. (1
pt)
Ex:
Enter a title for the data: Number of Novels Authored You entered: Number of Novels Authored
(2) Prompt the user for the headers of two columns of a table.
Output the column headers. (1 pt)
Ex:
Enter the column 1 header: Author name You entered: Author name Enter the column 2 header: Number of novels You entered: Number of novels
(3) Prompt the user for data points. Data points must be in this
format: string, int. Store the information before the
comma into a string variable and the information after the comma
into an integer. The user will enter -1 when they have finished
entering data points. Output the data points. Store the string
components of the data points in a vector of strings. Store the
integer components of the data points in a vector of integers. (4
pts)
Ex:
Enter a data point (-1 to stop input): Jane Austen, 6 Data string: Jane Austen Data integer: 6
(4) Perform error checking for the data point entries. If any of
the following errors occurs, output the appropriate error message
and prompt again for a valid data point.
Ex:
Enter a data point (-1 to stop input): Ernest Hemingway 9 Error: No comma in string. Enter a data point (-1 to stop input): Ernest, Hemingway, 9 Error: Too many commas in input. Enter a data point (-1 to stop input): Ernest Hemingway, nine Error: Comma not followed by an integer. Enter a data point (-1 to stop input): Ernest Hemingway, 9 Data string: Ernest Hemingway Data integer: 9
(5) Output the information in a formatted table. The title is right
justified with a setw() value of 33. Column 1 has a setw() value of
20. Column 2 has a setw() value of 23. (3 pts)
Ex:
Number of Novels Authored Author name | Number of novels -------------------------------------------- Jane Austen | 6 Charles Dickens | 20 Ernest Hemingway | 9 Jack Kerouac | 22 F. Scott Fitzgerald | 8 Mary Shelley | 7 Charlotte Bronte | 5 Mark Twain | 11 Agatha Christie | 73 Ian Flemming | 14 J.K. Rowling | 14 Stephen King | 54 Oscar Wilde | 1
(6) Output the information as a formatted histogram. Each name is
right justified with a setw() value of 20. (4 pts)
Ex:
Jane Austen ****** Charles Dickens ******************** Ernest Hemingway ********* Jack Kerouac ********************** F. Scott Fitzgerald ******** Mary Shelley ******* Charlotte Bronte ***** Mark Twain *********** Agatha Christie ************************************************************************* Ian Flemming ************** J.K. Rowling ************** Stephen King ****************************************************** Oscar Wilde *
_________________________________
given code: Main.cpp
#include <iostream>
#include <string>
#include <vector>
//FIXME: stringstream library
//FIXME: stream manipulation library
using namespace std;
int main() {
/* Type code here. */
return 0;
}
please help i am stuck on this.
SOLUTION-
I have solve the problem in python code with comments and
screenshot for easy understanding :)
CODE-
//c++ code
//header files
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
//main
int main()
{
//declaration of vectors
vector<string> dataStr;
vector<int> dataPoint;
string title, header1, header2,s;
//ask for input
cout<<"Enter a title for the data: ";
getline(cin,title); //get
title
cout<<"You entered:
"<<title<<endl;
cout<<"Enter the column
1 header: ";
getline(cin,header1); //get header name
cout<<"You entered:
"<<header1<<endl;
cout<<"<Enter the
column 2 header: ";
getline(cin,header2); //get column 2 header
cout<<"You entered:
"<<header2<<endl;
while(true){ //loop until user
give -1 to exit
cout<<"Enter a data
point (-1 to stop input): ";
getline(cin,s);
if(s == "-1"){ //if '-1' than
break
break;
}
else{ //else read
int commaCount = 0;
for(int i=0; i<s.length();
i++){
if(s[i] == ',')
commaCount++;
}
if(commaCount == 0){
cout<<"Error: No comma
in string."<<endl;
}
else if(commaCount >
1){
cout<<"Error: Too many
commas in input."<<endl;
}
else{
string firstWord = s.substr(0,
s.find(","));
string secondWord = s.substr(s.find(",")+1, s.length()-1);
firstWord.erase(0, firstWord.find_first_not_of(' '));
secondWord.erase(0, secondWord.find_first_not_of(' '));
int countNumbers = 0;
for(int i=0; i<secondWord.length(); i++){
if(secondWord[i] >='0' && secondWord[i] <=
'9'){
countNumbers++;
}
}
if(countNumbers == secondWord.length()){
dataPoint.push_back(atoi(secondWord.c_str()));
//dataPoint.push_back(stoi(secondWord));
dataStr.push_back(firstWord);
cout<<"Data string: "<<firstWord<<endl;
cout<<"Data integer: "<<secondWord<<endl;
}
else{
cout<<"Error: Comma not followed by an
integer."<<endl;
}
}
}
}
//allignment
cout<<right<<setw(33)<<title<<endl;
cout<<left<<setw(20)<<header1<<"|"<<right<<setw(23)<<header2<<endl;
cout<<"-------------------------------------"<<endl;
for(int i=0; i<dataStr.size(); i++){
cout<<left<<setw(20)<<dataStr[i]<<"|"<<right<<setw(23)<<dataPoint[i]<<endl;
}
cout<<endl<<endl;
for(int i=0; i<dataStr.size();i++){
cout<<dataStr[i]<<" ";
for(int j=0; j<dataPoint[i];j++){
cout<<"*";
}
cout<<endl;
}
return 0;
}
SCREENSHOT-
IF YOU HAVE ANY DOUBT PLEASE COMMENT DOWN BELOW I WILL
SOLVE IT FOR YOU:)
----------------PLEASE RATE THE ANSWER-----------THANK
YOU!!!!!!!!----------