Advertisement
Guest User

Untitled

a guest
May 24th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.10 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. class Kompleksni {
  4. double re, im;
  5. public:
  6. Kompleksni(double re = 0, double im = 0) : re(re), im(im) {}
  7. friend Kompleksni operator +(const Kompleksni &a) { return a; }
  8. friend Kompleksni operator -(const Kompleksni &a) { return {-a.re, -a.im}; }
  9. friend Kompleksni operator +(const Kompleksni &a, const Kompleksni &b) {
  10. return {a.re + b.re, a.im + b.im};
  11. }
  12. friend Kompleksni operator -(const Kompleksni &a, const Kompleksni &b) {
  13. return Kompleksni(a.re - b.re, a.im - b.im);
  14. }
  15. friend Kompleksni operator *(const Kompleksni &a, const Kompleksni &b) {
  16. return {a.re * b.re - a.im * b.im, a.re * b.im + a.im * b.re};
  17. }
  18. friend Kompleksni operator /(const Kompleksni &a, const Kompleksni &b) {
  19. double pomocna(b.re * b.re + b.im * b.im);
  20. return {(a.re * b.re + a.im * b.im) / pomocna, (a.im * b.re - a.re * b.im) / pomocna};
  21. }
  22. /* friend bool operator ==(const Kompleksni &a, const Kompleksni &b) {
  23. return a.re == b.re && a.im == b.im;
  24. }
  25. friend bool operator !=(const Kompleksni &a, const Kompleksni &b) {
  26. return !(a == b);
  27. }
  28. */ friend Kompleksni &operator +=(Kompleksni &a, const Kompleksni &b) {
  29. a.re += b.re; a.im += b.im;
  30. return a;
  31. }
  32. friend Kompleksni &operator -=(Kompleksni &a, const Kompleksni &b) {
  33. a.re -= b.re; a.im -= b.im;
  34. return a;
  35. }
  36. friend Kompleksni &operator *=(Kompleksni &a, const Kompleksni &b) {
  37. double pomocna(a.re * b.im + a.im * b.re);
  38. a.re = a.re * b.re - a.im * b.im; a.im = pomocna;
  39. return a;
  40. }
  41. friend Kompleksni &operator /=(Kompleksni &a, const Kompleksni &b) {
  42. double pom1(a.im * b.re - a.re * b.im), pom2(b.re * b.re + b.im * b.im);
  43. a.re = (a.re * b.re + a.im * b.im) / pom2; a.im = pom1 / pom2;
  44. return a;
  45. }
  46. friend std::ostream &operator <<(std::ostream &tok, const Kompleksni &a) {
  47. if(a.re!=0 && a.im>0){
  48. if(a.im == 1) tok << a.re << "+" << "i";
  49. else tok << a.re << "+" << a.im << "i";
  50. }
  51. if(a.re==0 && a.im==0) tok << a.re;
  52. if(a.re==0 && (a.im > 0)){
  53. if(a.im == 1) tok << "i";
  54. else tok << a.im << "i";
  55. }
  56. if(a.re==0 && (a.im < 0)){
  57. if(a.im == -1) tok << "-i";
  58. else tok << a.im << "i";
  59. }
  60. if((a.re != 0) && a.im == 0 ) tok << a.re;
  61. if(a.im < 0 && a.re != 0){
  62. if(a.im == -1) tok << a.re << "-" << "i";
  63. else tok << a.re << a.im << "i";
  64. }
  65. return tok;
  66. }
  67. friend std::istream &operator >>(std::istream &tok, Kompleksni &a);
  68. friend double real(const Kompleksni &a) { return a.re; }
  69. friend double imag(const Kompleksni &a) { return a.im; }
  70. friend double abs(const Kompleksni &a) {
  71. return std::sqrt(a.re * a.re + a.im * a.im);
  72. }
  73. friend double arg(const Kompleksni &a) { return std::atan2(a.im, a.re); }
  74. friend Kompleksni conj(const Kompleksni &a) { return {a.re, -a.im}; }
  75. friend Kompleksni sqrt(const Kompleksni &a) {
  76. double rho(std::sqrt(abs(a))), phi(arg(a) / 2);
  77. return {rho * cos(phi), rho * sin(phi)};
  78. }
  79.  
  80. };
  81. int main ()
  82. {
  83. std::cout << Kompleksni(-1, 3) << " " << Kompleksni(-1, -1) << " " << Kompleksni(-1, -5) << std::endl;
  84.  
  85. return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement