【发布时间】:2021-07-11 00:55:28
【问题描述】:
我有一个作业,我必须以分数的形式对一组两个数字进行加/减/乘/除,因此 a/b + c/d 将是 a * d + b * c / b * d .我有代码可以工作,但结果没有正确显示。到目前为止,我只是在测试添加成员函数以确保其正常工作,但它只是输出第一个输入的值。以下是我的代码:
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <fstream>
#include <iomanip>
using namespace std;
class Rational
{
private:
int numer;
int denomer;
public:
Rational()
{
numer = 0;
denomer = 1;
}
int getnumer()
{
return numer;
}
void setnumer(int numer)
{
numer = numer;
}
int getdenomer ()
{
return denomer;
}
void setdenomer (int denomer)
{
denomer = denomer;
}
Rational(int n, int d)
{
numer = n;
denomer = d;
}
Rational (int n)
{
numer = n;
denomer = 1;
}
Rational add (Rational r1)
{
int a, b, c, d, r;
Rational r2;
a = getnumer();
b = getdenomer();
c = r1.getnumer();
d = r1.getdenomer();
r2.setnumer(a * d + b * c);
r2.setdenomer(b * d);
return r2;
}
Rational sub (Rational r1, Rational r2)
{
int a, b, c, d, r;
a = getnumer();
b = getdenomer();
c = r1.getnumer();
d = r1.getdenomer();
r2.setnumer(a * d - b * c);
r2.setdenomer(b * d);
return r2;
}
Rational mul (Rational r1, Rational r2)
{
int a, b, c, d, r;
a = getnumer();
b = getdenomer();
c = r1.getnumer();
d = r1.getdenomer();
r2.setnumer(a * c);
r2.setdenomer(b * d);
return r2;
}
Rational div (Rational r1, Rational r2)
{
int a, b, c, d, r;
a = getnumer();
b = getdenomer();
c = r1.getnumer();
d = r1.getdenomer();
r2.setnumer(a * d);
r2.setdenomer(c * b);
return r2;
}
bool lesst (Rational r1)
{
int a, b, c, d, r;
a = getnumer();
b = getdenomer();
c = r1.getnumer();
d = r1.getdenomer();
if ((a * b) < (c*b))
{
return true;
}
else
{
return false;
}
}
Rational neg (Rational r1, Rational r2)
{
int a, b, c, d, r;
a = getnumer();
b = getdenomer();
c = r1.getnumer();
d = r1.getdenomer();
r2.setnumer(-a);
r2.setdenomer(-b);
return r2;
}
Rational equal_num (Rational r1, Rational r2)
{
int a, b, c, d, r;
a = getnumer();
b = getdenomer();
c = r1.getnumer();
d = r1.getdenomer();
if ((a * d) == (c * b))
{
cout << "The numbers are equal";
}
else
{
// Nothing
}
}
void printNumber()
{
cout << getnumer() << "/" << getdenomer();
}
//void inputz (istream& fin)
};
int main()
{
int num1, den1, num2, den2;
cout << "Please enter the first numerator value: ";
cin >> num1;
cout << "Please enter the first denominator value: ";
cin >> den1;
cout << "Please enter the second numerator value: ";
cin >> num2;
cout << "Please enter the second denominator value: ";
cin >> den2;
cout << "\nAddition: ";
cout << num1 << " / " << den1 << " + " << num2 << " / " << den2 << " = ";
Rational r1(num1, den1);
Rational r2 (num2, den2);
r1.add(r2);
r1.printNumber();
return 0;
}
我得到的输出是:
Please enter the first numerator value: 2
Please enter the first denominator value: 3
Please enter the second numerator value: 1
Please enter the second denominator value: 2
Addition: 2 / 3 + 1 / 2 = 2/3
【问题讨论】:
-
你忘了给
add打电话 -
谷歌搜索“变量阴影”
-
谢谢 selbie 我刚刚注意到了,但我注意到了,而且我仍然得到相同的结果
-
您的 add 函数返回一个新的 Rational,然后您不会将其分配给变量。尝试类似 r1 = r1.add(r2);
-
谢谢,但我试过了,现在无论我输入什么值,我都得到 0/1