parent
d291f7a330
commit
ae46252c3e
@ -1,82 +1,85 @@
|
|||||||
#include <iostream>
|
#pragma once
|
||||||
#include "../fractions/fractions.hpp"
|
#include "../fractions/fractions.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
class cnumber {
|
class cnumber {
|
||||||
private:
|
private:
|
||||||
fraction r,i;
|
fraction r, i;
|
||||||
|
|
||||||
public:
|
|
||||||
// Constructor
|
|
||||||
cnumber(const cnumber &z) {
|
|
||||||
r = z.r;
|
|
||||||
i = z.i;
|
|
||||||
}
|
|
||||||
cnumber(const fraction &a, const fraction &b) {
|
|
||||||
r = a;
|
|
||||||
i = b;
|
|
||||||
}
|
|
||||||
cnumber(int a, int b) {
|
|
||||||
r = a;
|
|
||||||
i = b;
|
|
||||||
}
|
|
||||||
cnumber(double a, double b) {
|
|
||||||
r = a;
|
|
||||||
i = b;
|
|
||||||
}
|
|
||||||
// Member functions
|
|
||||||
cnumber conjugate() const {
|
|
||||||
fraction a(this->r.get_n(), this->r.get_d());
|
|
||||||
fraction b(this->i.get_n(), this->i.get_d());
|
|
||||||
cnumber z(a,b * -1);
|
|
||||||
return z;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Operators
|
public:
|
||||||
cnumber operator+(const cnumber &that) const {
|
// Constructor
|
||||||
cnumber z(this->r + that.r, this->i + that.i);
|
cnumber(const cnumber &z) {
|
||||||
return z;
|
r = z.r;
|
||||||
}
|
i = z.i;
|
||||||
cnumber operator-(const cnumber &that) const {
|
}
|
||||||
cnumber z(this->r - that.r, this->i - that.i);
|
cnumber(const fraction &a, const fraction &b) {
|
||||||
return z;
|
r = a;
|
||||||
}
|
i = b;
|
||||||
cnumber operator*(const cnumber &that) const {
|
}
|
||||||
cnumber z( (that.r * this->r ) - (that.i * this->i) , (that.r * this->i) + (this->r * that.i) );
|
cnumber(int a, int b) {
|
||||||
return z;
|
r = a;
|
||||||
}
|
i = b;
|
||||||
cnumber operator*(const fraction &q) const {
|
}
|
||||||
cnumber that(q,fraction(0));
|
cnumber(double a, double b) {
|
||||||
return *this * that;
|
r = a;
|
||||||
}
|
i = b;
|
||||||
cnumber operator/(const cnumber &that) const {
|
}
|
||||||
cnumber numerator( (this->r * that.r ) - (this->i * ( that.i * -1)) , (this->r * (that.i * -1)) + (that.r * this->i) );
|
// Member functions
|
||||||
cnumber denominator( (that.r * that.r ) - (that.i * ( that.i * -1)) , (that.r * (that.i * -1)) + (that.r * that.i) );
|
cnumber conjugate() const {
|
||||||
cnumber ratio(numerator.r / denominator.r, numerator.i / denominator.r);
|
fraction a(this->r.get_n(), this->r.get_d());
|
||||||
return ratio;
|
fraction b(this->i.get_n(), this->i.get_d());
|
||||||
}
|
cnumber z(a, b * -1);
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
friend ostream &operator<<( ostream &os, const cnumber &z ) {
|
// Operators
|
||||||
if (z.r != 0) {
|
cnumber operator+(const cnumber &that) const {
|
||||||
os << z.r;
|
cnumber z(this->r + that.r, this->i + that.i);
|
||||||
if ((z.i.get_sign() == 1) && (z.i > 0)) {
|
return z;
|
||||||
os << '+';
|
}
|
||||||
}
|
cnumber operator-(const cnumber &that) const {
|
||||||
}
|
cnumber z(this->r - that.r, this->i - that.i);
|
||||||
if (z.i != 0) {
|
return z;
|
||||||
if ((z.i != 1) && (z.i != -1)) {
|
}
|
||||||
os << z.i;
|
cnumber operator*(const cnumber &that) const {
|
||||||
} else if (z.i == -1) {
|
cnumber z((that.r * this->r) - (that.i * this->i),
|
||||||
os << '-';
|
(that.r * this->i) + (this->r * that.i));
|
||||||
}
|
return z;
|
||||||
os << 'i';
|
}
|
||||||
}
|
cnumber operator*(const fraction &q) const {
|
||||||
return os;
|
cnumber that(q, fraction(0));
|
||||||
}
|
return *this * that;
|
||||||
void operator=(const cnumber &z ) {
|
}
|
||||||
r = z.r;
|
cnumber operator/(const cnumber &that) const {
|
||||||
i = z.i;
|
cnumber numerator((this->r * that.r) - (this->i * (that.i * -1)),
|
||||||
}
|
(this->r * (that.i * -1)) + (that.r * this->i));
|
||||||
};
|
cnumber denominator((that.r * that.r) - (that.i * (that.i * -1)),
|
||||||
|
(that.r * (that.i * -1)) + (that.r * that.i));
|
||||||
|
cnumber ratio(numerator.r / denominator.r, numerator.i / denominator.r);
|
||||||
|
return ratio;
|
||||||
|
}
|
||||||
|
|
||||||
|
friend ostream &operator<<(ostream &os, const cnumber &z) {
|
||||||
|
if (z.r != 0) {
|
||||||
|
os << z.r;
|
||||||
|
if ((z.i.get_sign() == 1) && (z.i > 0)) {
|
||||||
|
os << '+';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (z.i != 0) {
|
||||||
|
if ((z.i != 1) && (z.i != -1)) {
|
||||||
|
os << z.i;
|
||||||
|
} else if (z.i == -1) {
|
||||||
|
os << '-';
|
||||||
|
}
|
||||||
|
os << 'i';
|
||||||
|
}
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
void operator=(const cnumber &z) {
|
||||||
|
r = z.r;
|
||||||
|
i = z.i;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Loading…
Reference in new issue