// 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;
}