C only Im using code lite editor as well 916 AM oooo Verizon
Solution
Please find the below class which can be overload mathematical operations on rational numbers.
Here , we explained with comments , how the flow is working in important places . please understnad and use the concepts for any other queries if required .
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
class rational_number
{
int numerator1; //numerator
int denominator1; //denominator
public:
void getdata() //this function will use to get both values to makeup rational number
{
cout<<\"\ Enter the numerator value of the rational no.\";
cin>>numerator1;
cout<<\"\ Enter the denominator value of the rational no.\";
cin>>denominator1;
}
//if we take an example value , numerator is 2, denominator is 3 , then the rational number will be 2/3
void operator+(rational_number); //declaration function to add 2 rational numbers by using overload concept
void operator-(rational_number); //declaration function to subtracting 2 rational numbers by using overload concept
void operator*(rational_number); //declaration function to multiply 2 rational numbers by using overload concept
void operator/(rational_number); //declaration function to devided 2 rational numbers by using overload concept
};
void rational_number ::operator+(rational_number c1) //this is function definition for rational numbers addition
{
rational_number result1; //temp is obeject of rational class, then we can access all variables and functions of rational class in this function definition
result1.numerator1=(numerator1*c1.denominator1)+(c1.numerator1*denominator1); //rational number are cross multiplying
result1.denominator1=denominator1*c1.denominator1;
cout<<\"\ Rational number. after addition\";
cout<<\"\ Numerator is =\"<<result1.numerator1;
cout<<\"\ Denominator is =\"<<result1.denominator1;
}
void raional_number ::operator -(rational_number c2) //this is function definition for rational numbers subtraction
{
rational_number result2;
result2.numerator1=(numerator1*c2.denominator1)-(c2.numerator1*denominator1); //rational number are cross multiplying
result2.denominator1=denominator1*c2.denominator1;
cout<<\"\ rational no. after subtraction\";
cout<<\"\ numerator is=\"<<result2.numerator1;
cout<<\"\ denominator is =\"<<result2.denominator1;
}
void rational_number ::operator (rational_number c3) //this is function definition for rational numbers multiply
{
rational_number result3;
result3.numerator1=numerator1*c3.numerator1;
result3.denominator1=denominator1*c3.denominator1;
cout<<\"\ rational no. after multiplication\";
cout<<\"\ numerator=\"<result3.numerator1;
cout<<\"\ denominator =\"<< result3.denominator1;
}
void rational_number :: operator /(rational_number c1) //this is function definition for rational numbers deviding
{
rational_number result4;
result4.numerator1= numerator1*c1.denominator1;
result4.denominator1=c1.numerator1*denominator1;
cout<<\"\ rational no. after dividation\";
cout<<\"\ numerator=\"<<result4.numerator1
cout<<\"\ denominator =\"<<result4.denominator1;
}
void main()
{
clrscr();
rational_number a1, a2;
int ch;
//we are using do while cocept, to give option for particular operation while running this program
do
{
cout<<\"\ 1. To Give Input for rational numbers. \";
cout<<\"\ 2. Addition of rational numbers. \";
cout<<\"\ 3. Subtraction of rational numbers. \";
cout<<\"\ 4. Multiplication of rational numbers.\";
cout<<\"\ 5. Division of rational numbers. \";
cout<<\"\ 6. Quit\";
cout<<\"\ Enter your choice\";
cin>>ch; //will ask at runtime to enter choice (ch value)
switch(ch) //specific case will execte based on entered value
{
case 1:
cout<<endl<<\"\ enter the data for first rational number.\";
a1.getdata();
cout<<endl<<\"\ enter the data for second rational number. \";
a2.getdata ();
clrscr();
break;
case 2;
a1+a2; //it will call to operator+(rational_number); , nothing but \"void rational_number ::operator+(rational_number c1)\"
getch();
clrscr();
break;
case 3;
a1-a2; //it will call to operator-(rational_number); , nothing but \"void rational_number ::operator-(rational_number c1)\"
getch();
clrscr();
case 4:
a1*a2; //it will call to operator*(rational_number); , nothing but \"void rational_number ::operator(rational_number c1)\"
getch();
clrscr();
break;
case 5:
a1/a2; //it will call to operator/(rational_number); , nothing but \"void rational_number ::operator/(rational_number c1)\"
getch();
clrscr();
break;
case 6: //this case to exit from the program
exit(1);
break;
}
} while (ch!=6); //program will not exit till we give 6 as choice
getch(); //to wiat for our input (with any key) to come out from the running session
}


