C/C++
Программирование с использованием дружественных классов и методов.
Создать два класса: круг (Circle, содержит поле радиус) и квадрат. Описать функцию, определяющую фигуру с наименьшей площадью и выводящую информацию о ней на экран, как дружественную.
#include <iostream>
#include <iomanip>
using namespace std;
class Circle {
public:
Circle() : r(0) {}
void radius(const double x) { r = x; }
double radius()const { return r; }
double area()const { return pi * r * r; }
void show()const {
cout
<< "Радиус круга: " << r << '\n'
<< "Площадь круга: " << area() << '\n';
}
private:
double r;
inline static const auto pi = 3.1415926535897932;
};
class Square {
public:
Square() : s(0) {}
void side(const double x) { s = x; }
double side()const { return s; }
double area()const { return s * s; }
void show()const {
cout
<< "Сторона квадрата: " << s << '\n'
<< "Площадь квадрата: " << area() << '\n';
}
private:
double s;
friend void compare(const Circle& c, const Square& s) {
const auto sc = c.area();
const auto ss = s.area();
sc < ss? c.show() : s.show();
}
friend void compare(const Square& s, const Circle& c) {
const auto ss = s.area();
const auto sc = c.area();
ss < sc? s.show() : c.show();
}
};
int main() {
Circle c;
c.radius(1.75);
Square s;
s.side(3.25);
system("chcp 1251 > nul");
cout << fixed << setprecision(4);
compare(c, s);
system("pause > nul");
}
#include <iomanip>
using namespace std;
class Circle {
public:
Circle() : r(0) {}
void radius(const double x) { r = x; }
double radius()const { return r; }
double area()const { return pi * r * r; }
void show()const {
cout
<< "Радиус круга: " << r << '\n'
<< "Площадь круга: " << area() << '\n';
}
private:
double r;
inline static const auto pi = 3.1415926535897932;
};
class Square {
public:
Square() : s(0) {}
void side(const double x) { s = x; }
double side()const { return s; }
double area()const { return s * s; }
void show()const {
cout
<< "Сторона квадрата: " << s << '\n'
<< "Площадь квадрата: " << area() << '\n';
}
private:
double s;
friend void compare(const Circle& c, const Square& s) {
const auto sc = c.area();
const auto ss = s.area();
sc < ss? c.show() : s.show();
}
friend void compare(const Square& s, const Circle& c) {
const auto ss = s.area();
const auto sc = c.area();
ss < sc? s.show() : c.show();
}
};
int main() {
Circle c;
c.radius(1.75);
Square s;
s.side(3.25);
system("chcp 1251 > nul");
cout << fixed << setprecision(4);
compare(c, s);
system("pause > nul");
}
Похожие вопросы
- Программирование с использованием шаблона класса.
- Указатели. Программирование с использованием динамических двухмерным масивов.
- Составить программу на С++ Программирование с использованием классов. Создание и работа с классами.
- C++ программирование с использованием динамических двумерных массивов
- Програмирования С ++ Программирование с использованием ассоциативных контейнеров STL
- ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СТРОК C++
- Програмирование с++,классы, дружественная функция
- Описать независимые классы и определить их методы.
- Передача в метод класса указателя на функцию C++
- В чём смысл использования классов?