最近写了一个分数计算器,跟大家炫耀分享一下。
1.思路
1.分数乘法
数学老师:“两个分数相乘,用分字相乘的积做分子,分母相乘的积做分母。”
2.分数除法
数学老师:“两个分数相除,用一个分数乘另一个分数的倒数。”
注:能约分的要约成最简分数。
2.代码
1.头文件
#include<bits/stdc++.h>
using namespace std;
2.函数
1.辗转相除函数
int gcd(int n,int m){
while(n!=0){
int t=m%n;
m=n;
n=t;
}
return m;
}
2.分数结构体
struct node{
int up;
int down;
};
3.约分函数
int yf(){
node n;
cin>>n.up;
cin>>n.down;
int _gcd=gcd(n.up,n.down);
n.up/=_gcd;
n.down/=_gcd;
return n.up,n.down;
}
4.输出约分函数
void out_yf(){
node n;
cin>>n.up;
cout<<"_"<<endl;
cin>>n.down;
int _gcd=gcd(n.up,n.down);
n.up/=_gcd;
n.down/=_gcd;
cout<<n.up<<" "<<n.down<<endl;
system("pause");
return;
}
5.乘法函数
void cf(){
node n1,n2;
cin>>n1.up;
cout<<"_"<<endl;
cin>>n1.down;
cin>>n2.up;
cout<<"_"<<endl;
cin>>n2.down;
n1.up=n1.up*n2.up;
n1.down=n1.down*n2.down;
int _gcd=gcd(n1.up,n1.down);
n1.up/=_gcd;
n1.down/=_gcd;
system("cls");
if(n1.down==1){
cout<<n1.up;
system("cls");
return;
}
cout<<n1.up<<endl<<"_"<<endl<<n1.down<<endl;
system("pause");
return;
}
6.除法函数
void chuf(){
node n1,n2;
cin>>n1.up;
cout<<"_"<<endl;
cin>>n1.down;
cin>>n2.up;
cout<<"_"<<endl;
cin>>n2.down;
n1.up=n1.up*n2.down;
n1.down=n1.down*n2.up;
int _gcd=gcd(n1.up,n1.down);
n1.up/=_gcd;
n1.down/=_gcd;
system("cls");
if(n1.down==1){
cout<<n1.up;
system("cls");
return;
}
cout<<n1.up<<endl<<"_"<<endl<<n1.down<<endl;
system("pause");
return;
}
3.主函数
int main()
{
while(1){
cout<<" 分数计算器"<<endl;
cout<<" 0.退出"<<endl;
cout<<" 1.乘法"<<endl;
cout<<" 2.除法"<<endl;
cout<<" 3.约分"<<endl;
int n;
cin>>n;
system("cls");
if(n==0){
return 0;
}else if(n==1){
cf();
}else if(n==2){
chuf();
}else if(n==3){
out_yf();
}
system("cls");
}
return 0;
}