Loop Condition: Special Data Value

It might be inconvenient count the number of stocks ahead of time to enter in the stock4.count.c program.

Instead we can let the user just start entering stock data, and when there are no more to enter, indicate this with a special data value.

In our case, the first data item entered is the number of shares of a stock. It wouldn't normally make sense to enter a 0 for this - if the user has no shares of stock, the stock has no value and cost nothing. So we can use this value to indicate there are no more stocks to enter.

The algorithm then becomes:

        Initialize the portfolio cost and portfolio value
        Get the number of shares for the first stock
        while there are more stocks to proccess
              Get the selling price for the stock
              Get the purchase price for the stock
              Print the data values for the stock
              Accumulate the portfolio cost for the stock
              Accumulate the portfolio value for the stock
              Get the number of shares for the next stock
        Compute the profit
        Print the result
 

The implementation of this algorithm is in stock4.spv.c.

Things to notice about this code:

We have moved the statements which prompt and read the number of stocks outside the loop to become the loop initialization step of the algorithm.
The same two statements are copied to the bottom of the loop as the loop condition update step of the algorithm.
We have initialized the portfolio_cost and portfolio_value variables at the same time we declared them.
   float portfolio_cost = 0.0;   /*  the cost  of the portfolio  */
   float portfolio_value = 0.0;  /*  the value of the portfolio  */

Declarations like this are called initializers.

How does this program run?

How can we use this program?

When we have a stock portfolio with many stocks, it might be more convenient to type the stock data one time into a file rather than type it each time we run the program.

How can we make use of such a file?


[up] to Looping Construct.