parabola ifndef _PARABOLA_H define _PARABOLA_H Описывает работу кривой

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// parabola.h
#ifndef _PARABOLA_H
#define _PARABOLA_H
/**
* Описывает работу с кривой второго порядка - параболой
*/
class parabola
{
private:
// Параметр параболы
double p, d;
public:
parabola();
/**
* Метод инициализации всех свойств класса - конструктор
* double p - параметр параболы P
*/
parabola(double p);
/**
* Получает значение функции по заданной координате Х
*/
void getYByX(double x);
/**
* Устанавливает параметр параболы
*/
void setP(double p);
/**
* Устанавливает смещение
*/
void setD(double d);
/**
* Получает значение аргумента функции по заданной координате Y
*/
void getXByY(double y);
/**
* Метод перегрузки бинарного оператора +=
*/
void operator+=(double d);
/**
* Метод перегрузки бинарного оператора +=
*/
void operator-=(double d);
};
#endif /* _PARABOLA_H */
// parabola.cpp
#include "parabola.h"
#include <iostream>
#include <stdlib.h>
#include <cmath>
// Используем стандартное пространство имен
using namespace std;
parabola::parabola()
{
}
parabola::parabola(double p)
{
this->setP(p);
this->setD(0);
}
void parabola::setP(double p)
{
// Проверяем параметр Р на допустимые значиния. Он не может быть равен нулю
if (p != 0)
this->p = p;
else
{
cout << "Error. Wrong value is failed.";
exit(0);
}
}
void parabola::setD(double d)
{
this->d = fabs(d);
}
void parabola::getYByX(double x)
{
double y1, y2;
// cout << "d = " << d << endl;
if (p * (x - d) >= 0)
{
y1 = -(sqrt(2 * p * (x - d)) + d);
y2 = sqrt(2 * p * (x - d)) + d;
cout << "x = " << x << endl;
cout << "y1 = " << y1 << ";y2 = " << y2 << endl;
}
else
{
cout << "Error. Invalid p or x values.";
exit(0);
}
}
void parabola::getXByY(double y)
{
double x;
x = pow((y-d), 2) / (2 * p)+d;
cout << "y = " << y << endl;
cout << "x = " << x << endl;
}
void parabola::operator+=(double d)
{
this->d = d;
}
void parabola::operator-=(double d)
{
this->d = -d;
}
// main
/* Подключаем необходимые библиотеки и заголовочные файлы */
#include <stdlib.h>
#include <iostream>
#include <cmath>
#include "parabola.h"
// Используем стандартное пространство имен
using namespace std;
/*
* Главная функция программы
*/
int main(int argc, char** argv)
{
parabola p(1);
p+=6;
p.getXByY(8);
return 0;
}