#include #include #define PADDING 1 using std::cin; using std::cout; using std::endl; using std::string; int main(void) { string name; const int pad = PADDING; const int rows = pad * 2 + 3 ; // * 2 blanks + (greeting+borders) cout << "Type your name: "; cin >> name; // Build the message to write const string greeting = "Hello, " + name + "!"; // pad * 2 blank borders + 2 * edges const string::size_type cols = greeting.size() + pad * 2 + 2; cout << std::endl; // Write 'rows' rows of output // invariant: we have written 'r' rows for (int r = 0; r != rows; r++) { string::size_type c = 0; while (c < cols) { if ( r == pad + 1 && c == pad + 1) { cout << greeting; c += greeting.size(); } else { if (r == 0 || r == rows - 1 || c == 0 || c == cols - 1) cout << "*"; else cout << " "; c++; } } cout << std::endl; } return 0; }