## while and do-while Loops

### while Loop

Problem: A program should read in one positive number and then output a value that tells how many times the given number has to be tripled in order to become greater than 100. Note: if the given number is greater than 100 on input, then no triplings are required and the result should be 0.

This problem is quite similar to the previous one. We could use a `do` `while` loop and add a counter to count the triplings. However, a `do` `while` loop examines the condition at the end of each iteration, while this task requires no iterations if the value on input is greater than 100. Perhaps we could use an `if` statement to check whether the given number is immediately greater than 100?

There is a simpler solution: a `while` loop is very similar to a `do` `while` loop, except that the condition is examined at the start of each iteration, including the first iteration. This is the program that solves the given task using a `while` loop:

The statement

```num *= 3;
```

multiplies the value of variable `num` by 3. It has the same effect as the statement

```num=num*3;
```
```#include <iostream>
using namespace std;

int main()
{
double num=0;
cout <<"Enter a positive number: ";
cin >> num;

double count=0;
while (num <= 100)
{
num *= 3;
count++;
}

cout << "It needs to be tripled " << count << " times." << endl;
}
```

Notice that this `while` loop will iterate while `num` is less than or equal to 100. The output should look like this:

```Enter a positive number: 20
It needs to be tripled 2 times.
```

Or, if we enter a number greater than 100:

```Enter a positive number: 999
It needs to be tripled 0 times.
``` A `while` loop should not be terminated by a semicolon. This is akin to a `for` loop.

Perhaps our program gives a somewhat sparse output. Let us print out the result of each tripling, too. We only need to add the following statement just below the `count++` statement:

```        cout << "At step " << count << " the number equals " << num
<< endl;
```

Here is one possible output:

```Enter a positive number: 2.3
At step 1 the number equals 6.9
At step 2 the number equals 20.7
At step 3 the number equals 62.1
At step 4 the number equals 186.3
It needs to be tripled 4 times.
```

Obviously, all three kinds of loops, `for`, `while` and `do` `while`, share many similarities in the C++ language. They are so similar to each other that we might ask if we really need all three of them. The answer is that, in theory, we do not.

Still, having all three seems to be quite convenient, because very often one kind of a loop suits the task much better than the other two. That is the reason why the authors of the C++ language included all three kinds of loops, and the other languages are no different in this respect. It is customary and recommended to use a `for` loop when the number of iterations is given or known in advance. Otherwise, use a `while` or a `do` `while` loop. For example, a `while` loop should be used when the number of iterations needs to be calculated, as was the case in the last given problem.

Words `while` and `do` are keywords in the C++ language.