18-09-2008, 04:59 AM
|
| Addicted to Computer | | Join Date: Sep 2007 Location: ------------ Age: 34
Posts: 1,309
Contact Number: --------------- Program / Discipline: BSIT Class Roll Number: 07-01 | |
Re: Fraction Calculator with 4 functions in c++ [ex12 of ch#5] Robert Lafore Fraction Calculator with Proper LCM Function Code: #include <iostream>
using namespace std;
struct fraction
{
int numerator,denominator;
};
fraction functadd(fraction a,fraction b);
fraction functsubtr(fraction a,fraction b);
fraction functmulti(fraction a,fraction b);
fraction functdivide(fraction a,fraction b);
int lcm(int val1, int val2);
void main()
{
fraction number[2];
char c;
char oprtr;
fraction result;
for(int n=1;n!=0;)
{
int showans=1;
cout<<"\nEnter Values in this form 2/3+4/3 :";
cin>>number[0].numerator>>c>>number[0].denominator>>oprtr>>number[1].numerator>>c>>number[1].denominator;
switch (oprtr)
{
case '+':
result=functadd(number[0],number[1]);
n=0;
break;
case '-':
result=functsubtr(number[0],number[1]);
n=0;
break;
case '*':
result=functmulti(number[0],number[1]);
n=0;
break;
case '/':
result=functdivide(number[0],number[1]);
n=0;
break;
default:
cout<<"You have used an invalid Operator, Please use any one of following operators\n+ , - , *, /\n\n";
n=1;
showans=0;
break;
}
if (showans==1)
{
cout<<"Answer = "<<result.numerator<<"/"<<result.denominator;
}
cout<<"\n\nContinue? y/n : ";
char var;
cin>>var;
if(var=='y')
n=1;
else if(var=='n')
{
n=0;
}
}
}
/*-----------------------------------------------------------------
Functions are Given Below
------------------------------------------------------------------*/
fraction functadd(fraction a,fraction b)
{
fraction ans;
ans.denominator=lcm(a.denominator,b.denominator);
ans.numerator=((ans.denominator/a.denominator)*a.numerator)+(ans.denominator/b.denominator)*b.numerator;
return ans;
}
fraction functsubtr(fraction a,fraction b)
{
fraction ans;
ans.denominator=lcm(a.denominator,b.denominator);
ans.numerator=((ans.denominator/a.denominator)*a.numerator)-(ans.denominator/b.denominator)*b.numerator;
return ans;
}
fraction functmulti(fraction a,fraction b)
{
fraction ans;
ans.numerator=a.numerator*b.numerator;
ans.denominator=a.denominator*b.denominator;
return ans;
}
fraction functdivide(fraction a,fraction b)
{
fraction ans;
ans.numerator=a.numerator*b.denominator;
ans.denominator=a.denominator*b.numerator;
return ans;
}
/*-----------------------------------
Function for LCM Starts Here
-------------------------------------*/
int lcm(int val1,int val2)
{
int lcm,check,big;
check=65536; //Any Bigger Value greater than big
if(val1>val2)
big=val1;
else if(val1<val2)
big=val2;
else
big=val1;
for(;big<=check;big++)
{
if(big%val1==0 && big%val2==0)
{
check=0;
lcm=big;
}
}
return lcm;
}
/*-----------------------------------
Function for LCM Ends Here
-------------------------------------*/ |