Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Using C++, write a class for complex numbers. A complex number has the form a + bi, where a and b are real numbers and

Using C++, write a class for complex numbers. A complex number has the form a + bi, where "a" and "b" are real numbers and i is the square root of -1. We refer to "a" the real part and "b" as the imaginary part of the number. The class should have two data members to represent the real and imaginary numbers; the constructor takes two arguments to set these members. Discuss and implement other appropriate operators for this class. Create complex_number.cpp using the header file complex_number.h and the test program test_complex.cpp.

complex_number.h

#ifndef _COMPLEX_NUMBER_H_ #define _COMPLEX_NUMBER_N_ #include  class complex_number { public: complex_number (double r = 0.0, double i = 0.0); // postcondition: complex with given components has been created double get_real_part () const; // returned: real part of complex number double get_imag_part () const; // returned: imaginary part of complex number private: double real_part; double imag_part; }; complex_number operator + (const complex_number& c1, const complex_number& c2); // returned: sum of c1 and c2 complex_number operator - (const complex_number& c1, const complex_number& c2); // returned: difference of c1 and c2 complex_number operator * (const complex_number& c1, const complex_number& c2); // returned: product of c1 and c2 complex_number operator / (const complex_number& c1, const complex_number& c2); // precondition: c2 is not the zero of complex numbers // returned: quotient of c1 and c2 complex_number conjugate (const complex_number& c); // returned: conjugate of c double complex_modulus (const complex_number& c); // returned: modulus of c bool operator == (const complex_number& c1, const complex_number& c2); // returned whether c1 and c2 are equal to each other bool operator != (const complex_number& c1, const complex_number& c2); // returned whether c1 and c2 are not equal to each other std::ostream& operator << (std::ostream& output, const complex_number& c); // postcondition: c has been put on the output stream output // returned: modified output stream output #endif

test_comple.cpp

#include  #include  #include "complex_number.h" #include  #include  using namespace std; int main() { complex_number c1(2.3, 4.8); assert (c1.get_real_part() == 2.3); assert (c1.get_imag_part() == 4.8); complex_number c2 (2.6); assert (c2.get_real_part() == 2.6); assert (c2.get_imag_part() == 0.0); complex_number c3; assert (c3.get_real_part() == 0.0); assert (c3.get_imag_part() == 0.0); assert (conjugate(c1).get_real_part() == 2.3); assert (conjugate(c1).get_imag_part() == -4.8); assert (abs (complex_modulus (c1) - 5.322593353) < FLT_EPSILON); complex_number c4 (2.3, 4.8); assert (c1 == c4); assert (c1 != c2); complex_number c5 (1.3, -4.1); complex_number c6 = c4 + c5; assert (abs (c6.get_real_part() - 3.6) < FLT_EPSILON); assert (abs (c6.get_imag_part() - 0.7) < FLT_EPSILON); complex_number c7 = c4 - c5; assert (abs (c7.get_real_part() - 1.0) < FLT_EPSILON); assert (abs (c7.get_imag_part() - 8.9) < FLT_EPSILON); complex_number c8 = c4 * c5; assert (abs (c8.get_real_part() - 22.67) < FLT_EPSILON); assert (abs (c8.get_imag_part() + 3.19) < FLT_EPSILON); complex_number c9 = c4 / c5; assert (abs (c9.get_real_part() + 0.902162162) < FLT_EPSILON); assert (abs (c9.get_imag_part() - 0.847027027) < FLT_EPSILON); cout << "all tests passed - do end zone touchdown dance!" << endl; return EXIT_SUCCESS; }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions