// vec3.h #include #include using namespace std; // Class declaration // class vector { public: vector( double = 0.0, double = 0.0, double = 0.0 ); // Constructor vector( const vector & ); // Overloaded constructor void show( void ); double entry( int ); void assign( double = 0.0, double = 0.0, double = 0.0 ); void assign( int, double = 0.0 ); private: double data[3]; // Private data }; // Prototypes for non-member functions void show( vector ); void show( char[], vector ); void assign( vector &, double = 0.0, double = 0.0, double = 0.0 ); // Member function definitions vector::vector( double x, double y, double z ) { data[0] = x; data[1] = y; data[2] = z; } vector::vector( const vector &x ) { data[0] = x.data[0]; data[1] = x.data[1]; data[2] = x.data[2]; } void vector::show( void ) { cout << "( " << data[0] << ", " << data[1] << ", " << data[2] << " )"; return; } double vector::entry( int i ) { if ( ( i < 1 ) || ( i > 3 ) ) { cout << "\n** Vector index out of bounds in entry **\n"; exit( EXIT_FAILURE ); } return( data[i-1] ); } void vector::assign( double a, double b, double c ) { data[0] = a; data[1] = b; data[2] = c; return; } void vector::assign( int i, double a ) { switch ( i ) { case 1: data[0] = a; break; case 2: data[1] = a; break; case 3: data[2] = a; break; default: cout << "\n** Vector index out of bounds in assign **\n"; exit( EXIT_FAILURE ); } return; } // Non-member function definitions void show( vector u ) { cout << "( " << u.entry(1) << ", " << u.entry(2) << ", " << u.entry(3) << " )"; return; } void show( char name[], vector u ) { cout << name << " = "; cout << "( " << u.entry(1) << ", " << u.entry(2) << ", " << u.entry(3) << " )"; cout << endl; return; } void assign( vector &x, double a, double b, double c ) { x.assign( a, b, c ); return; }