vendredi 1 décembre 2017

Printing a table using nested while loops only

I'm trying to print the following table in C++:

     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   

Using nested while loops only.


I have two main problems here:

  • I don't understand how to do it without using a non-nested while at the beginning (to print the first line), or an if statement for the first line.
  • Using setw I have problems trying to align the numbers with two digits.

Here is what I tried

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
  int k=0;
  while(k<=10)
  {cout << k << setw(5);
      k++;
  };
  cout << "\n";

  int i=1;
  while(i<=10){
      cout << i << setw(5);
      int j=1;
      while(j<=10){
          cout<< i*j << setw(5);
          j++;
      }
      cout << "\n";
    i++;
  }  
  return 0;
}

But, as said, I used a non-nested while at the beginning, and also the output is:

0    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 

Where the two-digits numbers are not aligned in the proper way. On the other hand I cannot think a way to modify the loop in order to increase the space only for two digits number, without using an if statement.

So am I missing something or it is not possible to print the table above without using if or non-nested while?

Aucun commentaire:

Enregistrer un commentaire