# while

## Problem:

Write a program that will sum up a series of positive values entered by the user. The program will ask the user to enter numbers and sum them up until the user enters a 0 or negative value. It will display the total at the end.

## What we need to learn:

* How to do something over and over until a condition is met.
* look at while() statement.

## Flow chart of problem

In the flowchart below, we see arrows (highlighted in red) where if we follow them would form a loop back into the decision box. This is a sign that an iteration type of control structure is needed

![](https://2978089878-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M66b4L0Ik9lR1lrIbDM%2Fsync%2F2f42d87cf1ae5c7e41f4508197ca4943791b4189.png?generation=1588191886054979\&alt=media)

## Implementation

Like all programs before, we implement by simply following the flow chart:

```c
int main(void){
    int total=0;   //first box, need a total we can keep adding to
    int number;     //need a variable for reading

    printf("please enter a number: ");  //print and scan for second
    scanf("%d",&number);                 //box


    while(number > 0){      //this while statement is the decision box
                            //contents between curly is the statements
                            //that form the "loop" (the part connected
                            //by red arrows)

        total=total+number; //add number to total box    

        printf("please enter a number: ");  //print and scan within
        scanf("%d",&number);                //the loop

    }
    printf("Total of numbers entered: %d\n", total);  //print total box
    return 0;
}
```

## Why while?

There are three types of iteration statements, and yet here we are using while. Why did we do that instead of for or do-while.

1. while is the most common form iteration that you will write. In general, you can do just about everything you will need to do by using while. There are a few special cases where a do-while makes things much easier but usually you use while.
2. a for() statment can be made to imitate a while but in general, we use for statements for "counting" loops. In this loop, we sum a number of values but we don't know how many we will sum before hand. Nor is there already a set of numbers and we simply have to go through the set. The condition for continuing is determined only at run time by the user. Thus, this is not a counting loop and we should not use a for loop.
