Compare Shapes friend function

Compare Shapes Friend Function

Create two classes Circle and Square:

Create a friend function compare_area() that takes a Circle and a Square object as parameters and compares their areas by accessing their private members.

Create objects of both classes, set their dimensions using constructors, and then call compare_area() to determine which shape has a larger area.

// Announce the larger shape inside the function
void compare_area(Circle& circle, Square& square) 

Hint

There should be a friend function declaration in both classes so that it can access private members from both.

Answer

#include <iostream>
#include <cmath>

class Circle;
class Square;

class Circle {
    friend void compare_area(Circle& circle, Square& square);  // Friend function declaration

private:
    float radius;

public:
    Circle(float r) : radius(r) {}
};

class Square {
    friend void compare_area(Circle& circle, Square& square);  // Friend function declaration

private:
    float side;

public:
    Square(float s) : side(s) {}
};

// Friend function definition
void compare_area(Circle& circle, Square& square) {
    float circle_area = M_PI * std::pow(circle.radius, 2);
    float square_area = std::pow(square.side, 2);

    if (circle_area > square_area) {
        std::cout << "Circle has a larger area." << std::endl;
    } else if (square_area > circle_area) {
        std::cout << "Square has a larger area." << std::endl;
    } else {
        std::cout << "Both shapes have the same area." << std::endl;
    }
}

int main() {
    Circle circle(3.0);
    Square square(4.0);

    compare_area(circle, square);

    return 0;
}
Questions