C/C++

ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ НА C++

Даны четыре действительных числа a, b, c, d. Если сумма максимального и минимального из
них равна сумме двух других, то все числа заменить на максимальное значение, иначе
поменять значения максимального и минимального.
#include <iostream>
using namespace std;
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
double max(double a, double b, double c, double d) {
auto ab_max = a > b? a : b;
auto cd_max = c > d? c : d;
return ab_max > cd_max? ab_max : cd_max;
}
double min(double a, double b, double c, double d) {
auto ab_min = a < b? a : b;
auto cd_min = c < d? c : d;
return ab_min < cd_min? ab_min : cd_min;
}
bool equales(double a, double b, double c, double d) {
auto mx = max(a, b, c, d);
auto mn = min(a, b, c, d);
auto sum = a + b + c + d;
auto mnmx_sum = mn + mx;
auto mid = sum - mnmx_sum;
return mnmx_sum == mid;
}
void replace(double& a, double& b, double& c, double& d) {
auto ta = a;
auto tb = b;
auto tc = c;
auto td = d;
auto mn = min(a, b, c, d);
auto mx = max(a, b, c, d);
if (a == mn) ta = mx;
if (b == mn) tb = mx;
if (c == mn) tc = mx;
if (d == mn) td = mx;
if (a == mx) ta = mn;
if (b == mx) tb = mn;
if (c == mx) tc = mn;
if (d == mx) td = mn;
a = ta;
b = tb;
c = tc;
d = td;
}
void show(const char* msg, double x) {
cout << msg << x << '\n';
}
int main() {
auto a = real("a: ");
auto b = real("b: ");
auto c = real("c: ");
auto d = real("d: ");
puts("");
if (equales(a, b, c, d)) a = b = c = d = max(a, b, c, d);
else replace(a, b, c, d);
show("a: ", a);
show("b: ", b);
show("c: ", c);
show("d: ", d);
system("pause > nul");
}
Жакенти .......................
Жакенти .......................
72 997
Лучший ответ