2016-09-15 3 views
-3

мне нужно написать и выполнить программу в C++, которая вычисляет значение выражения:Как передать это алгебраическое выражение в C++?

5x^2 + 12y/3x, где х = 12, у = 9,8

Это есть то, что у меня есть:

int num1 = 12; float num2 = 9.8; float totalResult; 
totalResult = 5 * num1 * num2 + 12 * num2/3 * num1; 

cout << totalResult; 

Ответ 23.2667, но я получаю неправильный результат.

+2

Для высокоэффективного алгоритма, вычислить его вручную, и он просто возвращает ответ. – 4castle

+0

@RamandeepPunia Я включил свой код в вопрос. Можете ли вы взглянуть на него? – GreyHatBlaze

+0

@ 4castle Я попробую, спасибо. Я включил свой код в вопрос. Если вы хотите взглянуть на него. – GreyHatBlaze

ответ

4

Ваша проблема - порядок операций (и опечатка на num1 * num2).

Ваш предложенный правильный ответ - 23.2667, что возможно только в том случае, если вы интерпретируете / как последнюю операцию. Для того, чтобы заставить разделение произошло в прошлом, положил левую и правую части в скобках:

totalResult = (5 * num1 * num1 + 12 * num2)/(3 * num1); 

Таким образом, он выполняет в таком порядке:

    1  2  4 3  6 5 
totalResult = (5 * num1 * num1 + 12 * num2)/(3 * num1); 

В противном случае, она выполняется в таком порядке:

   1  2  6 3  4 5 
totalResult = 5 * num1 * num1 + 12 * num2/3 * num1; 

Вот доказательство с JavaScript:

var num1 = 12; var num2 = 9.8; 
 
var totalResult = (5 * num1 * num1 + 12 * num2)/(3 * num1); 
 
console.log(totalResult);

Operator Precedence Reference

+0

должно быть '5 * num1 * num1'not' num2' –

+0

@RamandeepPunia Спасибо, я видел, что когда я тестировал версию JavaScript – 4castle

+0

, я ценю ваши отзывы! Я знал, что это проблема с приоритетом оператора или чем-то подобным подобным образом. Благодарим вас за предоставленную ссылку ссылки на приоритет оператора. Я потрачу некоторое время на его чтение. Еще раз хочу поблагодарить вас за то, что вы нашли время, чтобы ответить на мой вопрос. Береги себя! – GreyHatBlaze

Смежные вопросы