![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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.