这个代码不会输出,类与对象

#include
using namespace std;
class Rational{

int m;   // 分母

int n;   // 分子

public:

Rational(int nn=1,int mm=1); //构造

bool setM( int M); // 设置分母,注意不能为零

void setN( int N);  //设置分子

Rational  R_add( const Rational& A);   //加法操作, 返回和对象

void  R_sub(Rational & A, Rational &B);     //减法操作A-B

Rational  R_mul(Rational & A);    //乘法操作,返回乘积对象

void R_div(Rational & A, Rational &B); //除 A/B

void simple( );        //约分

void print();            //以分数形式显示,注意约分和符号

};
int main(){
Rational test;
Rational test2;
test.setN(4);
test.setM(8);
test.simple();
test.print();
test2.setN(3);
test2.setM(5);
test.R_add(test2).print();
test.R_sub(test,test2);
test.print();
test.R_mul(test);
test.print();
test.R_div(test,test2);
test.print();
}
Rational::Rational(int nn, int mm) {
n=nn;m=mm;
}
bool Rational::setM(int M) {
if(M==0)
return 0;
m=M;
return 1;
}
void Rational::setN(int N) {
n=N;
}
Rational Rational::R_add(const Rational &A) {
int M=mA.m;
int N=n
A.m+A.nm;
Rational add;
add.setN(N);
add.setM(M);
add.simple();
return add;
}
void Rational::R_sub(Rational &A, Rational &B) {
int M=A.m
B.m;
int N=A.nB.m-B.nA.m;
A.setM(M);
A.setN(N);
A.simple();
}
Rational Rational::R_mul(Rational &A) {
Rational mul;
mul.setN(A.nn);
mul.setM(A.m
m);
mul.simple();
return mul;
}
void Rational::R_div(Rational &A, Rational &B) {
A.setN(A.nB.m);
A.setM(A.m
B.n);
A.simple();
}
void Rational::print() {
simple();
cout<<n<<"/"<<m;
}
void Rational::simple() {
int max=((n>m)?n:m);
for(int i=0;i<=max;i++){
if(n%i==0&&m%i==0){
setM(m/i);
setN(n/i);
}
}
if(n<0&&m<0){
setM(-m);
setN(-n);
}
}

我修改了一下,反正是能运行了,但是你的加减乘除逻辑我没有关注。
大思路没问题,就是一些细节。
这里我记得我修改的逻辑:1: 注意除法分母不能为0 2:注意你的构造函数那样写,和默认构造函数一样的作用,有重复函数的意思。

其他细节调整就好


```c
//main.c
#include <stdio.h>
#include <array>
#include <iostream>
using namespace std;

class Rational {
    int m;   // 分母
    int n;   // 分子
public:
    Rational():n(1), m(1) {}
    Rational(int nn , int mm ); //构造
    bool setM(int M); // 设置分母,注意不能为零
    void setN(int N);  //设置分子
    Rational  R_add(const Rational& A);   //加法操作, 返回和对象
    void  R_sub(Rational& A, Rational& B);     //减法操作A-B
    Rational  R_mul(Rational& A);    //乘法操作,返回乘积对象
    void R_div(Rational& A, Rational& B); //除 A/B
    void simple();        //约分
    void print();            //以分数形式显示,注意约分和符号
};
int main() {
    Rational test;
    Rational test2;
    test.setN(4);
    test.setM(8);
    test.simple();
    test.print();
    test2.setN(3);
    test2.setM(5);
    test.R_add(test2).print();
    test.R_sub(test, test2);
    test.print();
    test.R_mul(test);
    test.print();
    test.R_div(test, test2);
    test.print();
}
Rational::Rational(int nn, int mm) {
    n = nn; 
    m = mm;
}
bool Rational::setM(int M) {
    if (M == 0)
        return 0;
    m = M;
    return 1;
}
void Rational::setN(int N) {
    n = N;
}
Rational Rational::R_add(const Rational& A) {
    int M = A.m + this->m;
    int N = A.n + this->n;
    Rational add;
    add.setN(N);
    add.setM(M);
    add.simple();
    return add;
}
void Rational::R_sub(Rational& A, Rational& B) {
    int M = A.m - B.m;
    int N = A.n - B.n;
    A.setM(M);
    A.setN(N);
    A.simple();
}
Rational Rational::R_mul(Rational& A) {
    Rational mul;
    mul.setN(A.n);
    mul.setM(A.m);
    mul.simple();
    return mul;
}
void Rational::R_div(Rational& A, Rational& B) {
    A.setN(A.n/B.m);
    A.setM(A.m/B.n);
    A.simple();
}
void Rational::print() {
    simple();
    cout << n << "/" << m <<endl;
}
void Rational::simple() {
    int max = ((n > m) ? n : m);
    //分目不要为0了
    for (int i = 1; i <= max; i++) {
        if ((n % i == 0) && (m % i == 0)) {
            setM(m / i);
            setN(n / i);
        }
    }
    if (n < 0 && m < 0) {
        setM(-m);
        setN(-n);
    }
}

```

我首页有个分数类你可以看看