Calculating the area of a circle This is one of tasks, which I had to do for the recruitment process at some company. Unfortunately they didn't like it so I've decided to share it here for discussion.

CircleArea.h

#ifndef CIRCLEAREA_H_
#define CIRCLEAREA_H_

//PI Number, with max precision for double (8 bytes)
const double PI = 3.141592653589793115997963468544185161590576171875;

double circleArea(double radius);

#endif


CircleArea.cpp

#include "CircleArea.h"
#include &lt;stdexcept&gt;

double circleArea(double radius)
{
    if(radius &lt; 0)
    {
        throw std::invalid_argument("Radius cannot be less than zero");
    }

    return PI * radius * radius;
}


Why could the solution have been disliked by the recruiters?
I assume one of the complaints was with the constant.  There are various ways to calculate pi, using an exact calculation rather than using some number of digits.

Here's one example (in C++14):

constexpr auto pi()
{
    return std::acos(-1);
}


(For C++11, use a non-auto type, such as double or float.)

The constexpr keyword will allow this to be calculated at compile time.  You could still assign the return value to a constant or call the function inline where needed.  If you don't have C++11, then you can use const in place of constexpr, and just assign it to a constant.