C/C++

Програмирование на C/C++ на основе блоксхемы

Даны числа A,B,C,D. Если A>B>C>D, то каждое число заменить полусуммой его со своими соседями, если A<B<C<D, то числа оставить без изменения, в противном случае все числа увеличить на значение равное наименьшему из A,B,C,D. Вывести все числа (блоксхему естественно делать не надо, просто написать небольшой код. Первая лабораторная, только начали изучать C, поэтому определения слов в коде не должны превышать уровень знаний студента)
«полусуммой его» – это вообще как. Например, для ряда: 7.4 3.8 5.6 1.2

#include <iostream>
using namespace std;
double compare(double a, double b) {
if (a < b) return -1;
if (a > b) return 1;
return 0;
}
double min(double a, double b) {
return a < b? a : b;
}
void replace(double& a, double& b, double& c, double& d) {
double ta = b;
double tb = (a + c) / 2.0;
double tc = (b + d) / 2.0;
double td = c;
a = ta;
b = tb;
c = tc;
d = td;
}
int main() {
int n = 0;
double a;
cin >> a;
double m = a;
double b;
cin >> b;
m = min(m, b);
n += compare(a, b);
double c;
cin >> c;
m = min(m, c);
n += compare(b, c);
double d;
cin >> d;
m = min(m, d);
n += compare(c, d);
switch (n) {
case -3:
break;
case 3:
replace(a, b, c, d);
break;
default:
a += m;
b += m;
c += m;
d += m;
}
cout << a << ' ' << b << ' ' << c << ' ' << d << '\n';
}
КГ
Константин Горюшин
66 112
Лучший ответ
Евгений Коломойцев Код абсолютно верный и работает, Вы не могли бы написать этот код только на библиотеке <stdio.h>