Tổng hợp các bài toán về phân số trong ngôn ngữ C

1. Hàm nhập mảng, xuất mảng phân số

struct phanso{
int tu;
int mau;
};void nhapmangps(ps a[], int n){
for(int i=0;i<n;i++)
{
printf(“Nhap phan so a[%d]= “,i);
scanf(“%d%d”,&a[i].tu,&a[i].mau);
}
}
void xuatmangps(ps a[], int n){
for(int i=0;i<n;i++)
printf(“\n%d/%d”,a[i].tu,a[i].mau);
}

2. Hàm đếm mảng có bao nhiêu phân số nhỏ hơn 1

int dem(ps a[], int n){
int d=0;
for(int i=0;i<n;i++)
if(a[i].tu < a[i].mau)
d=d+1;
return d;
}

3. Hàm tính tổng các phân số trong mảng

#include <algorithm>

ps rutgon(ps &m){
int ucln=std::__gcd(m.tu,m.mau);
m.tu=m.tu/ucln;
m.mau=m.mau/ucln;
return m;
}
ps tongphanso(ps &c, ps &d){
ps s;
s.tu=c.tu * d.mau + d.tu * c.mau;
s.mau=c.mau * d.mau;
rutgon(s);
return s;
}
ps tongmangphanso(ps a[], int n){
ps s;
s.tu=0;
s.mau=1;
for(int i=0; i<n; i++)
s=tongphanso(a[i],s);
return s;
}
void xuatphanso(ps &e){
printf(“%d/%d”,e.tu,e.mau);
}

4. Hàm kiểm tra số lớn nhất và nhỏ nhất trong mảng phấn số

ps lonnhat(ps b, ps c){
ps max;
if(b.MS == c.MS){
if(b.TS > c.TS)
max=b;
else
max=c;
}
if(b.TS == c.TS){
if(b.MS > c.MS)
max=c;
else
max=b;
}
if (b.TS != c.TS && b.MS != c.MS){
if(b.TS * c.MS > c.TS * b.MS)
max=b;
else
max=c;
}
return max;
}
ps lonnhatmangphanso(ps a[], int n){
ps max=a[0];
for(int i=1; i<n;i++)
max=lonnhat(a[i],max);
return max;
}
ps nhonhat(ps b, ps c){
ps min;
if(b.MS == c.MS){
if(b.TS > c.TS)
min=c;
else
min=b;
}
if(b.TS == c.TS){
if(b.MS > c.MS)
min=b;
else
min=c;
}
if (b.TS != c.TS && b.MS != c.MS){
if(b.TS * c.MS > c.TS * b.MS)
min=c;
else
min=b;
}
return min;
}
ps nhonhatmangphanso(ps a[], int n){
ps min=a[0];
for(int i=1; i<n;i++)
min=nhonhat(a[i],min);
return min;
}