Как найти значение выражения с шагом h?

Вычислить значения функции в диапазоне [?, ?] c шагом ℎ. Если функция не определена, вывести сообщение типа «Деление на ноль», «Логарифм из не положительного числа», «Корень из отрицательного числа»:sqrt(?*x − 1) /ln(2? − 8) Вот мой код:

//вычислить значения функции в диапащоне [a,b] c шагом h
 #include<iostream>
 #include<math.h>
 using namespace std;

int main() 
{
     setlocale(LC_ALL, "rus");
     float a, b, h;
     //ввод данных
         cout << "a=";
     cin >> a;
     cout << "b=";
     cin >> b;
     cout << "h=";
     cin >> h;
     //проверка корректности или замена:
         if (a > b) swap(a, b);
     for (float x = a; x < b + h; x += h) //цикл [a,b]
     {
         if (x < 1) cout << "Корень из отрицательного числа\n";
         else if (x == 2) cout << "Деление на ноль\n";
         else if (x == 4) cout << "Логарифм не положительного числа\n";
         else 
        {
             float y = sqrt(x*x - 1) / log(2*x - 8);
             cout << "x = " << x << " y = " << y << endl; //вывод
            
        }
    }
     return 0;
    }

Товарищи знающие,что тут не так?


Ответы (1 шт):

Автор решения: Zhihar
for (float x = a; x < b + h; x += h)

у вас цикл от a до b, а не до b + h, зачем вы его воткнули то?

if (x < 1) cout << "Корень из отрицательного числа\n";

у вас вообще-то в уравнении sqrt(x^2 - 1) и квадрат отрицательного числа - это положительное число, а проверять надо x^2 - 1 < 0

else if (x == 4) cout << "Логарифм не положительного числа\n";

а почему равенство строгое? При x < 4 логарифм положительный что ли?

А еще угадайте, что происходит при x = 4,5 и почему

введите сюда описание изображения

→ Ссылка