fraction函数(求高手解答,用C++设计一个有理数运算)
本文目录
- 求高手解答,用C++设计一个有理数运算
- 关于fraction类 C++的问题
- 大神求帮忙补全程序,多谢啊 编写Fraction类,封装分数的基本功能,Fraction的如下:
- 用C++编程建立分数类,实现分数加、减、乘、除、求倒等
- python怎么导出fractions函数的分子
- c++编程数据综合计算
- 在线求:C++分数 Fraction类
- C++中分数怎么约分
求高手解答,用C++设计一个有理数运算
#include《iostream》 using namespace std; //numerator 分子 //denominator分母 int gcd(int m,int n) //求最大公约数函数,用于约分 { if(n==0)return m; return gcd(n,m%n); } class fraction { private: int numer; int denom; public: fraction(int n=0,int d=1)//带默认参数的构造函数,整数与分数的运算迎刃而解{ numer=n; denom=d; } void rev(fraction &a){numer=a.denom;denom=a.numer;}//倒数friend ostream& operator《《(std::ostream&, const fraction&); //重载输出friend istream& operator》》(std::istream&, fraction&); //重载输入friend bool operator==(const fraction&, const fraction&); //判断有理数是否相等,以下类似friend bool operator《(const fraction&, const fraction&);friend bool operator》(const fraction&, const fraction&);friend bool operator》=(const fraction&, const fraction&);friend bool operator《=(const fraction&, const fraction&);friend fraction operator +(const fraction&,const fraction&);//重载运算符friend fraction operator -(const fraction&,const fraction&);friend fraction operator *(const fraction&,const fraction&);friend fraction operator /(const fraction&,const fraction&);friend bool operator!=(const fraction&, const fraction&);}; fraction operator +(const fraction &a,const fraction &b){ fraction p; p.numer=a.numer*b.denom+b.numer*a.denom; p.denom=a.denom*b.denom; return p;}fraction operator -(const fraction &a,const fraction &b){ fraction p; p.numer=a.numer*b.denom-b.numer*a.denom; p.denom=a.denom*b.denom; return p;}fraction operator *(const fraction &a,const fraction &b){ fraction p; p.numer=a.numer*b.numer; p.denom=a.denom*b.denom; return p;}fraction operator /(const fraction &a,const fraction &b){ fraction p; p.numer=a.numer*b.denom; p.denom=a.denom*b.numer; return p;}ostream& operator《《(ostream& output,const fraction #) { int a=gcd(num.numer,num.denom);if((num.denom/a)==1)output《《num.numer/a;else if(num.denom/a《0) output《《-num.numer/a《《"/"《《-num.denom/a; else output《《num.numer/a《《"/"《《num.denom/a;return output; } istream& operator》》(istream&input, fraction& num) { input》》num.numer》》num.denom; return input; } bool operator==(const fraction&num1, const fraction&num2) { return (num1.numer*num2.denom)==(num2.numer*num1.denom);} bool operator!=(const fraction &num1, const fraction &num2){ return (num1.numer*num2.denom)!=(num2.numer*num1.denom);}bool operator《(const fraction&a, const fraction&b) { return (a.numer*b.denom)《(b.numer*a.denom); } bool operator》(const fraction&a, const fraction&b) { return (a.numer*b.denom)》(b.numer*a.denom); } bool operator《=(const fraction&a, const fraction&b) { return (a.numer*b.denom)《=(b.numer*a.denom); } bool operator》=(const fraction&a, const fraction&b) { return (a.numer*b.denom)》=(b.numer*a.denom); } int main() { fraction zrf(1,7),ssh(26,65);fraction p;p.rev(ssh);cout《《"ssh="《《ssh《《"\n1/ssh="《《p《《endl;cout《《"zrf="《《zrf《《"\nssh="《《ssh《《’\n’ ; cout《《"(zrf==ssh)="《《(zrf==ssh)《《"\n(zrf《ssh)="《《(zrf《ssh)《《endl ; cout《《"zrf+ssh="《《zrf+ssh《《endl;cout《《"zrf*ssh="《《zrf*ssh《《endl;cout《《"ssh-zrf="《《ssh-zrf《《endl;cout《《"zrf-ssh="《《zrf-ssh《《endl;cout《《"zrf/ssh="《《zrf/ssh《《endl;return 0; }
关于fraction类 C++的问题
你基本都错在分号那里,分号改成逗号,我都特别给你标了的你看后面,一下是修改了的//fraction.h#ifndef fractionH#define fractionH#include 《iostream》class fraction{ long num;//分子 long den;//分母 void standardize();public: fraction(long n=0,long d=1);//注意分号要变成逗号};#endif//fraction.cpp#include"fraction.h"#include《cmath》static long gcd(long m1,long m2) //注意分号要变成逗号{ while(m2) { long m=m1; m1=m2; m2=m%m2; } return labs(m1);}void fraction::standardize(){ if(num==0L||den==0L) { num=0L; den=1L;return; }if(den《0) { den=-den; num=-num; } long g=gcd(num,den);//注意分号要变成逗号 num=num/g; den=den/g;}fraction::fraction(long n,long d):num(n),den(d)//中间添加一个逗号{ standardize();}
大神求帮忙补全程序,多谢啊 编写Fraction类,封装分数的基本功能,Fraction的如下:
//地大的兄弟吗?#include 《iostream》 using namespace std; class Fraction { public: Fraction(); //缺省构造函数设置分子为 0,分母为 1 Fraction(int n); //只有 1 个参数,设置分子为 n,分母为 1 Fraction(int n, int d); //设置分子为 n,分母为 d void setValue(int n, int d); //设置分子和分母 double getDoubleValue(); //获取分数对应的小数值 void output(); //按分数形式显式分数 private: int num; //分子 int den; //分母 }; Fraction::Fraction(){ num=0; den=1;}Fraction::Fraction(int n){ num=n; den=1;}Fraction::Fraction(int n, int d){ num=n; den=d;}void Fraction::setValue(int n, int d){ num=n; den=d;}double Fraction::getDoubleValue(){ return 1.0*num/den;}void Fraction::output(){ cout《《num《《"/"《《den《《endl;}int main(){Fraction f1,f2(2),f3(3,4);f1.output();f2.output();f3.output();f1.setValue(6, 4);f1.output();cout《《" double valueof f1:"《《f1.getDoubleValue()《《endl;return 0;}
用C++编程建立分数类,实现分数加、减、乘、除、求倒等
分类: 电脑/网络 》》 程序设计 》》 其他编程语言 问题描述: 编程:建立一个分数类。分数类的数据成员包括分子和分母,操作包括约分、通分、比较、加、减、乘、除、求倒数、显示和输入。分数类定义如下: class fraction{ int above; 分子 int below; 分母void reduction(); 约分 void makeCommond(fraction); 通分 public: fraction(int=0,int=1); 构造函数 fraction add(fraction); 两分数相加 fraction sub(fraction); 本分数减去实参分数 fraction mul(fraction); 两分数相乘 fraction div(fraction); 本分数除以实参分数 fraction reciprocal(); 求倒数 bool epual(fraction); 等于运算 bool greaterThan(fraction); 大于运算 bool lessThan(fraction); 小于运算 void display(); 显示分数 void input(); 输入分数 }; 完成所有成员函数并进行检验。 解析: 部分代码,自己可以借鉴完善的 Franction FranAdd(const Franction& a,const Franction& b) { 返回两个分数a,b之和 void FranSimp(Franction&); Franction c; 定义临时变量c,用于保存求和结果 c.nume=a.nume*b.deno+a.deno*b.nume 计算结构分数的分子 c.deno=a.deno*b.deno; 计算结果分数的分母 FranSimp(c); 化简分数 return c; } void FranSimp(Franction& x) { 把x化为最简分数 求x的分子和分母的最大公约数 int m,n,r; m=x.nume;n=x.deno; r=m%n; while(r!=0) { 循环结束值就是x分子分母的最倒公约数 m=n;n=r; r=m%n; } 化简x,使分子分母缩小n倍 if(n!=1) { x.nume/=n; x.deno/=n; } 若分母为负则让分子分母同时取负后使分子分母转换为正值 if(x.deno《0) { x.nume=-x.nume; x.deno=-x.deno; } } bool FranEqual(const Franction& a,const Franction& b) { 若a,b的值相等则返回ture,否则返回false; if(a.nume*b.deno-b.nume*a.deno==0) return true; else return false; } void FranInput(Franction& x) { 分数的输入 char ch; ch保存分数驶入分除号 cout《《"Input a franction:"《《ednl; cin》》x.nume》》ch》》x.deno; if(x.deno==0) { cout《《"除数为0!"《《endl; exit(1); 中止程序运行 } } void FranOutput(Franction& x) { 分数的输出 cout《《x.nume《《’/’《《x.deno《《endl; }
python怎么导出fractions函数的分子
python的fractions可以助你一臂之力:
# coding=utf-8from fractions import Fractionnumerator = 2 # 分子denominator = 6 # 分母print(Fraction(numerator, denominator) + 1)
输出结果:
4/3
c++编程数据综合计算
第一题 看看这个 也许对你有帮助#include《iostream.h》class fraction{private: int above; //分子 int below; //分母 public: friend void reduction(fraction & x); //约分 friend void makeCommond(const fraction & a,const fraction &b); //通分 fraction() //构造函数 {cout《《"输入分数"; cin》》above》》below; } friend void add(const fraction & a,const fraction & b); //两分数相加 friend void sub(const fraction & a,const fraction & b); //本分数减去实参分数 riend void mul(const fraction & a,const fraction & b); //两分数相乘 friend void div(const fraction & a,const fraction & b); //本分数除以实参分数 friend void reciprocal(fraction &a); //求倒数 friend bool epual(const fraction& a,const fraction& b); //等于运算 friend bool greaterThan(const fraction & a,const fraction & b); //大于运算 friend bool lessThan(const fraction & a,const fraction & b); //小于运算 fraction(fraction & c) //复制构造函数 { fraction k; k.above=c.above; k.below=c.below; }}; void reduction(fraction & x) //把x化为最简分数/求x的分子和分母的最大公约数{ int m,n,r; m=x.above;n=x.below; r=m%n; while(r!=0) //循环结束值就是x分子分母的最大公约数{ m=n;n=r; //返回nr=m%n; } //化简x,使分子分母缩小n倍 if(n!=1) { x.above/=n; x.below/=n; } //若分母为负则让分子分母同时取负后使分子分母转换为正值 if(x.below《0) { x.above=-x.above; x.below=-x.below; } cout《《x.above《《"/"《《x.below《《endl;} void makeCommond(const fraction & a,const fraction &b) //通分{ fraction a1,b1; a1.above=a.above*b.below; b1.above=a.below*b.above ; a1.below=a.below*b.below; b1.below=a.below*b.below; cout《《a1.above《《"/"《《a1.below《《endl; cout《《b1.above《《"/"《《b1.below《《endl;}void add(const fraction & a,const fraction & b){cout《《a.above*b.below+a.below*b.above《《"/"《《a.below*b.below《《endl;//计算结构分数的分子}void sub(const fraction & a,const fraction & b){cout《《a.above*b.below-a.below*b.above 《《"/"《《a.below*b.below《《endl;//计算分数的分子}void mul(const fraction & a,const fraction & b){cout《《a.above*b.above《《"/"《《a.below*b.below《《endl; }void div(const fraction & a,const fraction & b){cout《《a.above*b.below《《"/"《《a.below*b.above《《endl; }void reciprocal(fraction &a){ fraction c; c.above=a.below; c.below=a.above; cout《《c.above《《"/"《《c.below《《endl;}bool epual(const fraction & a,const fraction & b){if(a.above*b.below-b.above*a.below==0){ cout《《"equal="《《1《《endl;return true;} else {cout《《"equal="《《0《《endl;return false; }}bool greaterThan(const fraction& a,const fraction& b){ if(a.above*b.below-b.above*a.below》0) {cout《《"greaterThan="《《1《《endl; return true; }else {cout《《"greaterThan="《《0《《endl; return false; }}bool lessThan(const fraction& a,const fraction& b){ if(a.above*b.below-b.above*a.below《0) {cout《《"lessThan="《《1《《endl;return true; } else{ cout《《"lessThan="《《0《《endl;return false; }}void main(){ fraction a; fraction b; reduction(a); reduction(b); makeCommond(a,b); add( a, b); sub(a,b); mul(a, b); div(a, b); reciprocal(a); epual( a,b);greaterThan( a, b); lessThan(a, b); }#include《iostream.h》template《typename T》Add(T & a,T & b){T temp=a+b;return temp;}class complex{private: double real,imag;public: complex(double r=0.0,double i=0.0){real=r;imag=i;} complex operator+(complex); complex(complex &com){real=com.real;imag=com.imag;} void print1() { cout《《"real="《《real《《endl; cout《《"imag="《《imag《《endl; }};complex complex::operator +(complex c){complex temp1;temp1.real=real+c.real;temp1.imag=imag+c.imag;return temp1;}class line{private: double x,y;public: line(double a=0.0,double b=0.0) //构造函数 { x=a;y=b; } line operator+(line); line(line & L1) { x=L1.x; y=L1.y; } void print2() { cout《《"x="《《x《《endl; cout《《"y="《《y《《endl; }}; line line::operator +(line c) { line temp2; temp2.x=x+c.x; temp2.y=y+c.y; return temp2; }void main(){int a,b;cout《《"请输入两个整型的数"《《endl;cin》》a》》b;cout《《Add(a,b)《《endl;cout《《"请输入两个double型的数"《《endl;double c,d;cin》》c》》d;cout《《Add(c,d)《《endl;complex c1(1.0,1.0),c2=c1,c3;c1.print1();c3=c1+c2;c3.print1();line L1(2.2,2.1),L2=L1,L3;L1.print2();L3=L2+L1;L3.print2();return ;}
在线求:C++分数 Fraction类
class fraction{private:int above; //分子int below; //分母void reduction(); //约分fraction makeCommond(fraction); //通分 public:fraction(int a=0,int b=1){ //构造函数 above=a;below=b;}fraction add(fraction); //两分数相加fraction sub(fraction); //本分数减去实参分数fraction mul(fraction); //两分数相乘fraction div(fraction); //本分数除以实参分数fraction reciprocal(); //求倒数bool equal(fraction); //等于运算bool greaterThan(fraction); //大于运算bool lessThan(fraction); //小于运算void display(); //显示分数void input(); //输入分数};void fraction::reduction(){int i,comdiv,small,max;if(this-》above《this-》below){ small=this-》above; max=this-》below;}else { small=this-》below; max=this-》above;}for(i=small;i》1;i--){ if(small%i==0 &max%i==0 ) break;}comdiv=i;//最大公约数if(i!=0){ this-》above/=i; this-》below/=i;}}fraction fraction::makeCommond(fraction frac){int b1=this-》below,b2=frac.below, m,s;if(b1》b2){ m=b1%b2; s=b2;}else{ m=b2%b1; s=b1;} while(m》0){ int res=s%m; s=m,m=res;} int small=(b1*b2)/s;this-》above=this-》above*(small/this-》below);frac.above=frac.above*(small/frac.below);this-》below=small;frac.below=small;return frac;}fraction fraction::add(fraction fr){fraction myFraction;myFraction.above=this-》above*fr.below+fr.above*this-》below;myFraction.below=this-》below*fr.below; myFraction.reduction();return myFraction;}fraction fraction::sub(fraction fr){fraction myFraction;myFraction.above=this-》above*fr.below-fr.above*this-》below;myFraction.below=this-》below*fr.below; myFraction.reduction();return myFraction;}fraction fraction::mul(fraction fr){fraction myFraction; myFraction.above=this-》above*fr.above;myFraction.below=this-》below*fr.below; myFraction.reduction();return myFraction;}fraction fraction::div(fraction fr){fraction myFraction; myFraction.above=this-》above*fr.below;myFraction.below=this-》below*fr.above; myFraction.reduction();return myFraction;}fraction fraction::reciprocal(){fraction myFraction(this-》above,this-》below);if(this-》above!=0){ int temp=myFraction.above; myFraction.above=myFraction.below; myFraction.below=temp;}return myFraction;}bool fraction::equal(fraction frac) //等于运算{bool result=false;if(this-》sub(frac).above==0) result=true;return result;}bool fraction::greaterThan(fraction frac) //大于运算{bool result=false;if(this-》sub(frac).above》0) result=true;return result;}bool fraction::lessThan(fraction frac) //小于运算{bool result=false;if(this-》sub(frac).above《0) result=true;return result;}void fraction::display(){cout《《this-》above《《endl《《"---"《《endl《《this-》below《《endl《《endl《《endl;}void fraction::input() //输入分数{ cout《《"请输入分数的分子: "; cin》》this-》above;while(true){ cout《《"请输入分数的分母(不等于零): "; cin》》this-》below; if(this-》below==0) { cout《《"分母不能为零!"; } else break;};}int main(){//fraction frac(5,24),frac2(7,16);//fraction frac(7,9),frac2(8,11);fraction frac(5,20),frac2(50,200);frac.input();frac2.input();frac.display();frac2.display();cout《《"分数加法"《《endl;frac.add(frac2).display(); cout《《"分数减法"《《endl;frac.sub(frac2).display();cout《《"分数乘法"《《endl;frac.mul(frac2).display();cout《《"分数除法"《《endl;frac.div(frac2).display();cout《《"分数倒数"《《endl;frac.reciprocal().display();char *str;cout《《"分数相等比较: ";if(frac.equal(frac2)) str="相等";else str="不相等";cout《《str《《endl《《endl;cout《《"分数大于比较: ";if(frac.greaterThan(frac2)) str="大";else str="小";cout《《str《《endl《《endl;cout《《"分数小于比较:";if(frac.lessThan(frac2)) str="小";else str="大";cout《《str《《endl《《endl;return 0;}
C++中分数怎么约分
约分函数按这你样的写法,在里面再写两句SetNumerator(a);SetDenominator(b);基本就可以把约分函数当成构造函数了如果想让约分函数在类外面可以调用的话,约分函数根本没必要带参数,里面的再次赋值完全是多此一举,完全可以在约分函数里面去调用私有变量,假如numer,denom就是私有变量名,那么这个函数可以写成void Rational::Reduce() {int tmp=gcd(numer, denom);numer/=tmp;denom/=tmp;}这样在构造函数里面Rational::Rational(int numer, int denom) { //构造函数 SetNumerator(a); SetDenominator(b);Reduce();}