@uriy99

Как найти значение выражения?

Дано:5f9955d6ea246468093866.jpeg
Вот мой код:
//найти значение выражения
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	setlocale(LC_ALL, "RUS");
	float X;
	cout << "x = ";
	cin >> X;
	if ((X - 5) / (X * X - 9) < 0) cout << "Корень из отрицательного числа\n";
	else if (X != -1) cout << "Логарифм отрицательного числа\n";
	else if (X * X == 9) cout << "Деление на ноль\n";
	else
	{
		float Y = (sqrt(X - 5 / X * X - 9)) + log((X * X + 2 * X + 1));
		cout << "F = " << Y << endl;

	}
	system("pause");
	return 0;
}

Можете помочь с исправлением ошибок в проверках?У меня из таблицы не проходят -3,3,-1,5.
Задача 8 если что.
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
У вас порядок проверок нарушен.

Сначала надо проверить, что знаменатель не ноль, а только потом, что вся дробь неотрицательна.
Для проверки, что логарифм не берется из отрицательного числа надо проверить именно это (что выражение под логарифмом >=0). Вы же почему-то проверяете, что оно равно нулю.

И еще у вас выражение неправильно считается. Надо скобки расставить. (sqrt(X - 5 / X * X - 9) подсчитает корень из x минус 5, деленное на x^x, минус 9 - 3 слагаемых, из которых только второе дробь.

Итого вам надо:
- переставить местами условия, чтобы деление на 0 было первым.
- исправить условие на логарифм из отрицательного числа
- расставить скобки в выражении.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы