@replechaun

Что делать если программа выдает ошибку при вводе функции double?

#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
//Функция для полинома:
double F(double x) {
	return 5 * tan(x) - (10 / (x) ^ 2) - 3;
}
//Функция поиска корня:
double FindRoot(double (*f)(double), double a, double b, double eps) {
	double c;
	while ((b - a) / 2 > eps) {
		c = (a + b) / 2;
		if ((f(a) * f(c)) > 0) a = c;
		else b = c;
	}
	return c;
}
int main() {
	//Интервал, погрешность и корень:
	double a, b, eps, x;
	cout << "interval: ";
	cin >> a;
	cin >> b;
	//Проверка корректности интервала:
	if (F(a) * F(b) > 0) {
		cout << "Wrong interval!\n";
		return 0;
	}
	cout << "error: ";
	cin >> eps;
	//Поиск решения:
	x = FindRoot(F, a, b, eps);
	cout << "x = " << x << endl;
	return 0;
}


при вводе данной программы появляется ошибка E2140 "выражение должно относиться к целочисленному типу или типу перечисления без области видимости"
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Неплохо было бы написать, в какой строке ошибка (а для начала оформить код нормально - в редакторе кнопка есть).
Видимо, тут проблема return 5 * tan(x) - (10 / (x) ^ 2) - 3;
(x) ^ 2 - это не возведение в степень, а XOR (исключающее ИЛИ). В квадрат возводить так: x*x, например
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы