Проблема с выводом значений. С++

Мне в лабораторной работе нужно решить задачу 4 способами циклами for, while, do while. Задача звучит так: Построить таблицу значений для функции на отрезке [a, b] с числом разбивания отрезка m: f(x)=cos^2 (x)+ln(x) отрезок [1;10], m = 20. Мой код на данный момент:

#include <iostream>
#include <cmath>

using namespace std;
int main()
{
    double xmin = 1.0, xmax = 10.0;
    int m = 20;
    double h = (xmax - xmin) / m;

    cout << "f(x) = cos'2(x) + ln(x)" << endl;
    cout << "x \t y" << endl;
    for (double x = xmin; x < xmax; x += h)
    {
        double y = cos(x) * cos(x) + log10(x);
        cout << x << "\t" << y << endl;
    }
   

    cout << "f(x) = cos'2(x) + ln(x)" << endl;
    cout << "x \t y" << endl;
    
    for (int i = 1; i <= 20; i++)
    {
        double y = cos(h * i ) * cos(h * i + 1.0) + log10(h * i );
        cout << h * i  << "\t" << y << endl;
    }
    system("pause");
    return 0;
}

Во втором решении значения x выходят на единицу меньше. Я хотел бы спросить:"Возможно ли решить эту задачу 4 способами? Если да, то как?"


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