C++ xử lý phân số

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace bai_7

{

    class Phanso

    {

        int tu, mau;

        public Phanso() //ham khoi tao khong tham so

        {

            tu = 0;

            mau = 1;

        }

        public Phanso(int x) //khoi tao mot tham so

        {

            tu = x;

            mau = 1;

        }

        public Phanso(int t, int m) //khoi tao hai tham so

        {

            tu = t;

            mau = m;

        }

        public void XuatPhanSo() //Xuat phan so

        {

            Console.WriteLine("{0}/{1}", tu, mau);

        }

        public Phanso CongPS(Phanso ps10) //tong cua 2 phan so

        {

            int ts = tu*ps10.mau + mau*ps10.tu;

            int ms=mau*ps10.mau;

            Phanso ketqua = new Phanso(ts,ms);

            return(ketqua);

        }

        public Phanso TruPS(Phanso ps1)

        {

            int ts = tu * ps1.mau - mau * ps1.tu;

            int ms = mau * ps1.mau;

            Phanso ketqua = new Phanso(ts, ms);

            return (ketqua);

        }

        public Phanso NhanPS(Phanso ps1)

        {

            int ts = tu * ps1.tu;

            int ms = mau * ps1.mau;

            Phanso ketqua = new Phanso(ts, ms);

            return (ketqua);

        }

        public Phanso ChiaPS(Phanso ps1)

        {

            int ts = tu * ps1.mau;

            int ms = mau * ps1.tu;

            Phanso ketqua = new Phanso(ts, ms);

            return (ketqua);

        }

        public int UCLN ()

        {

            while (tu!=mau)

                if (tu>mau) tu=tu-mau;

                else mau=mau-tu;

            return (tu);

        }

        public Phanso RutGon()

        {

            int ts = tu;

            int ms = mau;

            while (tu != mau)

                if (tu > mau) tu = tu - mau;

                else mau = mau - tu;

            ts = ts / tu; ms = ms / tu;

            Phanso ketqua = new Phanso(ts, ms);

            return (ketqua);

        }     

    }

    class Program

    {

        static void Main(string[] args)

        {

            int chon, a, d, c;

            Phanso ps = new Phanso();

            Phanso ps1 = new Phanso(4,2);

            Phanso ps2 = new Phanso(1,1);

            Console.Write("Phan so thu nhat = "); ps1.XuatPhanSo();

            Console.Write("Phan so thu hai = "); ps2.XuatPhanSo();       

            do

            {              

                Console.WriteLine("******************************************************");

                Console.WriteLine("                         MENU");

                Console.WriteLine("   1. a.Tong");

                Console.WriteLine("   2. a.Hieu");

                Console.WriteLine("   3. b.Tich");

                Console.WriteLine("   4. b.Thuong");

                Console.WriteLine("   5. c.Cong phan so hien hanh voi mot so nguyen");

                Console.WriteLine("   6. d.Cong phan so hien hanh voi mot phan so khac");

                Console.WriteLine("   7. e.UCLN cua phan so va Rut gon phan so");

                Console.WriteLine("   8. Thoat");

                chon = Int32.Parse(Console.ReadLine());

                switch (chon)

                {

                    case 1:

                        {

                            ps = ps1.CongPS(ps2);

                            Console.Write("Tong cua hai phan so : ");

                            ps.RutGon();

                            ps.XuatPhanSo();

                            break;

                        }

                    case 2:

                        {

                            ps = ps1.TruPS(ps2);

                            Console.Write("Hieu cua hai phan so :");

                            ps.XuatPhanSo();

                            break;

                        }

                    case 3:

                        {

                            ps = ps1.NhanPS(ps2);

                            Console.Write("Hieu cua hai phan so :");

                            ps.XuatPhanSo();

                            break;

                        }

                    case 4:

                        {

                            ps = ps1.ChiaPS(ps2);

                            Console.Write("Hieu cua hai phan so :");

                            ps.XuatPhanSo();

                            break;

                        }

                    case 5:

                        {

                            Console.Write("Phan so hien hanh la: ");

                            ps1.XuatPhanSo();

                            Console.Write("Nhap vao so nguyen a = ");

                            a = Int32.Parse(Console.ReadLine());

                            Phanso b = new Phanso(a);

                            ps = ps1.CongPS(b);

                            Console.Write("Tong cua so phan so hien hanh va so nguyen a =  " + a + " la:  ");

                            ps.XuatPhanSo();

                            break;

                        }

                    case 6:

                        {

                            Console.Write("Phan so hien hanh la: ");

                            ps1.XuatPhanSo();

                            Console.WriteLine("Nhap mot phan so:");

                            Console.Write("Nhap vao tu so: "); d = Int32.Parse(Console.ReadLine());

                            Console.Write("Nhap vao mau so: "); c = Int32.Parse(Console.ReadLine());

                            Phanso psk = new Phanso(d,c);

                            ps = ps1.CongPS(psk);

                            Console.Write("Tong cua phan so hien hanh voi phan so " + d + "/" + c + " la:");

                            ps.XuatPhanSo();

                            break;

                        }

                    case 7:

                        {                                                      

                            Console.Write("Phan so can rut gon: ");

                            ps1.XuatPhanSo();

                            ps = ps1.RutGon();

                            Console.Write("UCLN cua tu va mau : {0}",ps1.UCLN());                          

                            Console.WriteLine();                         

                            Console.Write("Phan so sau khi rut gon: ");                                                    

                            ps.XuatPhanSo();

                            break;

                        }

                    case 8: goto ketthuc;                                      

                }

            }

            while (chon != 8);

            Console.ReadLine();

            ketthuc: ;

        }

    }

}