定义一个分数类,分子分母各为私有成员,

/*定义一个分数类,分子分母各为私有成员,
规则:默认构造函数分数为1
      分子分母要以最简形式存放。如3/9=1/3
	  定义成员Add,Sub,Mul和Div计算结果仍以最简形式存放
	  以浮点形式打印分数

思路:问题1.如何对分数约分。分子分母各除以他们的最大公约数
      问题2.加减乘除运算
	       加:通分后加结果再约分
		   减:通分后减结果再约分
		   乘:分子乘以分子,分母乘以分母,然后约分。
		   除:除就等于乘以一个数的倒数。
	  问题3.浮点式打印  分子除以分母*/
#include <iostream>
using namespace std;

int gcd(int a,int b){
	if(b)//b!=0时递归,用辗转相除发计算最大公约数
		return gcd(b,a%b);
	return a;//b==0,此时a即为最大公约数
}
class fraction
{
public:
	fraction():numerator(1),denominator(1){}
	fraction(int x,int y){numerator=x;denominator=y;}
	fraction Add(fraction &a);
	fraction Sub(fraction &a);
	fraction Mul(fraction &a);
	fraction Div(fraction &a);
	void Print(){cout<<"分数显示"<<numerator<<"/"<<denominator<<endl;cout<<"浮点数显示"<<(float)numerator/(float)denominator<<endl;}
private:
	int numerator;
	int denominator;
};
fraction fraction::Add(fraction &a)
{
	fraction c;
	c.denominator=a.denominator*denominator;
	c.numerator=c.denominator/a.denominator*a.numerator+c.denominator/denominator*numerator;
	int gys=gcd(c.denominator,c.numerator);
	c.denominator/=gys;
	c.numerator/=gys;
	return c;
}

//以下函数的实现同上

int main()
{
	int x,y;
	cout<<"请输入分子,和分母"<<endl;
	cin>>x>>y;
	fraction a(x,y);
	int m,n;
	cout<<"请输入分子,和分母"<<endl;
	cin>>m>>n;
	fraction b(m,n);
	a.Print();
	b.Print();
	a.Add(b).Print();
	return 0;
}
时间: 2024-09-17 04:53:50

定义一个分数类,分子分母各为私有成员,的相关文章

在定义一个js类的时候,为什么要设置该类的prototype属性为它所要继承的类的

在定义一个js类的时候,为什么要设置该类的prototype属性为它所要继承的类的实例对象 在写JavaScript类定义的时候,大家很可能都写过下面的代码: function A() {} function B() {} B.prototype = new A() 上面这样写是为了让instanceof语句能起作用.举个例子: 1.不重写子类的prototype属性 b = new B(); b instanceof B //return true b instanceof A // retu

c# #-C#用Graphics 定义一个Mycircle类画圆,如何在类外改变画笔颜色再画一个圆

问题描述 C#用Graphics 定义一个Mycircle类画圆,如何在类外改变画笔颜色再画一个圆 class MyCircle { int x; int y; int r; public MyCircle(int x, int y, int r) { this.x = x; this.y = y; this.r = r; } public override void Draw(Graphics g) { Random rd = new Random(); int red, blue, gree

link环境下,codefirst如何定义一个实体类为多个表?

问题描述 link环境下,codefirst如何定义一个实体类为多个表? link环境下,codefirst如何定义一个实体类为多个表? 解决方案 http://www.cnblogs.com/Allen-Li/archive/2012/04/05/2433339.html 解决方案二: 一般操作是一个model class对象数据库的一个table

请问,在ASP.NET中怎么定义一个窗体类,跟C#中一样,在我需要的时候就把它弹出,关闭后,还能用它的属性?

问题描述 就跟c#中对话框一样,先自定义一个窗体类,需要的时候弹出,等用户输入数据,关闭对话框后,我还能通过这个窗体的属性使用用户输入的数据?在ASP.NET中如何实现这一功能? 解决方案 解决方案二:和asp.net关系不大,更多是js和html的事

Java中一个分数类的简单设计

这个类对于分数提供化简和加减乘除四种操作,基于"不变"的设计原则,因此是线程安全的. 其中使用了几个算法: [1]Fraction simpler(Fraction f);//分数化简 [2]Fraction[] RCD(Fraction f1, Fraction f2);//通分 [3]int GCD(int s, int b);//最大公约数 [4]int LCM(int a, int b);//最小公倍数 使用的形式: [1]在控制台输入[分数][回车] //化简 [2]在控制台

c#中定义一个圆类,计算圆的面积和周长请高手知道运行不出来啊

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.math;namespace实验3._2{classProgram{staticvoidMain(){Circles1=newCircle(2);Console.WriteLine(s1);}}//抽象类:图形Shapepublicabstractcla

box-类与对象 定义一个Box(盒子)类,

问题描述 类与对象 定义一个Box(盒子)类, 定义一个Box(盒子)类,成员变量: length(长).width(宽)和height(高) 默认值均为0:成员方法: 构造方法Box()有三个参数,设置盒子长.宽和高三个合理的初始数据(正数):方法getVolume()没有参数,计算并返回盒子的体积,方法getArea()没有参数,计算并返回盒子的表面积,方法setEdge()有三个参数,用于修改三条边长.定义TestBox类,在其main()方法中创建Box对象b,长宽高分别为3.4.5,求

C# winform 如何定义一个公用变量

问题描述 我是新手感觉C#定义公用变量的方法跟其他语言有点不同1.如何定义一个公用变量,这个变量可以在所有的表单中使用,比如一个连接sql数据的SqlConnection类型的变量2.向数据库中执行了查询之后,如果在要执行修改,更新或是插入操作,是不是每次都要重新定义一个SqlCommand? 解决方案 解决方案二:如果是想在整个工程都使用的话,你可以专门用一个类来处理全局的变量和方法,并用static关键字,让变量和方法都是静态的,这样,在整个工程中,都可以通过这个类来引用.当然,你也可以定义

定义一个类时,其内部的问题

问题描述 本人正在自学java,有下面疑惑publicclassColor{privateStringname;publicstaticfinalColorRED=newColor("红色");//........} 这个Color不是类名吗,我知道类中有构造方法,可以同名,但这个不是在定义方法啊,更像是定义字符串常量,为什么可以这样写? 解决方案 解决方案二:Color类里面应该有一个和类同名的构造方法,用来初始化对象的newColor("红色");就是调用那个构