BÀI TẬP VỀ PHÂN SỐ
#include <bits/stdc++.h>;
using namespace std;
long long ucln(long x, long y)
{
if(y==0) return x;
return ucln(y,x%y);
}
long long bcnn(long x, long y)
{
long long tich=x*y;
if(y==0) return x;
return tich/ucln(x,y);
}
//CAC BAI TOAN VE PHAN SO
void nhap(int&x, int&y)
{
cin>>x>>y;
}
void xuat(int x, int y)
{
cout<<x<<"/"<<y;
}
//Rút gọn phân số
void rutgon(int x, int y)
{
int m=x/ucln(x,y);
int n=y/ucln(x,y);
cout<<m<<"/"<<n;
}
//Kiểm tra có phải phân số tối giản không?
bool toigian(int x, int y)
{
if(ucln(x,y)==1) return true;
else return false;
}
//Viết phân số về dạng hỗn số
void honso(int x, int y)
{
int m=x/y, n=abs(x)%abs(y);
if(abs(x)>abs(y)) cout<<m<<" "<<n<<"/"<<y;
else cout<<x<<"/"<<y;
}
//quy đồng phân số
void quydong(int x,int y, int z,int t)
{
x=x*bcnn(y,t)/y; z=z*bcnn(y,t)/t;
cout<<endl<<x<<"/"<<bcnn(y,t)<<endl;
cout<<z<<"/"<<bcnn(y,t)<<endl;
}
//Cộng hai phân số.
void cong(int x,int y, int z,int t )
{
x=x*bcnn(y,t)/y; z=z*bcnn(y,t)/t;
rutgon(x+z,bcnn(y,t)); cout<<endl;
}
//Trừ hai phân số
void truphanso(int x,int y, int z,int t )
{
x=x*bcnn(y,t)/y; z=z*bcnn(y,t)/t;
rutgon(x-z,bcnn(y,t)); cout<<endl;
}
//Nhân hai phân số.
void nhan(int x,int y, int z,int t )
{
x=x*z; y=y*t;
rutgon(x,y); cout<<endl;
}
//Chia hai phân số.
void chia(int x,int y, int z,int t )
{
x=x*t; y=y*z;
rutgon(x,y); cout<<endl;
}
//Kiểm tra phân số âm, dương
bool psa(int x, int y)
{
if((x>0&&y>0)||(x<0&&y<0)) return true;
else return false;
}
//So sánh 2 phân số: hàm trả về 1 trong 3 giá trị: 0,-1,1
void sosanh(int x, int y, int z, int t)
{
x=x*bcnn(y,t)/y; z=z*bcnn(y,t)/t;
if(x==z) cout<<"0";
else if(x>z) cout<<"1"; else cout<<"-1";
}
int main()
{
//freopen("toigian.inp","r",stdin); //freopen("toigian.out","w",stdout);
int a,b,c,d;
nhap(a,b); xuat(a,b); cout<<endl; nhap(c,d); xuat(c,d); cout<<endl;
cout<<ucln(a,b)<<endl; cout<<bcnn(a,b)<<endl;
rutgon(a,b); honso(a,b); quydong(a,b,c,d); cong(a,b,c,d); truphanso(a,b,c,d);
nhan(a,b,c,d); chia(a,b,c,d);
return 0;

Preview text:

BÀI TẬP VỀ PHÂN SỐ #include ; using namespace std; long long ucln(long x, long y) { if(y==0) return x; return ucln(y,x%y); } long long bcnn(long x, long y) { long long tich=x*y; if(y==0) return x; return tich/ucln(x,y); } //CAC BAI TOAN VE PHAN SO
void nhap(int&x, int&y) { cin>>x>>y; } void xuat(int x, int y) { cout<} //Rút gọn phân số void rutgon(int x, int y) { int m=x/ucln(x,y); int n=y/ucln(x,y); cout<}
//Kiểm tra có phải phân số tối giản không? bool toigian(int x, int y) { if(ucln(x,y)==1) return true; else return false; }
//Viết phân số về dạng hỗn số void honso(int x, int y) { int m=x/y, n=abs(x)%abs(y);
if(abs(x)>abs(y)) cout< else cout<} //quy đồng phân số
void quydong(int x,int y, int z,int t) {
x=x*bcnn(y,t)/y; z=z*bcnn(y,t)/t; cout< cout<} //Cộng hai phân số.
void cong(int x,int y, int z,int t ) {
x=x*bcnn(y,t)/y; z=z*bcnn(y,t)/t;
rutgon(x+z,bcnn(y,t)); cout<} //Trừ hai phân số
void truphanso(int x,int y, int z,int t ) {
x=x*bcnn(y,t)/y; z=z*bcnn(y,t)/t;
rutgon(x-z,bcnn(y,t)); cout<} //Nhân hai phân số.
void nhan(int x,int y, int z,int t ) { x=x*z; y=y*t; rutgon(x,y); cout<} //Chia hai phân số.
void chia(int x,int y, int z,int t ) { x=x*t; y=y*z; rutgon(x,y); cout<}
//Kiểm tra phân số âm, dương bool psa(int x, int y) {
if((x>0&&y>0)||(x<0&&y<0)) return true; else return false; }
//So sánh 2 phân số: hàm trả về 1 trong 3 giá trị: 0,-1,1
void sosanh(int x, int y, int z, int t) {
x=x*bcnn(y,t)/y; z=z*bcnn(y,t)/t; if(x==z) cout<<"0";
else if(x>z) cout<<"1"; else cout<<"-1"; } int main() {
//freopen("toigian.inp","r",stdin); //freopen("toigian.out","w",stdout); int a,b,c,d;
nhap(a,b); xuat(a,b); cout< cout< rutgon(a,b); honso(a,b); quydong(a,b,c,d); cong(a,b,c,d); truphanso(a,b,c,d); nhan(a,b,c,d); chia(a,b,c,d); return 0;