#include <iostream>
using namespace std;
class fenshu{
public:
int a,b;
fenshu(int a,int b) {
this->a=a;
this->b=b;
}
void print(){
if(a==0) cout<<"此分数为0"<<endl;
else cout<<a<<"/"<<b<<endl;}
};
int yuefeng(int a,int b){ //a,b的最大公约数
int c,min;
min=(a<b?a:b);
for(int i=min;i>1;i--)
{
if (b%i==0&&a%i==0)
{
b=b/i ;a=a/i;
}
}
c=(b/c);
return c;
}
void fenshujia(fenshu& a,fenshu& b){ //此函数为2个分数相加
int j=(a.b)*(b.b);
int k=(a.a*b.b)+(b.a*a.b);
int l=yuefeng(k,j);
cout<<(k/l)<<'/'<<(j/l)<<endl;
}
int main()
{
fenshu a(2,7);
fenshu b(3,14);
fenshujia(a,b);
system("pause");
}
c*=i;并放在循环的判断里边
那这句话是c=c*i么?那就是C=1,那就是说c=i?i是最小的那个公约数啊?应该是最大公约数呀。。
是说我这个是形参的改变跟实参的没关系么?我只想返回这个c,跟原来的那个应该没关系把?
追答你返回的c已经是0了,所以用这个方法(引用)直接改变
yuefeng(k, j);中的k和j的值,然后输出.你通过调试看得到c = 0,还有可以看到好多次无用循环;
c为什么会等于0呢?因为执行第一次循环后,a=1,b=2,往后的循环都没有用了,然后到了这句:
c=(b/c);这个为什么是0,应该是0.5啊,因为c是int型,(int) 0.5 = 0;
记得再把你的
void fenshujia(fenshu& a,fenshu& b)
函数里面的
cout<<(k/l)<<'/'<<(j/l)<<endl;
改为:
cout<<k<<'/'<<j<<endl;
就行了
c++分数类 ,下面代码哪里有问题呢?求高手解释
int c =1,min;即可 2)c的赋值不对,此处应该是\/\/c=(b\/c);不对,改为 c*=i;并放在循环的判断里边 更正后的程序 include <iostream> using namespace std;class fenshu{ public:int a,b;fenshu(int a,int b) { this->a=a;this->b=b;} void print(){ if(a==0) cout<<"此分...
c++中输入两个分数,经行相加约分输出
这段代码存在一些语法错误和逻辑问题。以下是一些需要修正的地方:1. 在class定义中,应该在类名后面加上大括号,而不是分号。2. 在构造函数中,你没有创建一个对象来存储输入的参数值。应该将对象的名称命名为p,并使用new运算符来创建它。3. yuefen()函数应该在Add()函数之前调用,否则输出的结果...
用C++编程建立分数类,实现分数加、减、乘、除、求倒等。
void FranOutput(Franction& x){ \/\/分数的输出 cout<<x.nume<<'\/'<<x.deno<<endl;}
分数的四则运算,面向对象的C++程序设计,求代码
(a):(b))#define max(a,b) ((a)>(b)?(a):(b))#endifclass Fraction{int _numerator;int _denominator;\/\/ 由double赋值时的精度阈值static const double threshold;\/\/ 化简void simplify(){if(_denominator < 0){_denominator = -_denominator;_numerator = -_numerator;}if(_numerator){...
C++ 类的疑问
void B::set(int i,int j):A(i) 这个在C++中只能用在构造函数中,常规函数是不允许使用的,没有为什么,语法就是这样规定的。在构造对象时,必须先构造基类,使基类正确初始化,即调用基类的构造函数。看下面的例子,Person 类中有一个string成员:Name,Student 类继承自Person,构造Student时肯定...
C++问题,设计一个评委评分程序,即去掉最高分和最低分求平均分值?
你定义的double类型数组a[]没有进行初始化。所以像max=a[0]就会报错。在double a[10]; 后加 memset(a,0,sizeof(0)); 语句即可。另一种做法:既然是在去掉最高分和最低分。你完全可以对你输入的数组进行排序,然后用for循环对a[1]--a[n-1]进行ave处理。
求高手指点:C++如何减少代码的重复
tyedef enum { math,chinese,...}subject;int sum(int subject, int i){ int score=0;switch(subject){ case math:for(int j = 0; j < i; j++)score += stu[j].math;break;case chinese:...} return score;}
c++定义一个有理数类,实现有理数的加减乘除以及化简成最简分数等,要...
c++定义一个有理数类,实现有理数的加减乘除以及化简成最简分数等,要代码。问题解决了还会加分。 我来答 3个回答 #热议# 职场上受委屈要不要为自己解释? 匿名用户 2011-12-27 展开全部 \/\/Rational.h#ifndef RATIONAl_CLASS#define RATIONAl_CLASSclass Rational{private: int P,Q; void Standardize()...
C++关于类中类成员变量是数组的问题,还有定义类对象是数组,问题在下面...
class ListArray { private:int size;\/\/整形数组大小 int elem;\/\/整形数组当前元素个数,初始为0,当elem等于时size,数组满 int *p;\/\/指向整形数组,动态分配空间 public:ListArray(int s=100)\/\/用初始化整形数组大小 { size=s;} void put(int n)\/\/将加入整形数组,elem自增1 { elem=(sizeof...
c语言 .用结构体输出学生姓名、学号和成绩 我有c++的程序 但是看不懂...
C++ 中的struct与class的区别是:struct的默认访问级别是public,class 的访问级别是private。C++中的struct和class一样可以有成员函数(上面代码中的 void show是成员函数;Student(char *name, char *id, int grade)是一个特殊的成员函数,叫构造函数,该函数用于实例化一个类的对象)。下面给出上面...