C ++程序带有一个自我设计的类,用于有理数字对不能按预期工作
我的代码有问题。它现在没有执行任何功能......既不是加减也不是除数,也不是乘法。
任何帮助将不胜感激......我需要解释......这样我才能理解它并克服它:D
#include <iostream>
using namespace std;
// Class Definitions
class RationalNumber
{
public:
RationalNumber(int, int, int, int);
RationalNumber operator+(RationalNumber);
RationalNumber operator-(RationalNumber);
RationalNumber operator*(RationalNumber);
RationalNumber operator/(RationalNumber);
RationalNumber operator<(RationalNumber);
RationalNumber operator>(RationalNumber);
RationalNumber operator<=(RationalNumber);
RationalNumber operator>=(RationalNumber);
RationalNumber operator==(RationalNumber);
RationalNumber operator!=(RationalNumber);
private:
int numerator;
int denominator;
int numerator2;
int denominator2;
}; // end RationalNumber class
// RationalNumber class member-function definitions
RationalNumber::RationalNumber(int num, int denom, int num2, int denom2)
{
numerator = num;
denominator = denom;
numerator2 = num2;
denominator2 = denom2;
//for first fraction
if (denominator == 0 || denominator < 0)
cout << "ERROR:Denominator can not be zero or less than zero." << "n";
else
//Reduces the fraction to lowest terms.
{
int i = numerator > denominator ? numerator : denominator;
while(i > 1)
{
if(numerator % i == 0 && denominator % i == 0)
{
numerator /= i;
denominator /= i;
}
--i;
}
}
cout << "Simplified fraction one is: " << numerator << " / "
<< denominator << "n";
//For second fraction
if (denominator2 == 0 || denominator2 < 0)
cout << "ERROR:Denominator can not be zero or less than zero" << "n";
else
//Reduces the fraction to lowest terms.
{
int j = numerator2 > denominator2 ? numerator2 : denominator2;
while(j > 1)
{
if(numerator2 % j == 0 && denominator2 % j == 0)
{
numerator2 /= j;
denominator2 /= j;
}
--j;
}
}
cout << "Simplified fraction two is: " << numerator2 << " / "
<< denominator2 << "n";
}
// addition operator
RationalNumber RationalNumber::operator+(RationalNumber a)
{
RationalNumber temp=RationalNumber(1,2,3,4);
temp.numerator = numerator + a.numerator;
temp.denominator = denominator + a.denominator;
temp.numerator2 = numerator2 + a.numerator2;
temp.denominator2 = denominator2 + a.denominator2;
return temp;
}
// subtraction operator
RationalNumber RationalNumber::operator-(RationalNumber a)
{
RationalNumber temp=RationalNumber(1,2,3,4);
temp.numerator = numerator - a.numerator;
temp.denominator = denominator - a.denominator;
temp.numerator2 = numerator2 - a.numerator2;
temp.denominator2 = denominator2 - a.denominator2;
return temp;
}
// multiplication operator
RationalNumber RationalNumber::operator*(RationalNumber a)
{
RationalNumber temp=RationalNumber(1,2,3,4);
temp.numerator = numerator * a.numerator;
temp.denominator = denominator * a.denominator;
temp.numerator2 = numerator2 * a.numerator2;
temp.denominator2 = denominator2 * a.denominator2;
return temp;
}
// division operator
RationalNumber RationalNumber::operator/(RationalNumber a)
{
RationalNumber temp=RationalNumber(1,2,3,4);
temp.numerator = numerator / a.numerator;
temp.denominator = denominator / a.denominator;
temp.numerator2 = numerator2 / a.numerator2;
temp.denominator2 = denominator2 / a.denominator2;
return temp;
}
int main()
{
int top;
int bot;
int top2;
int bot2;
cout << "Please enter the Numerator for fraction one: n";
cin >> top;
cout << "Please enter the Denominator for fraction one: n";
cin >> bot;
cout << "Please enter the Numerator for fraction two: n";
cin >> top2;
cout << "Please enter the Denominator for fraction two: n";
cin >> bot2;
RationalNumber A(top, bot, top2, bot2);
return 0;
}
没有找到相关结果
已邀请:
5 个回复
摊揉售
,您将自动删除默认构造函数,即不再可以通过调用不带参数的构造函数来创建类的实例。 换一种说法,
不再可能。你需要说
。 如果您希望能够使用默认构造函数创建实例,那么除了另一个构造函数之外,还需要定义一个实例:
豪抱怒掳
这可以避免创建导致您悲伤的无参数临时。它还有助于编译器使用返回值优化(RVO)。
慷祈霖黑
运算符的规范定义
,
,
,
。
芳菱挨啡
试图使用不存在的构造函数。您必须编写一个带零参数的构造函数(显式或通过为另一个构造函数的参数提供所有默认值),或者必须在构造时提供值:
坝镰补翔奋