C++ program to perform arithmetic operations of two complex numbers using operator overloading

BINARY OPERATOR

AIM:
A program to perform simple arithmetic operations of two complex numbers using operator overloading.

ALGORITHAM:

• Start the process
• Get the complex value a.real and a.image
• Check while ((ch=getchar())!=’q’)
o True : execute switch(ch)
o Case ‘a’:Then
Compute c<-a+b, Print c.real and c.imag o Case ‘s’: Then Compute c<-a-b, Print c.real and c.imag o Case ‘m’: Then Compute c<-a*b, Print c.real and c.imag o Case ‘d’: Then Compute c<-a/b, Print c.real and c.imag o End of switch • End of while • Stop the process PROGRAM

#include<iostream.h>
#include<conio.h>
#include<string.h>
struct complex
{
float real;
float imag;
};
complex operator + (complex a,complex b);
complex operator - (complex a,complex b);
complex operator * (complex a,complex b);
complex operator / (complex a,complex b);
 
void main()
{
complex a,b,c;
int ch;
void menu(void);clrscr();
cout<<"Enter the first complex no:";
cin>>a.real>>a.imag;
cout<<"Enter the second complex no:";
cin>>b.real>>b.imag;
menu();
while ((ch = getchar()) != 'q')
{
switch(ch)
{
case 'a':c =a + b;
cout<<"Addition of 2 no’s";
cout<<c.real<<"+i"<<c.imag;
break;
case 's':c=a-b;
cout<<"Substraction of 2 no’s";
cout<<c.real<<"i"<<c.imag;
break;
case 'm':c=a*b;
cout<<"Multiplication of 2 no’s";
cout<<c.real<<"i"<<c.imag;
break;
case 'd':c=a/b;
cout<<"Division of 2 no’s";
cout<<c.real<<"i"<<c.imag;
break;
}
}
}
void menu()
{
cout<<"complex no: operators";
cout<<"a->addition";
cout<<"s->substraction";
cout<<"m->multiplication";
cout<<"d->division";
cout<<"q->quit";
cout<<"options please";
}
complex operator -(struct complex a, struct complex b)
{
complex c;
c.real=a.real-b.real;
c.imag=a.imag-b.imag;
return(c);
}
complex operator *(struct complex a, struct complex b)
{
complex c;
c.real=((a.real*b.real)-(a.imag*b.imag));
c.imag=((a.real*b.imag)+(a.imag*b.real));
return(c);
}
complex operator +(struct complex a,struct complex b)
{
complex c;
c.real=a.real+b.real;
c.imag=a.imag+b.imag;
return(c);
}
complex operator /(struct complex a, struct complex b)
{
complex c;
float temp;
temp=((b.real*b.real)+(b.imag*b.imag));
c.real=((a.real*b.real)+(a.imag*b.imag))/temp;
return(c);
}

OUTPUT

Enter the first complex no: 1,1
Enter the second complex no: 2,2

Addition of 2 no’s : 3+I3

Editorial Team
Editorial Team

We are a group of young techies trying to provide the best study material for all Electronic and Computer science students. We are publishing Microcontroller projects, Basic Electronics, Digital Electronics, Computer projects and also c/c++, java programs.

15 thoughts on “C++ program to perform arithmetic operations of two complex numbers using operator overloading

  1. The above program for division of complex numbers will fail for very small or very large real or imaginary parts of the denominator because of overflow or underflow of the parts. About 50 years ago I showed a simple method that works in almost all cases where the result can be represented in a computer. The trick is to break the problem into two parts, depending on whether the absolute value of real part of the denominator is greater of less than the absolute value of the imaginary part of the denominator. Consider Q = (a + ib)/(c + id). Case 1: If abs(c) > than abs(d), then note that the denominator can be written (c + id) = c*(1 + ir) where r = d/c. Now instead of multiplying both the numerator and denominator by the complex conjugate of (c + id), just multiply both by the complex conjugate of (1 + ir). Note that the absolute value of r is less than 1. Note that the new denominator will become c*(1 + ir)*(1 – ir) = c*(1 + r*r) = c*(1 + r*d/c) = c + d*r). The quotient is:

    q = (a + ib) / (c + id) = ((a + ib)*(1 – ir)) / (c*(1 + ir)*(1 – id/c))

    = ((a + b*r) + i(b – a*r)) / (c*(1 + r*d/c))

    = ((a + b*r)/(c + r*d)) + i((b – a*r)/(c + r*d))

    Note that the numerator and denominator no longer involve squares of possibly large or small quantities.

    Case 2: If abs(c) <= abs(d) then just reverse things a little bit so that the denominator (c + id) = d*(r + i) where r = c/d. In this case the absolute value of r is less than or equal to 1. In computing the quotient, we multiply the numerator and denominator by (r – i). The quotient can now be computed as follows:

    q = (a + ib) / (c + id) = ((a + ib)*(r – i)) / (d*(r + i)*(c/d – i))

    = ((a*r + b) + i(b*r – a)) / (c*r + d)

    = ((a*r + b) / (d + c*r)) + i((-a + b*r) / (d + c*r))

    I might mention that there are a few obscure cases where this method can be improved, again by breaking it down to two more sub-cases. My original paper appears in the Journal of the ACM.

  2. On sleep issues in the cafe is bookstore, where students become more willing to stay home line to
    get cramming books on chemistry, civil service, and English literature alongside parents willing to be out
    inside the rain because they buy the latest fashion in notebooks and colored pens because of their primary school children. Therefore,
    when you’ve got accidently visited a Trojan virus program, there is absolutely
    no escape until it fully enters your computer.
    Easy when you know what you are looking for in the product and difficult when you don’t have a system for
    choosing the best Clickbank products.

Leave a Reply

Your email address will not be published. Required fields are marked *

Get the latest updates on your inbox

Be the first to receive the latest updates from Codesdoc by signing up to our email subscription.

    StudentProjects.in