Home Segments Index Top Previous Next

394: Mainline

The following, by way of summary, shows a complete set of trade constructors, readers, and writers in the context of a revised analyze_trades program. The writers, although defined, do not happen to be used:

#include   
/* Define the trade structure */ 
struct trade {double price; int number;}; 
/* Define constructor function */ 
struct trade* construct_trade (double price, int number) { 
  struct trade *tptr; 
  tptr = (struct trade*) malloc (sizeof (struct trade)); 
  tptr -> price = price; 
  tptr -> number = number; 
  return tptr; 
} 
/* Define readers */ 
double read_trade_price (struct trade *tptr) {return tptr -> price;} 
int read_trade_number (struct trade *tptr) {return tptr -> number;} 
/* Define writers */ 
void write_trade_price (double price, struct trade *tptr) { 
  tptr -> price = price; 
} 
void write_trade_number (int number, struct trade *tptr) { 
  tptr -> number = number; 
} 
/* Define value-computing function */ 
double trade_price (struct trade *tptr) { 
  return read_trade_price (tptr) * read_trade_number (tptr); 
} 
/* Define trade array */ 
struct trade *trade_pointers[100]; 
main ( ) { 
  /* Declare various variables */ 
  int limit, counter, number; 
  double price, sum = 0.0; 
  /* Read numbers and stuff them into array */ 
  for (limit = 0; 
       2 == scanf ("%lf%i", &price, &number); 
       ++limit) 
    trade_pointers[limit] = construct_trade (price, number); 
  /* Display value of shares traded */ 
  for (counter = 0; counter < limit; ++counter) 
    sum = sum + trade_price(trade_pointers[counter]); 
  printf ("The total value of the %i trades is %f.\n", 
                                  limit,       sum); 
} 
--- Data ---
10.2    600 
12.0    100 
13.2    200 
--- Result --- 
The total value of the 3 trades is 9960.000000.