View Single Post
  #5  
Old 18-09-2008, 04:59 AM
BSIT07-01's Avatar
BSIT07-01 BSIT07-01 is offline
Addicted to Computer


 
Join Date: Sep 2007
Location: ------------
Age: 34
Posts: 1,309
Contact Number: ---------------
Program / Discipline: BSIT
Class Roll Number: 07-01
BSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant futureBSIT07-01 has a brilliant future
Default 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
-------------------------------------*/

Reply With Quote