Делаю задание, вывести все значения функции y = sin(4x) - 2 на отрезке [-p, p] с шагом p/8.
Написал код:
код файла GetPut.cpp
#include <iostream>
using namespace std;
void GetAB(float& a, float& b)
{
setlocale(LC_ALL, "rus");
cout << "Отрезок [-P, P]" << endl;
cout << "Шаг табулирования: P / 8" << endl;
}
void Put(double y)
{
setlocale(LC_ALL, "rus");
cout << endl << "Последнее значение функции равно: " << y << endl;
}
код файла resh.cpp
#include <cmath>
#include <iostream>
using namespace std;
double mainFunc(double x)
{
return sin(4 * x) - 2;
}
void cycle(double& y, float a, float b)
{
int n = 16; // максимальное число входов, т.к. Пи/8 помещается в заданный отрезок 16 раз
double xMin = -acos(-1);
double xMax = acos(-1);
cout << "Таблица значений функции" << endl;
cout << "\tx=\ty=" << endl;
for (xMin; xMin < xMax; xMin += 0.392699)
{
y = mainFunc(xMin); // вычисление по функции
cout << endl << '\t' << xMin << '\t' << y; // вывод и вычисления
}
}
main.cpp
#include <iostream>
void GetAB(float& a, float& b);
void Put(double y);
void cycle(double&, float, float);
int main()
{
float a, b;
double y;
GetAB(a, b);
cycle(y, a, b);
Put(y);
system("PAUSE");
return 0;
}
Вывод x нормальный(с точностью до 5 цифры после запятой), а вот y подводит почему-то. Почему?
Стоит добавить, что последнее значение y пишется с цифрами после запятой(2.00001)