Advertisement
Guest User

Untitled

a guest
Sep 21st, 2014
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "Circle.h"
  3. #include <cmath>
  4. #include <cstdio>
  5. #include <iostream>
  6.  
  7. using namespace Figures;
  8.  
  9. Cissoida::Cissoida() :p(0, 0), a(1), alpha(1)
  10. {
  11. }
  12.  
  13. Cissoida::~Cissoida()
  14. {
  15. }
  16.  
  17. Cissoida::Cissoida(const Point &p0, double ad) :p(p0), a(ad)
  18. {
  19. setA(ad);
  20. }
  21. Cissoida::Cissoida(double x0, double y0, double ad) : p(x0, y0)
  22. {
  23. setA(ad);
  24. }
  25. Cissoida& Cissoida::setP(const Point &p0)
  26. {
  27. p = p0;
  28. return *this;
  29. }
  30. Cissoida& Cissoida::setA(double a0)
  31. {
  32. // Генерация исключений типа const char * является плохим стилем программирования, лучше использовать для этих целей специальную иерархию классов - исключений
  33. // Но т.к. данный пример написан по мотивам вашего первого семинара по ООП, мы не перегружаем его дополнительной иерархией классов
  34.  
  35. /*if (a0 < 0)
  36. throw "illegal radius value";*/
  37. a = a0;
  38. return *this;
  39. }
  40.  
  41. Point Cissoida::getP() const
  42. {
  43. return p;
  44. }
  45. double Cissoida::getA() const
  46. {
  47. return a;
  48. }
  49.  
  50. double Cissoida::area() const
  51. {
  52.  
  53. return 3*3.14159*a*a;
  54. }
  55. double Cissoida::assimptota() const
  56. {
  57. return a/2;
  58. }
  59. double Cissoida::volume() const
  60. {
  61. return 2 * 3.14159*3.14159*a*a*a;
  62. }
  63. double Cissoida::distance() const
  64. {
  65. return 2 * a*sin(alpha)*sin(alpha) / cos(alpha);
  66. }
  67. double Cissoida::f(double x) const
  68. {
  69. double dx = x - p.x;
  70. dx = (dx * dx * dx)/(2*a-dx);
  71. /*if (dx < 0)
  72. throw "illegal argument x";*/
  73. return p.y + sqrt(dx);
  74. }
  75. double Cissoida::distance() const
  76. {
  77. return sqrt(p.x * p.x + p.y * p.y);
  78. }
  79. int Cissoida::frm(char *s, size_t len) const
  80. {
  81. //используем безопасную версию функции sprintf
  82. return sprintf_s(s, len, "(y - %.2f) ^ 2=((x - %.2f) ^ 3 )/(2*%.2f-x)", p.y, p.x, a);
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement