Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include "Circle.h"
- #include <cmath>
- #include <cstdio>
- #include <iostream>
- using namespace Figures;
- Cissoida::Cissoida() :p(0, 0), a(1), alpha(1)
- {
- }
- Cissoida::~Cissoida()
- {
- }
- Cissoida::Cissoida(const Point &p0, double ad) :p(p0), a(ad)
- {
- setA(ad);
- }
- Cissoida::Cissoida(double x0, double y0, double ad) : p(x0, y0)
- {
- setA(ad);
- }
- Cissoida& Cissoida::setP(const Point &p0)
- {
- p = p0;
- return *this;
- }
- Cissoida& Cissoida::setA(double a0)
- {
- // Генерация исключений типа const char * является плохим стилем программирования, лучше использовать для этих целей специальную иерархию классов - исключений
- // Но т.к. данный пример написан по мотивам вашего первого семинара по ООП, мы не перегружаем его дополнительной иерархией классов
- /*if (a0 < 0)
- throw "illegal radius value";*/
- a = a0;
- return *this;
- }
- Point Cissoida::getP() const
- {
- return p;
- }
- double Cissoida::getA() const
- {
- return a;
- }
- double Cissoida::area() const
- {
- return 3*3.14159*a*a;
- }
- double Cissoida::assimptota() const
- {
- return a/2;
- }
- double Cissoida::volume() const
- {
- return 2 * 3.14159*3.14159*a*a*a;
- }
- double Cissoida::distance() const
- {
- return 2 * a*sin(alpha)*sin(alpha) / cos(alpha);
- }
- double Cissoida::f(double x) const
- {
- double dx = x - p.x;
- dx = (dx * dx * dx)/(2*a-dx);
- /*if (dx < 0)
- throw "illegal argument x";*/
- return p.y + sqrt(dx);
- }
- double Cissoida::distance() const
- {
- return sqrt(p.x * p.x + p.y * p.y);
- }
- int Cissoida::frm(char *s, size_t len) const
- {
- //используем безопасную версию функции sprintf
- return sprintf_s(s, len, "(y - %.2f) ^ 2=((x - %.2f) ^ 3 )/(2*%.2f-x)", p.y, p.x, a);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement