Проблема с выводом значений. С++
Мне в лабораторной работе нужно решить задачу 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 способами? Если да, то как?"