In: Computer Science
c++
The purpose of this project is to test your ability to use files, class design, operator overloading, and Strings or strings effectively in program design
Create a program which will read a phrase from the user and create a framed version of it for printing. For example, the phrase "hello world"would result in:
********* * hello * * world * *********
Whereas the phrase "the sky is falling"might be:
*********** * the * * sky * * is * * falling * ***********
Or:
*********** * the * * sky * * is * * falling * ***********
Or even:
*********** * the * * sky * * is * * falling * ***********
Depending on whether or not the user asked for left, centered, or right justification — respectively — of the phrase's words within the frame. Note how the frame exactly fits the phrase based on the longest word within. Neat, eh?
The phrase "O | -+- | /-\"when centered would become:
******* * O * * | * * -+- * * | * * /-\ * *******
(Okay, so it's a sad excuse for a stick figure, but hey! I've never claimed to be a great good decent artist, now have I? *phbbt*)
Also allow the user to specify what character you are to make the frame from. Typical choices would be @, #, *, +, x, X, o, or O. But let them tell you anything that will print just fine. (Hint: cctype has a function called isprint that tells if a character is printable.)
Give them the option of reading phrases from the keyboard or a file they specify (assume each line of the input stream contains a single phrase).
The user should also be able to choose if the framed phrase is printed on the screen or into a file they specify.
In case it isn't clear, you should create a 'frame the phrase' class. It should have overloaded operators for at leastinput and output. (Although concatenation might prove interesting, too...)
add a choice of frame types: single line, double line, or shaded. For instance:
+---------+ +============+ +--------+ +=======+ | | || || | |* || ||# | | || || | |* || ||# +---------+ +============+ +--------+* +=======+# ********** #########
/******************************************************************************
Program to read a phrase and display in a framed version of it.
*******************************************************************************/
#include <string>
#include <vector>
#include <string.h>
#include <stdio.h>
#include <iostream>
using namespace std;
#define MAX_NAME_LENGTH 200
int maxlength;
std::vector<std::string> split(std::string str,std::string
sep){
char* cstr=const_cast<char*>(str.c_str());
char* current;
std::vector<std::string> arr;
current=strtok(cstr,sep.c_str());
while(current!=NULL){
arr.push_back(current);
current=strtok(NULL,sep.c_str());
}
return arr;
}
int main()
{
char name[MAX_NAME_LENGTH];
std::vector<std::string> arr;
cout<<"Enter the phrase:"<<endl;
cin.getline(name,MAX_NAME_LENGTH);
arr=split(name," ");
for(int j=0;j<arr.size();j++){
if(arr[j].length() >
maxlength)
maxlength= arr[j].length();
}
cout<<"############# Output
###############"<<endl;
for(int k=0;k<=maxlength+2;k++)
printf("%s","*");
for(size_t i=0;i<arr.size();i++)
printf("\n*%s*",arr[i].c_str());
cout<<endl;
for(int k=0;k<=maxlength+2;k++)
printf("%s","*");
return 0;
}