/* Compute the value of a stock holding, see King P. 40 */

#include   <stdio.h>

#define    TRUE 1

int main ()
{
    int price, shares;
    double  numerator, denominator, value;
        
    while (TRUE) {
        printf ("Enter a share price (must include a fraction): ");
        scanf ("%d%f/%f", &price, &numerator, &denominator);
        printf ("Enter number of shares: ");
        scanf ("%d", &shares);
                
        value = (price + numerator/denominator) * shares;
                
        printf ("Value of holding: $%.2f\n", value);
    }
    return 0;
}

/*
**      int scanf (const char* format, ....);
**      Reads any number of data items from stdin stream.
**      Returns EOF if an error occurs or an end-of-file 
**      is reached during reading
*/
/*
**      int printf (const char* format, ...);
**      Writes output to stdout stream.
**      Returns number of characters written
**      Returns negative value if an error occurs
*/

/*             Note that the output is wrong, but why?
Enter a share price (must include a fraction): 15 3/8
Enter number of shares: 5
Value of holding: $75.00
Enter a share price (must include a fraction): 17    5/16
Enter number of shares: 7
Value of holding: $119.00
Enter a share price (must include a fraction): 19   7/    16
Enter number of shares: 7
Value of holding: $133.01
Enter a share price (must include a fraction): 21   7   /   16

Disaster, infinite loop on my computer!!
See King Section 22.3 for complete details on formatted i/o
*/