Если сумма 3 действительных чисел x,y,z <1, то наименьшее из этих чисел заменить полусуммой двух других, в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений
#include<iostream>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
float x, y, z, s;
cout << "Введите x" << endl;
cin >> x;
cout << "Введите y" << endl;
cin >> y;
cout << "Введите z" << endl;
cin >> z;
s = (x + y + z);
if (s < 1)
{
if ((x < y)&&(y < z)) {
x = (y + z) / 2;
cout << "ответ: x=" << x << endl;
}
}
else if ((s<1)&&(((y < x)&&(x < z)))) {
y = (x + z) / 2;
cout <<"ответ: y="<< y << endl;
}
else if ((s<1)&&(((z < x)&&(x < y)))) {
z = (x + y) / 2;
cout <<"ответ: z="<< z << endl;
}
else if (x < y) {
x = (y + z) / 2;
cout <<"otvetos s x="<< x << endl;
}
else {
y = (x + z) / 2;
cout <<"drugoi otvet = "<< y << endl;
}
system("pause");
return 0;
}
когда я ввожу x=0.3 y=0.1 z=0.2 то в ответе ничего нет
Работает только эта ветка (при исходных данных s = 0,6, что меньше 1):
if (s < 1)
{
if ((x < y)&&(y < z)) {
x = (y + z) / 2;
cout << "ответ: x=" << x << endl;
}
}
На проверке if ((x < y)&&(y < z)) сразу же получаем false, т.к. на самом деле x больше y. На этом выполнение программы завершается.
Если кажется, что if не работает, или работает не так, как надо, то всегда нужно проверять сами условия, потому что if работает всегда. А если "не работает", значит ошибка в условиях.
Ваш код по сути состоит из
if (s < 1)
{
if ((x < y)&&(y < z)) {
x = (y + z) / 2;
cout << "ответ: x=" << x << endl;
}
}
...
else if (x < y) {
x = (y + z) / 2;
cout <<"otvetos s x="<< x << endl;
}
else {
y = (x + z) / 2;
cout <<"drugoi otvet = "<< y << endl;
}
Те ветви, где троеточие - работать не будут, так как при s<1 работает первая ветвь, а во вторую и третью вы попадаете с s>=1, так что ваша проверка if ((s<1)&&... автоматически дает false.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости