JacK_C#_类在分数上的运用
来源:互联网 发布:java 兼职 编辑:程序博客网 时间:2024/06/08 06:50
#region 分数
//定义分数(Fraction)类:
//(1)成员变量
// 私有字段以及可读可写属性:分子、分母
//(2)成员方法:
// * 打印分数信息(例如: 1 / 3)
// * 约分
// * 创建一个方法交换分子和分母的值
// * 创建一个方法能同时得到加、减、乘、除、求余运算;
class Fraction{
private int numerator;
private int denominator;
public int Numerator{
get{
return numerator;
}
set{
if (value == 0) {
throw new FormatException ("格式异常,分母不能为零");
} else {
numerator = value;
}
}
}
public int Denominator{
get{
return denominator;
}
set{
denominator = value;
}
}
//打印分数信息
public void Print(){
Console.WriteLine ("{0} / {1}",Numerator,Denominator);
}
//求最大公约数 最大公倍数Numerator * Denominator / gsd
public int GCD(){
// 方法一:辗转相除法,最常用的算法
int a = Numerator,b = Denominator;
while (b != 0) {
int c = a % b;
a = b;
b = c;
}
return a;
}
//方法二:
// int min = Numerator < Denominator ? Numerator : Denominator;
// int max = Numerator > Denominator ? Numerator : Denominator;
// if (max % min == 0) { // 该条件也是为下面节省空间而衍生的
// return min;
// }
// int gcd = 0;
// for (int i = 1; i <= min / 2 ; i++) { // min/2节省了运行时间和空间
// if (Numerator % i == 0 && Denominator % i == 0) {
// gcd = i;
// }
// }
// return gcd;
//约分
public void Reduce(){
//方法1:
// for (int i = (Numerator < Denominator ? Numerator : Denominator); i > 1;i--) {
// if (Numerator % i == 0 && Denominator % i == 0) {
// Numerator /= i;
// Denominator /= i;
// }
// }
// Print ();
//方法二:
Numerator /= GCD();
Denominator /= GCD();
Print ();
}
//交换分子分母
public void Swap(){
int temp = Numerator;
Numerator = Denominator;
Denominator = temp;
}
//包含基本运算符
public void MathOperation(Fraction fraction,out Fraction addResult,out Fraction redResult,out Fraction mulResult,out Fraction divResult,out Fraction remResult){
//加法
addResult = new Fraction();
addResult.Denominator = fraction.Denominator * Denominator;
addResult.Numerator = fraction.Denominator * Numerator + fraction.Numerator * Denominator;
addResult.Reduce ();
//减法
redResult = new Fraction();
redResult.Denominator = fraction.Denominator * Denominator;
redResult.Numerator = fraction.Denominator * Numerator - fraction.Numerator * Denominator;
redResult.Reduce ();
//乘法
mulResult = new Fraction();
mulResult.Denominator = fraction.Denominator * Denominator;
mulResult.Numerator = fraction. Numerator * Numerator;
mulResult.Reduce ();
//除法
divResult = new Fraction();
divResult.Denominator = fraction.Denominator * Numerator;
divResult.Numerator = fraction. Numerator * Denominator;
divResult.Reduce ();
//求余
remResult = new Fraction();
remResult.Denominator = fraction.Denominator * Denominator;
remResult.Numerator = (fraction.Denominator * Numerator) % (fraction.Numerator * Denominator);
remResult.Reduce ();
}
}
#endregion
//定义分数(Fraction)类:
//(1)成员变量
// 私有字段以及可读可写属性:分子、分母
//(2)成员方法:
// * 打印分数信息(例如: 1 / 3)
// * 约分
// * 创建一个方法交换分子和分母的值
// * 创建一个方法能同时得到加、减、乘、除、求余运算;
class Fraction{
private int numerator;
private int denominator;
public int Numerator{
get{
return numerator;
}
set{
if (value == 0) {
throw new FormatException ("格式异常,分母不能为零");
} else {
numerator = value;
}
}
}
public int Denominator{
get{
return denominator;
}
set{
denominator = value;
}
}
//打印分数信息
public void Print(){
Console.WriteLine ("{0} / {1}",Numerator,Denominator);
}
//求最大公约数 最大公倍数Numerator * Denominator / gsd
public int GCD(){
// 方法一:辗转相除法,最常用的算法
int a = Numerator,b = Denominator;
while (b != 0) {
int c = a % b;
a = b;
b = c;
}
return a;
}
//方法二:
// int min = Numerator < Denominator ? Numerator : Denominator;
// int max = Numerator > Denominator ? Numerator : Denominator;
// if (max % min == 0) { // 该条件也是为下面节省空间而衍生的
// return min;
// }
// int gcd = 0;
// for (int i = 1; i <= min / 2 ; i++) { // min/2节省了运行时间和空间
// if (Numerator % i == 0 && Denominator % i == 0) {
// gcd = i;
// }
// }
// return gcd;
//约分
public void Reduce(){
//方法1:
// for (int i = (Numerator < Denominator ? Numerator : Denominator); i > 1;i--) {
// if (Numerator % i == 0 && Denominator % i == 0) {
// Numerator /= i;
// Denominator /= i;
// }
// }
// Print ();
//方法二:
Numerator /= GCD();
Denominator /= GCD();
Print ();
}
//交换分子分母
public void Swap(){
int temp = Numerator;
Numerator = Denominator;
Denominator = temp;
}
//包含基本运算符
public void MathOperation(Fraction fraction,out Fraction addResult,out Fraction redResult,out Fraction mulResult,out Fraction divResult,out Fraction remResult){
//加法
addResult = new Fraction();
addResult.Denominator = fraction.Denominator * Denominator;
addResult.Numerator = fraction.Denominator * Numerator + fraction.Numerator * Denominator;
addResult.Reduce ();
//减法
redResult = new Fraction();
redResult.Denominator = fraction.Denominator * Denominator;
redResult.Numerator = fraction.Denominator * Numerator - fraction.Numerator * Denominator;
redResult.Reduce ();
//乘法
mulResult = new Fraction();
mulResult.Denominator = fraction.Denominator * Denominator;
mulResult.Numerator = fraction. Numerator * Numerator;
mulResult.Reduce ();
//除法
divResult = new Fraction();
divResult.Denominator = fraction.Denominator * Numerator;
divResult.Numerator = fraction. Numerator * Denominator;
divResult.Reduce ();
//求余
remResult = new Fraction();
remResult.Denominator = fraction.Denominator * Denominator;
remResult.Numerator = (fraction.Denominator * Numerator) % (fraction.Numerator * Denominator);
remResult.Reduce ();
}
}
#endregion
阅读全文
0 0
- JacK_C#_类在分数上的运用
- JACK_C#_类的简单运用
- JACK_C#_类和方法
- JACK_C#_循环语句
- JACK_C#_二维数组
- JACK_C#_属性
- JACK_C#_内存分配
- JACK_C#_委托
- 泛型---在类上的运用
- JACK_C#_一维数组
- JACK_C#_抽象,静态,接口
- 易经思想在软件工程上的运用
- 学习poi在java上的运用
- Git在Android Studio上的运用
- GAN在NLP上的运用
- JACK_C#_游戏英雄武器和攻击
- JACK_C#_虚方法和抽象方法
- JACK_C#_集合之栈和队列
- 通用电商异步营销引擎设计-李浩
- 鸭子类型
- 第十三讲 继承、方法重写与super、final关键字、抽象类与接口、Object类、工厂和静态代理模式
- Keil MDK生成bin文件
- pandas.read_csv——分块读取大文件
- JacK_C#_类在分数上的运用
- 数据库语句学习
- 740[Medium]:Delete and Earn
- hdu1627 Krypton Factor(注意后缀+dfs)
- MySQL学习总结4:多表操作
- Ruby on Rails基于ruby2.4.2的hello world
- css实现文本超出部分显示省略号
- 回调机制简述
- 往mysql中插入 自增id不连续(曾经的坑)