Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2015
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. /****************************************************************************************
  2.  * Viet chuong trinh
  3.  *   - Khai bao cau truc phan so gom tu so va mau so.
  4.  *   - Khai bao danh sach (Mang ) phan so de luu tru nhieu phan so
  5.  *   - Viet ham tinh tong cua mot danh sach cac phan so, ket qua tra ve cua ham la 1 phan so.
  6.  *   - Viet ham chuan hoa 1 phan so.Vi du: 2/4 duoc chuan hoa thanh 1.2.
  7.  *   - Ham xuat cac danh sach phan so ra man hinh.
  8.  * Viet ham main cho phep nguoi dung:
  9.  *   - Nhap vao mot danh cac phan so.
  10.  *   - Chuan hoa cac phan so.
  11.  *   - Tinh tong cac phan so da duoc chuan hoa.
  12.  *   - Xuat cac phan so truoc khi chuan hoa va sau khi chuan hoa.
  13. *****************************************************************************************/
  14. #include<stdio.h>
  15. #include<math.h>
  16.  
  17. typedef struct {
  18.     int tu;
  19.     int mau;
  20. } PhanSo;
  21.  
  22. PhanSo PS1,PS2;
  23.  
  24. void Nhap(PhanSo Ps[], int n) {
  25.     int i;
  26.     for(i = 0; i < n; ++i) {
  27.         printf ("\nNhap vao tu so thu %d: ", i+1);
  28.         scanf ("%d", &Ps[i].tu);
  29.         printf ("\nNhap vao mau so thu %d: ", i+1);
  30.         scanf ("%d%*c", &Ps[i].mau);
  31.     }
  32. }//===>Nhap
  33. void Xuat(PhanSo Ps[], int n) {
  34.     int i;
  35.     for(i = 0; i < n; ++i)
  36.         printf("   %d/%d   ", Ps[i].tu, Ps[i].mau);
  37. }//===>Xuat
  38. float Tong(PhanSo Ps[], int n)
  39. {
  40.     PhanSo tam = Ps[0];
  41.     int i;
  42.     for(i = 1; i < n; ++i) {
  43.         tam.tu = tam.tu * Ps[i].mau + Ps[i].tu * tam.mau;
  44.         tam.mau = tam.mau * Ps[i].mau;
  45.     }
  46.     return tam.tu / float (tam.mau);
  47. }//===>Tong
  48.  
  49. int UCLN(int a, int b) {
  50.     a = (a < 0 ? -a : a);
  51.     b = (b < 0 ? -b : b);
  52.     while (a && b) {
  53.         if (a > b) a %= b;
  54.         else b %= a;
  55.     }
  56.     return a + b;
  57. }//===>UCLN
  58.  
  59. void RutGon (PhanSo Ps[], int n) {
  60.     int tu, mau, i, uc;
  61.     for(i = 0; i < n; ++i) {
  62.         uc = UCLN(Ps[i].tu, Ps[i].mau);
  63.         Ps[i].tu /= uc;
  64.         Ps[i].mau /= uc;
  65.     }
  66. }//===>RutGon
  67.  
  68. void XuatMang(PhanSo Ps[], int n)
  69. {
  70.     int i;
  71.     RutGon(Ps, n); 
  72.     for (i = 0; i < n; ++i)
  73.         printf("   %d/%d    ", Ps[i].tu, Ps[i].mau);
  74. }//===>XuatMang
  75.  
  76. int main (void) {
  77.     int n;
  78.     PhanSo Ps[20];
  79.  
  80.     printf ("Nhap vao so luong phan so n: ");
  81.     scanf ("%d",&n);
  82.  
  83.     Nhap (Ps, n);
  84.     printf ("\nPhan so vua nhap la:\n");
  85.     Xuat (Ps, n);
  86.    
  87.     printf ("\nPhan so sau khi duoc rut gon:\n");
  88.     XuatMang(Ps, n);
  89.    
  90.     printf ("\nTong cac phan so la: %f", Tong(Ps, n));
  91.  
  92.     getchar ();
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement