Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- struct phanSo
- {
- int tu;
- int mau;
- };
- void sapXepTangDan (phanSo A[], int n);
- void timPhanSoMin(phanSo A[], int n);
- void nhap1PhanSo(phanSo& x);
- void xuat1PhanSo(phanSo& p);
- void nhapNphanSo(phanSo A[], int& n);
- void xuatNphanSo(phanSo A[], int n);
- void timPhanSoMax(phanSo A[], int n);
- int tinhHieu2PhanSo(phanSo p1, phanSo p2);
- void tinhTich(phanSo A[], int n);
- int rutGon(phanSo& p);
- int USCLN(phanSo p);
- int xuLy(phanSo& p);
- void tinhTongNphanSo(phanSo A[], int n);
- void tinhTong1PhanSo(phanSo p2, phanSo& p);
- void main()
- {
- int n;
- phanSo A[100];
- nhapNphanSo(A, n);
- timPhanSoMax(A,n);
- timPhanSoMin (A,n);
- //tinhTich (A,n);
- tinhTongNphanSo(A, n);
- sapXepTangDan (A,n);
- }
- void sapXepTangDan (phanSo A[], int n)
- {
- struct phanSo temp;
- for (int i = 0; i < n-1; i++)
- {
- for (int j=i+1;j<n;j++)
- {
- if (tinhHieu2PhanSo(A[i], A[j]) == 0)
- {
- temp.mau=A[i].mau;
- temp.tu=A[i].tu;
- A[i].mau=A[j].mau;
- A[i].tu=A[j].tu;
- A[j].mau=temp.mau;
- A[j].tu=temp.tu;
- }
- }
- }
- printf ("Sap xep mang tang dan !\n");
- xuatNphanSo (A,n);
- }
- void timPhanSoMin(phanSo A[], int n)
- {
- int viTri = 0;
- for (int i = 0; i < n; i++)
- {
- if (tinhHieu2PhanSo(A[viTri], A[i]) == 0)
- {
- viTri = i;
- }
- }
- printf("Phan so nho nhat la : ");
- xuat1PhanSo(A[viTri]);
- }
- void tinhTongNphanSo(phanSo A[], int n)
- {
- phanSo tong = { 0,1 };
- for (int i = 0; i < n; i++)
- {
- tinhTong1PhanSo(A[i], tong);
- }
- printf("Tong cua cac phan so la : ");
- xuat1PhanSo (tong);
- }
- void tinhTong1PhanSo(phanSo p2, phanSo& p)
- {
- int nho = p.mau;
- p.mau = p.mau * p2.mau;
- p.tu = p.tu * p2.mau + p2.tu * nho;
- }
- int USCLN(phanSo p)
- {
- int a = p.tu;
- int b = p.mau;
- if (a == b)
- {
- return 0;
- }
- else
- {
- while (a != b)
- {
- if (a > b)
- {
- a = a - b;
- }
- else
- {
- b = b - a;
- }
- }
- }
- return a;
- };
- int xuLy(phanSo& p)
- {
- if (p.tu == 0)
- {
- return -2;
- }
- if ((p.tu < 0) && (p.mau < 0))
- {
- p.tu = abs(p.tu);
- p.mau = abs(p.mau);
- return 0;
- }
- else
- {
- if (p.tu < 0)
- {
- p.tu = abs(p.tu);
- return 1;
- }
- else
- {
- if (p.mau < 0)
- {
- p.mau = abs(p.mau);
- return 1;
- }
- }
- }
- return 0;
- };
- int rutGon(phanSo& p)
- {
- int kt = xuLy(p);
- if (kt == -2)
- {
- return -2;
- }
- int a = USCLN(p);
- if (a == 0)
- {
- if (kt == 1)
- {
- return -1;
- }
- else
- {
- return 0;
- }
- }
- else
- {
- if (kt == 0)
- {
- p.tu = p.tu / a;
- p.mau = p.mau / a;
- }
- else
- {
- p.tu = -p.tu / a;
- p.mau = p.mau / a;
- }
- }
- return 1;
- }
- void timPhanSoMax(phanSo A[], int n)
- {
- int viTri = 0;
- for (int i = 0; i < n; i++)
- {
- if (tinhHieu2PhanSo(A[viTri], A[i]) == 1)
- {
- viTri = i;
- }
- }
- printf("Phan so lon nhat la : ");
- xuat1PhanSo(A[viTri]);
- }
- void tinhTich(phanSo A[], int n)
- {
- phanSo tich;
- tich.tu = 1;
- tich.mau = 1;
- for (int i = 0; i < n; i++)
- {
- tich.tu = tich.tu * A[i].tu;
- tich.mau = tich.mau * A[i].mau;
- }
- printf("Tich cua cac phan so trong day la : ");
- xuat1PhanSo(tich);
- }
- int tinhHieu2PhanSo(phanSo p1, phanSo p2)
- {
- int mau = p1.mau * p2.mau;
- int tu = p1.tu * p2.mau - p2.tu * p1.mau;
- if (tu <= 0 && mau > 0)
- {
- return 1;
- }
- else
- {
- if (tu <= 0 && mau < 0)
- {
- return 0;
- }
- else
- {
- if (tu >= 0 && mau < 0)
- {
- return 1;
- }
- else
- {
- if (tu >= 0 && mau > 0)
- {
- return 0;
- }
- }
- }
- }
- }
- void xuatNphanSo(phanSo A[], int n)
- {
- for (int i = 0; i < n; i++)
- {
- xuat1PhanSo(A[i]);
- }
- }
- void nhapNphanSo(phanSo A[], int& n)
- {
- printf("Hay nhap n : ");
- scanf("%d", &n);
- for (int i = 0; i < n; i++)
- {
- nhap1PhanSo(A[i]);
- }
- }
- void nhap1PhanSo(phanSo& x)
- {
- printf("Nhap lan luot tu va mau cua 1 phan so :\n");
- do
- {
- scanf("%d%d", &x.tu, &x.mau);
- if (x.mau == 0)
- {
- printf("Phan so khong hop le hay nhap lai !\n");
- }
- } while (x.mau == 0);
- }
- void xuat1PhanSo(phanSo& p)
- {
- int kt = rutGon(p);
- if (kt == -2)
- {
- printf("0");
- }
- else
- {
- if (kt == 0)
- {
- printf("1 \n");
- }
- else
- {
- if (kt == -1)
- {
- printf("-1\n");
- }
- else
- {
- if (p.mau == 1)
- {
- printf("%d\n ", p.tu);
- }
- else
- {
- printf("%d/%d \n", p.tu, p.mau);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement