// parabola.h
#ifndef _PARABOLA_H
#define _PARABOLA_H
class parabola
{
private:
double p, d;
public:
parabola();
parabola(double p);
void getYByX(double x);
void setP(double p);
void setD(double d);
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;
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;
}