Программа вроде-как правильная, а вот ответ выводит ложный.
Условия таковы:
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;
}
Другие языки программирования и технологии
Исправление кода на C++
не проще было бы switch использовать, Разбираться во встроенных ифах врагу не пожелаешь
Владимир Росляков
Хотелось бы отметить, что я чайник, и пусть о существовании 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;
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;
Владимир Росляков
Cпасибо.