#include void triangle_area(double a,double b,double c,double &area,double &perimeter){ double s, asq; if ( a <= 0 || b <= 0 || c <= 0 ) { area = 0.0; perimeter = 0.0; return; } perimeter = a + b + c; s = perimeter/2.0; asq = s* (s-a) *(s-b)*(s-c); if ( asq <= 0 ) { area = 0.0; perimeter = 0.0; return; } area = sqrt(asq); return; } #ifdef TEST #include using namespace std; void triangle_area(double a,double b,double c,double &area,double &p); int main() { double a,b,c,area,perimeter; while (1){ cout << "Give me the lengths of the three sides of a triangle."; cin >> a >> b >> c; if ( a == 0 && b == 0 && c == 0 ) break; triangle_area(a,b,c,area,perimeter); cout << "For sides a = " << a << " b = " << b << " c = " << c << ":\n"; if ( area == 0.0 && perimeter == 0.0 ) cout << "that is not a triangle!\n"; else cout << "Area = " << area << " perimeter = " << perimeter << endl; } return 0; } #endif