编写c++程序实现比较两个分数大小的功能。要求:调用函数先比较两个数的分母,分母相同比较分子;否则通分

如题所述

#include <iostream>
using namespace std;

typedef struct fraction//分数
{
int flag;//符号
int numerator;//分子
int denominator;//分母
};

int cmpFraction(fraction a,fraction b);

void main()
{
int rst;
fraction a,b;

cout<<"请输入分数a的分母:";
cin>>a.denominator;
cout<<"请输入分数a的分子:";
cin>>a.numerator;
cout<<"请输入分数a的符号(1或者-1):";
cin>>a.flag;
cout<<"请输入分数b的分母:";
cin>>b.denominator;
cout<<"请输入分数b的分子:";
cin>>b.numerator;
cout<<"请输入分数b的符号(1或者-1):";
cin>>b.flag;

rst=cmpFraction(a,b);
if(rst<0)
cout<<"a<b"<<endl;
else if(rst==0)
cout<<"a=b"<<endl;
else
cout<<"a>b"<<endl;
}

int cmpFraction(fraction a,fraction b)
{
int rst=0;
if(a.denominator==0||b.denominator==0)
{
cout<<"数据错误,无法比较!"<<endl;
return 0;
}

if(a.denominator!=b.denominator)
{
a.numerator*=b.denominator;
b.numerator*=a.denominator;
}

if((a.numerator*a.flag)<(b.numerator*b.flag))
rst=-1;
else if((a.numerator*a.flag)>(b.numerator*b.flag))
rst=1;

return rst;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-03
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
void compare(int a,int b,int c,int d);
cout<<"输入两个分数:"<<endl;
cin>>a>>b>>c>>d;
compare(a,b,c,d);
return 0;
}
void compare(int a,int b,int c,int d)
{
if(b==d)
{
if(a>c)
cout<<a<<'/'<<b<<'>'<<c<<'/'<<d<<endl;
else if(a==c)
cout<<a<<'/'<<b<<'='<<c<<'/'<<d<<endl;
else
cout<<a<<'/'<<b<<'<'<<c<<'/'<<d<<endl;
}
else
{
if(a*d>c*b)
cout<<a<<'/'<<b<<'>'<<c<<'/'<<d<<endl;
else if(a*d==b*c)
cout<<a<<'/'<<b<<'='<<c<<'/'<<d<<endl;
else
cout<<a<<'/'<<b<<'<'<<c<<'/'<<d<<endl;
}
}
第2个回答  2020-05-31
#include<bits/stdc++.h>
using namespace std;
long long FLCM(long long x,long long y){
long long _x=x,_y=y,r;
while(_y){
r=_x%_y;
_x=_y;
_y=r;
}
return x*y/_x;
}
long long CP(int choose,long long a,long long b,long long c,long long d){
long long LCM=FLCM(b,d);
long long ar[4]={LCM/t2*t1,LCM,LCM/t4*t3,LCM};
return ar[choose-1];
}
char FRS(long long a,long long b,long long c,long long d){
if(CP(1,a,b,c,d)>CP(3,a,b,c,d))
return '>';
else if(CP(1,a,b,c,d)<CP(3,a,b,c,d))
return '<';
else
return '=';
}
int main(){
int a,b,c,d;
printf("请输入两个分数,输入格式:分子/分母 分子/分母\n");
scanf("%i/%i %i/%i",&a,&b,&c,&d);
printf("%i/%i%c%i/%i",a,b,bdx(a,b,c,d),c,d);
return 0;
}

编写c++程序实现比较两个分数大小的功能。要求:调用函数先比较两个数...
} 至于通分算法,就是求两个分母b1和b2的最小公倍数,然后通分,可以参考http:\/\/zhidao.baidu.com\/question\/379115589.html

编写c++程序实现比较两个分数大小的功能。要求:调用函数先比较两个数...
fraction a,b;cout<<"请输入分数a的分母:";cin>>a.denominator;cout<<"请输入分数a的分子:";cin>>a.numerator;cout<<"请输入分数a的符号(1或者-1):";cin>>a.flag;cout<<"请输入分数b的分母:";cin>>b.denominator;cout<<"请输入分数b的分子:";cin>>b.numerator;cout<<"请输入...

c++编程判断两个分数是否相等
1、思路:求分子分母最大公约数,然后约分,然后就可以判断是否相等了。2、思路:求两个分数分母的最小公倍数,然后通分,然后把分子相加就行了。

用C++编程建立分数类,实现分数加、减、乘、除、求倒等。
{ \/\/返回两个分数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(Fran...

C++程序—分数的加减乘除
void fraction::input()\/\/输入函数类外实现 { cout<<"请输入复数的分子和分母:";cin>>fz>>fm;} void fraction::output()\/\/输出函数类外实现 { int c;c=fn(fz,fm);fz\/=c;fm\/=c;cout<<"( "<<fz<<"\/"<<fm<<" )"<<endl;} int fn(int a,int b)\/\/求分子分母的公约数 ...

【C++】用结构体类型表示一个分数,定义一个函数实现两个分数的加法运算...
int x_d,x_n,y_d,y_n; \/\/x、y两分数的分母和分子 fraction z; \/\/定义得数储存属性 int z_d,z_n; \/\/定义得数的分母和分子 x_d=x.denominator; \/\/取得分数x、y的分母和分子 x_n=x.numerator;y_d=y.denominator;y_n=y.numerator;if(x_d==0||y_d==0) { ...

分数的四则运算,面向对象的C++程序设计,求代码
delta -= (int)delta;} while(delta > threshold);_numerator *= (int)(frac*i);_denominator = i;}\/\/ 取得分子分母int GetNumer() const { return _numerator; };int GetDenoMina() const { return _denominator; };\/\/ 复制Fraction* Copy() const{Fraction* frac = new Fraction;frac...

[求助]帮忙用C++编写一个分数计算器程序 - C \/ C++ -
float c){ this->zz=c;return 0;} float getxx(float a){ return a;} float getyy(float b){ return b;} float getzz(float c){ return c;} void Add(){ float a,b,c;cout << "请输入要相加的两个数:"<<endl;cin>>a>>b;c=a b;cout << "c="<<c<<endl;} void ...

在C++中:从键盘输入一个分数的分子和分母,输出它的小数形式(精确到小 ...
是指显示的位数吗?可以用标准库的setprecision来控制显示输出的位数。它在<iomanip>中定义,隶属于std名字空间。使用它时要加using namespace std; 或using std::setprecision;。例如cout << setprecision(20) << result << endl;

用c++编写一个给分数约分的程序
\/*最简单的方法就是,分子和分母如果可以同除一个数,那么就约去这个数 直到这个除数大于分子或分母,那么这个分数就是最简的了*\/ int main(){ int n,m,max;cout<<"输入分子:"<<endl;cin>>n;cout<<"输入分母:"<<endl;cin>>m;for(int i=2;n>=i;i++)if(n%i==0 && m%i==0){...

相似回答