C/C++

Не получается решить задачку на циклы в С++

Задание 65

Вычислите таблицу значений выражения (x-2x2)/(x-4). Начальное и конечное значение вводит пользователь. Предусмотрите проверку корректности (начало меньше конца)
Nikita Zwei
Nikita Zwei
45
#include <iostream>

using namespace std;

int main()
{
double b,e,y;
cout << "Введите начальное значение: ";
cin >> b;
do
{
cout << "Введите конечное значение: ";
cin >> e;
} while(e <= b);
for(double x = b; x <= e; x += 1.0)
{
if(x == 4.0)
{
cout << "Ошибка деления на ноль. Этот результат пропускаем." << endl;
}
else
{
y = (x - 2.0*x*x) / (x - 4.0);
cout << "y("<<x<<") = ";
cout << y << endl;
}
}
return 0;
}
Валерий Онофрей
Валерий Онофрей
76 187
Лучший ответ
Валерий Онофрей это в том случае, если 2x2 -- это два икс во второй степени
С отдельной функцией f(x)=(x-2x²)/(x-4). В точке х=4 у этой функции полюс, но для C++ этот аргумент даже не вызовет run-time error, а сингулярность в данном случае просто выведется на печать как обозначение бесконечности inf, так что этот случай оставляем -пусть печатается бесконечность.
#include <iostream>
#include <iomanip>
using namespace std;
double y(double x)
{
return x == 4? 1. / 0 : (x - 2. * x * x) / (x - 4.);
}
int main()
{
double a, b, h, i, n, x;
cout << "a b h: ";
cin >> a >> b >> h;
if (a > b)
{
x = a;
a = b;
b = x;
}
n = (int)(b - a) / h;
for (i = 0; i <= n; i++)
{
x = a + i * h;
cout << setprecision(6) << fixed <<
setw(10) << x << setprecision(12) <<
setw(20) << fixed << y(x) << endl;
}
}
Эдо Егорян
Эдо Егорян
66 572