Home Segments Index Top Previous Next

611: Mainline

Here, then, is the revised program:

#include   
const double pi = 3.14159; 
// Class definitions, with short_name and capacity definitions 
// Define railroad car pointer array: 
railroad_car *train[100]; 
// Define input buffer: 
char input_buffer[100]; 
// Declare enumeration constants, needed in switch statement: 
enum {eng_code = 'E', box_code = 'B', tnk_code = 'T', cab_code = 'C'}; 
char extract_car_code (char *input_buffer) {return input_buffer[4];} 
main ( ) { 
  // Declare various integer variables: 
  int n, car_count; 
  // Read serial number and create car class objects: 
  for (car_count = 0; cin >> input_buffer; ++car_count) 
    switch (extract_car_code (input_buffer)) { 
      case eng_code: train[car_count] = new engine;   break; 
      case box_code: train[car_count] = new box_car;  break; 
      case tnk_code: train[car_count] = new tank_car; break; 
      case cab_code: train[car_count] = new caboose;  break; 
    } 
  // Display report: 
  for (n = 0; n < car_count; ++n)  
    cout << train[n] -> short_name ( ) << "     " 
         << train[n] -> capacity ( ) << endl; 
} 
--- Data ---
TPW-E-783 
PPU-B-422 
NYC-B-988 
NYC-T-988 
TPW-C-271 
--- Result --- 
eng     0 
box     3990 
box     3990 
tnk     1539.38 
cab     0