Source: https://ressources.unisciel.fr/algoprog/s23pntrs/emodules/pn02mexerc1/res/pn02exerc1-cresolu-cpp-xxx.pdf