There is no operator operator -
in the class std::string
. You should use the method erase
instead,
However if you will output strings for each row then there will not be two loops one after another.
It seems the assignment means something like the following
#include <iostream>
#include <iomanip>
int main()
{
while ( true )
{
const char c1 = '+';
const char c2 = ' ';
std::cout << "Enter a non-negative number (0 - exit): ";
unsigned int n;
if ( not ( std::cin >> n ) or ( n == 0 ) ) break;
std::cout << '\n';
for ( unsigned int i = 1; i <= n; i++ )
{
for ( unsigned int j = 1; j <= i; j++ )
{
std::cout << c1;
}
std::cout << std::setw( 2 * n - i ) << std::setfill( c2 )
<< std::right << c2;
for ( unsigned int j = n - i + 1; j != 0; j-- )
{
std::cout << c1;
}
std::cout << '\n';
}
std::cout << std::endl;
}
return 0;
}
The program output might look like
Enter a non-negative number (0 - exit): 10
+ ++++++++++
++ +++++++++
+++ ++++++++
++++ +++++++
+++++ ++++++
++++++ +++++
+++++++ ++++
++++++++ +++
+++++++++ ++
++++++++++ +
Enter a non-negative number (0 - exit): 9
+ +++++++++
++ ++++++++
+++ +++++++
++++ ++++++
+++++ +++++
++++++ ++++
+++++++ +++
++++++++ ++
+++++++++ +
Enter a non-negative number (0 - exit): 8
+ ++++++++
++ +++++++
+++ ++++++
++++ +++++
+++++ ++++
++++++ +++
+++++++ ++
++++++++ +
Enter a non-negative number (0 - exit): 7
+ +++++++
++ ++++++
+++ +++++
++++ ++++
+++++ +++
++++++ ++
+++++++ +
Enter a non-negative number (0 - exit): 6
+ ++++++
++ +++++
+++ ++++
++++ +++
+++++ ++
++++++ +
Enter a non-negative number (0 - exit): 5
+ +++++
++ ++++
+++ +++
++++ ++
+++++ +
Enter a non-negative number (0 - exit): 4
+ ++++
++ +++
+++ ++
++++ +
Enter a non-negative number (0 - exit): 3
+ +++
++ ++
+++ +
Enter a non-negative number (0 - exit): 2
+ ++
++ +
Enter a non-negative number (0 - exit): 1
+ +
Enter a non-negative number (0 - exit): 0