﻿ ICS 212: Program Structure by William McDaniel Albritton

# Assignment Instructions

1. Edit, compile, and run the following program on the UH UNIX shell:
1. Create a class called `Complex` for performing arithmetic with complex numbers.
2. Complex numbers have the form `a + bi`, where `a` is the real part, `b` is the imaginary part, and `i` is the square root of negative one.
3. The data members, `real` and `imaginary`, should be data type `double`.
4. Write a constructor with two parameters, copy constructor, add member function, subtract member function, divide member function, multiply member function, and destructor.
5. Use these formulas:
1. Complex add(const Complex &) : (a + bi) + (c + di) = (a + c) + (b + d)i
2. Complex subtract(const Complex &) : (a + bi) - (c + di) = (a - c) + (b - d)i
3. Complex multiply(const Complex &) : (a + bi) * (c + di) = (a*c - b*d) + (b*c + a*d)i
4. Complex divide(const Complex &) : (a + bi) / (c + di) = (a*c + b*d)/(c*c + d*d) + (b*c - a*d)/(c*c + d*d)i
6. In the driver program (main() function), create at least three (3) complex numbers and test all of the constructors, math member functions, and destructor for class `Complex`.
7. Email your makefile and C program to the instructor, or show it to the instructor in class.
2. For the submission guidelines and the grading guidelines, see the syllabus.

## Example I/O

```Test the constructor with two parameters.
Complex number c1 is: (1.1+2.3i)

Test the copy constructor.
Complex number c2 is: (1.1+2.3i)

Destructor for: (2.2 + 4.6i)
(1.1+2.3i) + (1.1+2.3i) = (2.2+4.6i)

Test the subtract() member function:
Destructor for: (0 + 0i)
(1.1+2.3i) - (1.1+2.3i) = (0+0i)

Test the multiply() member function:
Destructor for: (-4.08 + 5.06i)
(1.1+2.3i) * (1.1+2.3i) = (-4.08+5.06i)

Test the divide member function:
Destructor for: (1 + 0i)
(1.1+2.3i) / (1.1+2.3i) = (1+0i)

Destructor for: (1 + 0i)
Destructor for: (1.1 + 2.3i)
Destructor for: (1.1 + 2.3i)

```