Home Segments Index Top Previous Next

421: Mainline

Here is the revised program; any unrecognized industry code leads to immediate termination:

#include   
/* Define the trade apparatus */ 
struct trade {double price; int number;}; 
double trade_price (struct trade *x) {return x -> price * x -> number;} 
/* Define trade array */ 
struct trade *trade_pointers[100]; 
main ( ) { 
  /* Declare various variables */ 
  int limit, counter, industry, number; 
  double price, sum = 0.0; 
  /* Read trade information */ 
  for (limit = 0; 3 == scanf ("%i%lf%i", &industry, &price, &number);) 
    switch (industry) { 
      case 1: case 5: 
        trade_pointers[limit]  
          = (struct trade*) malloc (sizeof (struct trade)); 
        trade_pointers[limit] -> price = price; 
        trade_pointers[limit] -> number = number; 
        ++limit; 
        break; 
      case 0: case 2: case 3: case 4: break; 
      default: printf ("Industry code %i is unknown!\n", industry); 
               exit (0); 
    } 
  /* Compute cost */ 
  for (counter = 0; counter < limit; ++counter) 
    sum = sum + trade_price (trade_pointers[counter]); 
  printf ("The total cost of %i selected trades is %f.\n", 
                             limit,                sum); 
} 
--- Data ---
0  3.3  300 
1  2.5  400 
5  9.9  100 
5 10.1  100 
2  5.0  200 
7  5.0  200 
--- Result --- 
Industry code 7 is unknown!