Định nghĩa kiểu dữ liệu nhiều phân số . Thực hiện nhập, xuất , rút gọn, tổng, so sánh, sắp xếp tăng dần, tìm phân số lớn nhất của nhiều phân số

#include<stdio.h>
#include<math.h>

struct ttphanso
{
int tu;
int mau;
};
typedef struct ttphanso PS;
//Nhap ps
void Nhapps(PS &x)
{

printf (“\tNhap tu so: “);
scanf (“%d”, &x.tu);
do{
printf (“\tNhap mau so: “);
scanf (“%d”, &x.mau);
if (x.mau==0)
printf(“\tNhap sai, nhap lai!: “);
}while(x.mau==0);
if(x.mau<0)
{
x.tu=-x.tu;
x.mau=-x.mau;
}
}
//Xuat ps
void Xuatps(PS x)
{
printf(“\t %d/%d”,x.tu,x.mau);
}
//UCLN
int UCLN(int a, int b)
{
a=abs(a); b=abs(b);
while( a*b!= 0)
{
if(a>b) a=a%b;
else b=b%a;
}
return a+b;
}
//Rut gon ps
void Rutgonps(PS &x)
{
if(x.tu==0) return;
int c=UCLN(x.tu,x.mau);
x.tu=x.tu/c;
x.mau=x.mau/c;
}
//Cong 2 ps
PS cong2ps(PS x, PS y)
{
PS tong;
tong.tu=x.tu*y.mau+y.tu*x.mau;
tong.mau=x.mau*y.mau;
Rutgonps(tong);
return tong;
}
//So sanh 2 ps
int SoSanh (PS x, PS y)
{
return x.tu*y.mau-y.tu*x.mau;
}
//Nhap mang ps
void Mangps(PS c[],int n)
{
for (int i=0;i<n;i++)
{
printf (“Nhap phan so tai vi tri %d: \n”, i+1);
Nhapps(c[i]);
}
}
//Xuat mang ps
void Xuatmangps( PS c[], int n)
{
for (int i=0;i<n; i++)
{
Xuatps(c[i]);
printf(” “);
}
}
//Tong day ps
PS tongps(PS c[], int n)
{
PS tongps=c[0];
for (int i=1;i<n;i++)
tongps=cong2ps(tongps ,c[i]);
Rutgonps(tongps);
return tongps;
}
//Tim ps max trong day
PS psmax(PS c[], int n)
{
PS max=c[0];
for (int i=1;i<n;i++)
if(SoSanh(max,c[i])<0) max=c[i];
return max;
}
//Sap xep day ps tang dan
void hoanvi(PS &a, PS &b)
{
PS tam=a;
a=b;
b=tam;
}
void Sapxeptang(PS c[], int n)
{
for (int i=0;i<n-1;i++)
for (int j=i+1;j<n;j++)
if (SoSanh(c[i],c[j]) >0 )
hoanvi(c[i],c[j]);
}
int main()
{
int chon,n;
PS c[100];
PS a,b;
printf (“\n\tSo luong phan so trong day n= “);
scanf (“%d”,&n);
Mangps(c,n);
printf (“\n\tDanh sach phan so vua nhap: \n”) ;
Xuatmangps(c,n);
PS tongday=tongps(c,n);
printf (“\n\tTong cac phan so trong day: %d/%d\n”, tongday.tu, tongday.mau);

PS max= psmax(c,n);
printf (“\n\tPhan so lon nhat trong day la: %d/%d\n”, max.tu, max.mau);
Sapxeptang(c,n);
printf (“\n\tMang sau khi sap xep tang dan:\n “);
Xuatmangps(c,n);

return 0;
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Hotline: 0989.13.58.13