'Multiplication Tables c++

I'm trying to build a multiplication table chart that looks like the following:

     1    2    3    4    5    6    7    8    9   10
   ----|----|----|----|----|----|----|----|----|----|
 1|   1|   2|   3|   4|   5|   6|   7|   8|   9|  10|
 -|----|----|----|----|----|----|----|----|----|----|
 2|   2|   4|   6|   8|  10|  12|  14|  16|  18|  20|
 -|----|----|----|----|----|----|----|----|----|----|
 3|   3|   6|   9|  12|  15|  18|  21|  24|  27|  30|
 -|----|----|----|----|----|----|----|----|----|----|
 4|   4|   8|  12|  16|  20|  24|  28|  32|  36|  40|
 -|----|----|----|----|----|----|----|----|----|----|
 5|   5|  10|  15|  20|  25|  30|  35|  40|  45|  50|
 -|----|----|----|----|----|----|----|----|----|----|
 6|   6|  12|  18|  24|  30|  36|  42|  48|  54|  60|
 -|----|----|----|----|----|----|----|----|----|----|
 7|   7|  14|  21|  28|  35|  42|  49|  56|  63|  70|
 -|----|----|----|----|----|----|----|----|----|----|
 8|   8|  16|  24|  32|  40|  48|  56|  64|  72|  80|
 -|----|----|----|----|----|----|----|----|----|----|
 9|   9|  18|  27|  36|  45|  54|  63|  72|  81|  90|
 -|----|----|----|----|----|----|----|----|----|----|
10|  10|  20|  30|  40|  50|  60|  70|  80|  90| 100|
 -|----|----|----|----|----|----|----|----|----|----|

I'm having trouble getting the lines that are inside of the table. I'm not sure if I'm supposed to put those dashed lines inside of my nested for loops or if I have to create a separate loop for them.

Here is my code:

for (int i = 1; i <= tableNumber; i++)
{
    cout << setw(5) << i;
}

    cout << endl << "   ";

for (int x = 1; x <= tableNumber; x++)
{
     cout << "----|";
}

     cout << endl;

for (int row = 1; row <= tableNumber; row++)
{
    cout << setw(2) << row << "|";

  for (int col = 1; col <= tableNumber; col++)
  {
    cout << setw(4) << row*col;
    cout << "|";
  }

  cout << endl << endl;

 }
c++


Solution 1:[1]

You're close!

I'd recommend looking at the end of your for-loop that has the nest inside of it. At the end, you just print two endlines. Perhaps instead of printing two endlines (which creates a gap in between each row), you can get it to print something else. ;-)

(I'm assuming this is homework mind you, so I'm trying not to give it away--no fun in that!)

Solution 2:[2]

You should set a row of the table, then go through and add the bottom lines. Increase the row value and continue.

Example:

int r (1);
while (r < rowNumbers)
{
    for (int c = 1; c < colNumbers; c++)
    {
        cout << setw(4) << row*col;
        cout << "|";
    }

     cout << endl

    for (int x = 1; x <= colNumbers; x++)
    {
         cout << "----|";
    }

    court << endl;
    r++;
}

This puts the lines under the numbers, then moves to the next row.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 James Palawaga
Solution 2