C/C++

Таб. функции С++

Написать программу табулирования
функции на заданном промежутке с шагом 0.2.
Помогите пожалуйста.
(Желательно описать полностью).#include <iostream>
#include <cmath>
using namespace std;
int main(){
double y,x;
cout<<"y:"<<endl;
cin>>x;
for (double x = -2; x <= 3; x += 0.2)
if(x>1.5)
cout <<2.5*pow(x,3)+6*pow(x,2)-30 <<endl;
else
if(0<=x<=1.5)
cout<<x+1<<endl;
else
if(x<0)
cout<<1-pow(x,2)<<endl;

return 0;
}
Получается далеко не то, что надо.
L.
Litovec .
804
 #include  
#include
using namespace std;
double y(double x)
{
if (x < 0) return 1 - x * x;
if (x < 1.501) return x + 1; //от куда взялось 1.501 вместо 1.5 смотрите ниже
return 2.5 * x * x * x + 6 * x * x - 30; //для возведения в целую степень проще перемножать само на себя
}
int main()
{
cout
Александр Вольников
Александр Вольников
51 416
Лучший ответ
Litovec . Здравствуйте. Не могли бы вы сделать через условные операторы и без fixed и precision.
Что-то на студенческом, которое я представил в своем коде.
Буду очень благодарен.
Александр Вольников
 #include  
#include
using namespace std;
int main(){
for (double x = -2; x 1.501)
cout
 #include 
#include
#include
#include
#include

using namespace std;

class Tabulation {
public:
Tabulation() = default;
void options(double a, double b, double h, const function& fn) {
if (a > b) swap(a, b);
const auto stop = b + h / 10.0;
for (auto x = a; x
*E
****pro100 Edik****
67 237
Litovec . Спасибо.
Модуль cmath здесь не нужен, функцию у(х) лучше сделать отдельной от главной (зачем её в main пихать? экономить время на вызовах, что ли? фу, какая ерунда !) и цикл лучше сделать чуть другим, без плывущего x (тут то ладно, но на больших циклах этот х ведь и уплыть может куда ему ни за что не следует уплывать !), а чтобы он вычислялся на каждом шаге цикла максимально точно - это из элементарных основ вычислительной математики. При условиях, когда шаг h=0,2, x∈[-2;3], а функция определена как у Вас, значения функции у(х) будут иметь максимум две значащих цифры после запятой (остальные цифры после запятой будут нулями и непонятно тогда зачем эти нули печатать), поэтому надо как-нибудь так:
 #include  
#include
using namespace std;
double y(double x)
{
return x < 0 ? 1. - x * x :
(x>1.5 ? x*x*(2.5*x+6.)-30. : x+1.);
}
int main()
{
double h = 0.2, i, x;
cout
Litovec . Спасибо