can someone help me figure out why my output is incorrect any help would be apprecaited

#include<iostream>
using namespace std;

class fractions
{
public:
	fractions fractions :: operator+(fractions f);
	fractions fractions :: operator-(fractions f);
	fractions fractions :: operator*(fractions f);
	fractions fractions :: operator/(fractions f);
	fractions addFraction(fractions);
	fractions subFraction(fractions);
	fractions multiFraction(fractions);
	fractions divideFraction(fractions);
	fractions();
	fractions(int, int);
	void getFraction();
	void printFraction();
private:
	int numerator;
	int denominator;
};

//method to add two fractions
fractions fractions :: addFraction(fractions f)
{
	fractions temp;
	temp.denominator = denominator * f.denominator;
	temp.numerator = numerator * f.denominator + denominator * f.numerator;
	return temp;
}
//method to add two fractions
fractions fractions :: operator+(fractions f)
{
	fractions temp;
	temp.denominator = denominator * f.denominator;
	temp.numerator = numerator * f.denominator + denominator * f.numerator;
	return temp;
}
//method to subtract two fractions
fractions fractions :: subFraction(fractions f)
{
    fractions temp;
    temp.denominator = denominator * f.denominator;
    temp.numerator = numerator * f.denominator - denominator * f.numerator;
    return temp;
}
//method to subtract two fractions
fractions fractions :: operator-(fractions f)
{
	fractions temp;
	temp.denominator = denominator * f.denominator;
	temp.numerator = numerator * f.denominator - denominator * f.numerator;
	return temp;
}
//method to multiply two fractions
fractions fractions :: multiFraction(fractions f)
{
    fractions temp;
    temp.denominator = denominator * f.denominator;
    temp.numerator = numerator * f.denominator * denominator * f.numerator;
    return temp;
}
//method to multiply two fractions
fractions fractions :: operator*(fractions f)
{
	fractions temp;
	temp.denominator = denominator * f.denominator;
	temp.numerator = numerator * f.denominator * denominator * f.numerator;
	return temp;
}
//method to divide to fractions
fractions fractions :: divideFraction(fractions f)
{
    fractions temp;
    temp.denominator = denominator * f.denominator;
    temp.numerator = numerator * f.denominator / denominator * f.numerator;
    return temp;
}
//method to divide two fractions
fractions fractions :: operator/(fractions f)
{
	fractions temp;
	temp.denominator = denominator * f.denominator;
	temp.numerator = numerator * f.denominator / denominator * f.numerator;
	return temp;
}


fractions::fractions()
{
	numerator = 0;
	denominator = 1;
}

fractions::fractions(int n, int d)
{
	numerator = n;
	denominator = d;
}

void fractions::printFraction()
{
	cout <<numerator<<'/'<<denominator<<endl;
}

void getFraction(int &numerator, int &denominator)
{
    cout<<"Please enter numerator";
	cin >>numerator;
	cout<<"Please enter denominator";
	cin >>denominator;
}

int main()
{
	int n,d;
	fractions f1(1,2);
	fractions f2();
	fractions f3;
	fractions f4;
    getFraction(n,d);
	fractions f5(n,d);
	

	f3 = f1.addFraction(f2);
	f4 = f3 + f1;
	f3.printFraction();
	f4.printFraction();
	
	f3 = f1.subFraction(f2);
	f4 = f3 - f1;
	f3.printFraction();
	f4.printFraction();
	
	f3 = f1.multiFraction(f2);
	f4 = f3 * f1;
	f3.printFraction();
	f4.printFraction();
	
	f3 = f1.divideFraction(f2);
	f4 = f3 / f1;
	f3.printFraction();
	f4.printFraction();
	system("pause");
	

}

Recommended Answers

All 4 Replies

It would help if you posted the output you were supposed to have and what output you got

First off, you cannot write fractions fractions :: operator/(fractions f); within the definition of a class.

Second, you have provided a default constructor that set the fraction to 0/1 . That gives perfectly acceptable results. So which test is wrong??

Third: You have not used references in many of your function , so there is lots of unnecessary copying

Forth: The biggest failing the the lack of code reuse. You have addFraction and operator+ using the smae code. PLEASE call one with the other. Otherwize you have two places to change each time and that leads to a mess.

It would help if you posted the output you were supposed to have and what output you got

the output im getting is

Please enter numerator2
Please enter denominator4
10/8
28/16
-2/8
-12/16
24/8
384/16
6/8
1/16
Press any key to continue . . .

its suppose to add subtract mulitplty etc fractions

Also see my post in your other thread about the flaw in your multiplication...

Stu, I'm thinking having 2 functions (one operator and one non-operator) might have been part of the assignment.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.