How to calculate the area, diameter, and circumference of a circle in C++

2 Answers

0 votes
#include <iostream>
#include <iomanip>
 
int main()
{
    int radius = 3;
    float PI = 3.14f;
 
    float area = PI * radius * radius;
    std::cout << "Area = " << std::fixed << std::setprecision(2) << area << std::endl;
 
    float diameter = 2 * radius;
    std::cout << "Diameter = " << std::fixed << std::setprecision(2) << diameter << std::endl;
 
    float circumference = 2 * PI * radius;
    std::cout << "Circumference = " << std::fixed << std::setprecision(2) << circumference;
}


/*
run:
 
Area = 28.26
Diameter = 6.00
Circumference = 18.84
 
*/

 



answered Feb 18, 2016 by avibootz
edited 4 hours ago by avibootz
0 votes
#include <iostream>
#include <cmath>
#include <numbers> // C++20 standard library for mathematical constants
#include <stdexcept>

// Structure to hold all calculated circle metrics cleanly
struct CircleMetrics {
    double diameter;
    double circumference;
    double area;
};

/**
 * @brief Calculates the diameter, circumference, and area of a circle.
 * @param radius The radius of the circle (must be non-negative).
 * @return CircleMetrics containing the diameter, circumference, and area.
 * @throws std::invalid_argument if the radius is negative.
 */
[[nodiscard]] constexpr CircleMetrics CalculateCircleMetrics(double radius) {
    // Guard clause: radius cannot be negative
    if (radius < 0.0) {
        throw std::invalid_argument("Radius cannot be negative.");
    }

    CircleMetrics metrics;
    metrics.diameter = 2.0 * radius;
    metrics.circumference = 2.0 * std::numbers::pi * radius;
    
    // Standard multiplication (radius * radius) is more efficient than std::pow(radius, 2)
    metrics.area = std::numbers::pi * (radius * radius);

    return metrics;
}

int main() {
    // Enable standard I/O optimization
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);

    try {
        double radius = 3.0;
        
        // Retrieve calculated metrics
        CircleMetrics metrics = CalculateCircleMetrics(radius);

        // Output results
        std::cout << "Radius: " << radius << "\n";
        std::cout << "Diameter: " << metrics.diameter << "\n";
        std::cout << "Circumference: " << metrics.circumference << "\n";
        std::cout << "Area: " << metrics.area << "\n";
    } 
    catch (const std::exception& ex) {
        std::cerr << "Error: " << ex.what() << "\n";
        return 1;
    }
}


/*
run:

Radius: 3
Diameter: 6
Circumference: 18.8496
Area: 28.2743

*/

 



answered 4 hours ago by avibootz

Related questions

...