猿问

程序目的是 分数化简,规范化还有按规范形式输出,但就是看不出来是哪里有问题

#include<iostream>
using namespace std;
class Fraction
{
public:
//Fraction();
//Fraction(int n);
Fraction(int n, int d);
void setValue(int n,int d);
//int getNum();
//int getDen();
//double getDoubleValue();
void output();
~Fraction();
private:
int num,den;
void normalize();
int gcd(int n,int d);
};

#include "fraction.h"
#include<iostream>
Fraction::Fraction(int n,int d) 
{
num=n;den=d;
Fraction::normalize();
}
void Fraction::setValue(int n,int d) 
{
num=n;den=d;
Fraction::normalize();
}
void Fraction::normalize()
{
if (den==0)
den=1;
else if(den<0)
{
den=-den; num=-num;
}
int g=gcd( num, den);
num=num/g; den=den/g;
}
int Fraction::gcd(int n,int d)
{
int mid;
for (;n!=0;) { mid=n; n=d%n; d=mid; }
return d;
}

void Fraction::output()
{
if (num==0) cout<<"0"<<endl;
else if (num/den==0 || num/den==-1) cout<<num<<"/"<<den<<endl;
else if (num/den>0) cout<<num/den<<" "<<num%den<<"/"<<den<<endl;
else cout<<num/den+1<<" "<<den-num%den<<"/"<<den<<endl;
}

#include<iostream>
#include "fraction.h"
using namespace std;
int main()
{
Fracion f1(8,10);
f1.output();
f1.setValue(18,15);
f1.output();
f1.setValue(-7,4);
f1.output();
f1.setValue(0,31);
f1.output();
Fraction f1(3,0);
f1.output();
f1.setValue(10,-4);
f1.output();
f1.setValue(14,2);
f1.output();
f1.setValue(-4,5);
f1.output();
return 0;
}

波斯汪
浏览 65回答 2
2回答

慕森卡

首先,你漏了析构函数Fraction::~Fraction(){}其次Fracion f1(8,10); 拼写错误,改成Fraction f1(8,10);再次,f1重复定义,改成f2如下。int main(){Fraction f1(8,10);f1.output();f1.setValue(18,15);f1.output();f1.setValue(-7,4);f1.output();f1.setValue(0,31);f1.output();Fraction f2(3,0);f2.output();f2.setValue(10,-4);f2.output();f2.setValue(14,2);f2.output();f2.setValue(-4,5);f2.output();return 0;}你的错误编译器都告诉你了。要是它没告诉你,就换个编译器吧&nbsp;

凤凰求蛊

你的代码有两处存在问题:1、未定义类的析构函数,定义如下:Fraction::~Fraction()&nbsp;{}2、main函数中有变量名错误和变量和变得重复定义错误,修改如下:&nbsp;&nbsp;&nbsp;&nbsp;Fraction&nbsp;f1(8,10);//此处Fracion错误,应为Fraction&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f1.output();&nbsp;&nbsp;&nbsp;&nbsp;f1.setValue(18,15);&nbsp;&nbsp;&nbsp;&nbsp;f1.output();&nbsp;&nbsp;&nbsp;&nbsp;f1.setValue(-7,4);&nbsp;&nbsp;&nbsp;&nbsp;f1.output();&nbsp;&nbsp;&nbsp;&nbsp;f1.setValue(0,31);&nbsp;&nbsp;&nbsp;&nbsp;f1.output();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fraction&nbsp;f2(3,0);//此处变量重复定义&nbsp;&nbsp;&nbsp;&nbsp;f2.output();&nbsp;&nbsp;&nbsp;&nbsp;f2.setValue(10,-4);&nbsp;&nbsp;&nbsp;&nbsp;f2.output();&nbsp;&nbsp;&nbsp;&nbsp;f2.setValue(14,2);&nbsp;&nbsp;&nbsp;&nbsp;f2.output();&nbsp;&nbsp;&nbsp;&nbsp;f2.setValue(-4,5);&nbsp;&nbsp;&nbsp;&nbsp;f2.output();
随时随地看视频慕课网APP
我要回答