// Functions can call other functions... #include #include using namespace std; double norm( double x, double y = 0.0, double z = 0.0 ); double abs_max( double x, double y, double z = 0.0 ); int main() { cout << "norm(-5.25) = " << norm( -5.25 ) << endl; cout << "norm(3.0,-4.0) = " << norm( 3.0, -4.0 ) << endl; cout << "norm(-9,8.7,-0.95) = " << norm( -9.0, 8.7, -0.95 ) << endl; cout << "\n\n"; system( "PAUSE" ); return( 0 ); } // This function returns the magnitude of vector // Must be called with one, two, or three arguments. double norm( double x, double y, double z ) { double result, max = abs_max( x, y, z ); if ( max == 0.0 ) result = 0.0; else { result = pow( x / max, 2 ) + pow( y / max, 2 ) + pow( z / max, 2 ); result = max * sqrt( result ); } return( result ); } // This function returns the maximum value of { |x|, |y|, |z| }. // Must be called with two or three arguments. double abs_max( double x, double y, double z ) { double max = abs( x ); if ( max < abs( y ) ) max = abs( y ); if ( max < abs( z ) ) max = abs( z ); return( max ); }