Другие языки программирования и технологии

Исправление кода на C++

Программа вроде-как правильная, а вот ответ выводит ложный.
Условия таковы:
1) Если первое число < 10 то начинать с 15.
Если первое число между 10 и 20 начинать с 20.
Если первое число между 20 и 80 начинать с 30.
Если ничего выше не подходит начинать с 10.

2) Если второе число < 10 добавьте 10 к 1 числу.
Если второе число между 10 и 20 удвойте 1 число.
Если второе число между 20 и 80 утройте 1 число.
Если ничего выше не подходит вычтите 10 из 1 числа.

3) Если третье число <10 удвойте 2 число.
Если третье число между 10 и 20 утройте 2 число.
Если третье число между 20 и 80 вычтите 5 из 2 числа.
Если ничего выше не подходит оставьте второе число и двигайтесь дальше.

4) Если четвёртое число <10 удвойте третье число.
Если число между 10 и 20 добавьте к третьему числу 20
Если число между 20 и 80 добавьте к третьему числу 50
Если ничего выше не подходит утройте третье число

4.1) Сложите все числа и разделите их сумму на 2,затем вычтите полученное число из четвёртого числа.

5) Если полученное число равно или меньше 0 ответ 1234
Если полученное число больше 0 и меньше 20 ответ 1243
Если полученное число равно 20 или между 20 и 50 ответ 4321
Если число равно 50 или между 50 и 90 ответ 3142

Действия-то выполняются, ответ получается, но он не верный. Прошу помощи, прикрепляю код:
========================
#include
using namespace std;

int
main ()
{
int a, b, c, d;
int s1, s2, s3, s4, s5, s6;
int answer;

cin >> a;
cin >> b;
cin >> c;
cin >> d;

if (a < 10)
s1 = 15;
else if (10 < a < 20)
s1 = 20;
else if (20 < a < 80)
s1 = 30;
else
s1 = 10;

if (b < 10)
s2 = s1 + 10;
else if (10 < b < 20)
s2 = s1 * 2;
else if (20 < b < 80)
s2 = s1 * 3;
else
s2 = s1 - 10;

if (c < 10)
s3 = s2 * 2;
else if (10 < c < 20)
s3 = s2 * 3;
else if (20 < c < 80)
s3 = s2 - 5;
else
s3 = s2;

if (d < 10)
s4 = s3 * 2;
else if (10 < d < 20)
s4 = s3 + 20;
else if (20 < d < 80)
s4 = s3 + 50;
else
s4 = s3 * 3;

s5 = (a + b + c + d) / 2;

s6 = s4 - s5;

if (s6 == 0 || s6 < 0)
answer = 1234;
else if (0 < s6 < 20)
answer = 1243;
else if (s6 == 90 || s6 > 90)
answer = 2314;
else if (s6 == 20 || 20 < s6 < 50)
answer = 4321;
else if (s6 == 50 || 50 < s6 < 90)
answer = 3142;

cout << "Answer is: " << answer;

return 0;
}
не проще было бы switch использовать, Разбираться во встроенных ифах врагу не пожелаешь
НЛ
Николай Латышев
85 097
Лучший ответ
Владимир Росляков Хотелось бы отметить, что я чайник, и пусть о существовании switch-case'a я знаю, но else-if по моему мнению подходит лучше.
int a, b, c, d, x;
cin >> a >> b >> c >> d;

if (a < 10) a = 15;
else if (a > 10 && a < 20) a = 20;
else if (a > 20 && a < 80) a = 30;
else a = 10;

if (b < 10) a += 10;
else if (b > 10 && b < 20) a += a;
else if (b > 20 && b < 80) a *= 3;
else a -= 10;

if (c < 10) b += b;
else if (c > 10 && c < 20) b *= 3;
else if (c > 20 && c < 80) b -= 5;

if (d < 10) c += c;
else if (d > 10 && d < 20) c += 20;
else if (d > 20 && d < 80) c += 50;
else c *= 3;

x = d - ((a + b + c + d) / 2);
if (x <= 0) x = 1234;
else if (x < 20) x = 1243;
else if (x < 50) x = 4321;
else if (x < 90) x = 3142;

cout << "Answer is: " << x;