Возможна ли замена знака? - страница 3

 
Konstantin Nikitin:

Вы попробуйте свой код скомпилировать?


Получите

Не поленился вставил в код. Хотя это и так было видно, что строковая переменная в формуле работать не должна.

сначала хорошо бы понять тип математических знаков, они точно не текстовые. Можно попробовать кодировку знаков подставить. не знаю, не пробовал.

Или возврат и подстановка функции умножить на 1 или минус один, в зависимости от условия.

 

Самый беспортяночный и читаемый код, если немного разделить

int sum1 = (5 + 1) - (5 + 1);
int sum2 = (5 - 1) + (5 - 1);
int sum3 = (5 * 1) - (5 * 1);

int resB = sum1 - sum2 - sum3;
int resS = sum1 + sum2 + sum3;

Чаще всего, код нужно поддерживать, и все подстановки/перестановки со временем сложно будет помнить, при этом код разрастается с их применением.

 
Vitaly Muzichenko:

Самый беспортяночный и читаемый код, если немного разделить

int res1 = sum1 + F(1)*sum2 + F(-1)*sum3;
....
int F(bool f)
{
if(f)
return(1);
else
return(-1);
}
 
Valeriy Yastremskiy:

С плюс/минус да как вариант вполне подходит

bool r = true, r1 = false;
int res1 = sum1 + (r ? 1 : -1)*sum2 + (r1 ? 1 : -1)*sum3;
 

// типа того

op=1; // 1 для плюс, -1 для минус

y = 155 + op * x;

а вообще если заранее не известно складывать/умножать и прочие знаки

то порядочные люди используют матрицы

это гораздо удобнее даже в плане поддержки кода.

Причина обращения: