@novichok151413

Почему выводитт int y, а не double?

Делаю задание, вывести все значения функции 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)
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@galaxy
А что вы хотели получить?
Значения sin(4x) с шагом pi/8 - это 0, 1, -1.
Хотите выводить с нулями (-2.0000000) - читайте доки по cout (cout.precision, std::fixed)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы