Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Xử lý so sánh, tối giản và sắp xếp phân số trên C#?

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    5

    Unhappy Xử lý so sánh, tối giản và sắp xếp phân số trên C#?

    Hi all !
    Mình có 1 bai tap ve phan so
    1/xay dung lop phan so
    2/xay dung toan tu ( + , - ,*,/ )

    toan tu so sanh ==, != , >, <, >= ,<=
    3/ toi gian phan so
    4/ nhập vao mang cac phan so ( nhap vao phan so roi sap xep phan so do), sap xep mang theo thu tu tang dần, xuat ra màn hình

    mình dang bí đoạn so sánh, tối giản va sap xep mảng phân số

    Giúp mình phân tích hoac gợi ý với, mình potay o`y

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4.  
    5. namespace ConsoleApplication1
    6. {
    7.     class Program
    8.     {
    9.         static void Main(string[] args)
    10.         {
    11.             PhanSo phanSo1 = new PhanSo(3, 2);
    12.             PhanSo phanSo2 = new PhanSo();
    13.  
    14.             phanSo2.TuSo = 5;
    15.             phanSo2.MauSo = 2;
    16.             PhanSo phanSo3 = new PhanSo();
    17.             phanSo3 = phanSo1.Cong(phanSo2);
    18.  
    19.         }
    20.  
    21.  
    22.  
    23.         class PhanSo
    24.         {
    25.             private int m_TuSo;
    26.             private int m_MauSo;
    27.  
    28.             public int TuSo
    29.             {
    30.                 get { return m_TuSo; }
    31.                 set { m_TuSo = value; }
    32.             }
    33.             public int MauSo
    34.             {
    35.                 get { return m_MauSo; }
    36.                 set
    37.                 {
    38.                     if (kiem_tra_mau_so(value))
    39.                         m_MauSo = value;
    40.                 }
    41.             }
    42.  
    43.             public PhanSo()
    44.             {
    45.                 m_TuSo = 1;
    46.                 m_MauSo = 1;
    47.             }
    48.             public PhanSo(int tuSo, int mauSo)
    49.             {
    50.                 this.m_TuSo = tuSo;
    51.                 if (kiem_tra_mau_so(mauSo))
    52.                     this.m_MauSo = mauSo;
    53.             }
    54.  
    55.             private bool kiem_tra_mau_so(int mauSo)
    56.             {
    57.                 return mauSo != 0;
    58.             }
    59.  
    60.             public PhanSo Cong(PhanSo phanSo)
    61.            {
    62.             PhanSo phanSoKetQua = new PhanSo();
    63.             phanSoKetQua.TuSo = m_TuSo * phanSo.MauSo + m_MauSo * phanSo.TuSo;
    64.             phanSoKetQua.MauSo = m_MauSo * phanSo.MauSo;
    65.             return phanSoKetQua;
    66.             }
    67.             public static PhanSo operator +(PhanSo phanSo1, PhanSo phanSo2)
    68.             {
    69.                 PhanSo phansoKetQua = new PhanSo();
    70.                 phansoKetQua.TuSo = phanSo1.TuSo * phanSo2.MauSo + phanSo2.TuSo * phanSo1.MauSo;
    71.                 phansoKetQua.MauSo = phanSo1.MauSo * phanSo2.MauSo;
    72.                 return phansoKetQua;
    73.             }
    74.  
    75.         }
    76.     }
    77. }

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Để tối giản phân số thì cần tìm ước chung lớn nhất của tử và mẫu.
    PHP Code:
    int UCLN(int m,int n)//ham tu do de tim uoc chung lon nhat
    {
        if(
    m<n)
        {    
            if(
    m==0)
                return 
    n;
            return (
    n%m,m);
        }
        if(
    n==0)
            return 
    m;
        return (
    m%n,n);

    Bây giờ thì việc tối giản,so sánh rất dễ mà
    Ví dụ,tối giản :
    PHP Code:
    void rutgon()
    {
        
    int uc=UCLN(tuso,mauso);
        
    tuso/=uc;
        
    mauso/=uc;

    Cánh Chym ứ mỏi

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    2

    Đã được chỉnh sửa lần cuối bởi contimdaikho321 : 17-04-2009 lúc 07:42 AM.

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    149

    chuối cái hàm rút gon gì mà kì thế đơn giản như này thui nha bạn

    Code:
        
        public int UCLN(int a, int b)
            {
                     if (a > b) a = a - b;
                        b = b - a;
             }
                return a;
    áp dụng cho bài phân số chặt chẽ hơn nè:
    Code:
           
     public int UCLN(int a, int b)
            {
                a = Math.Abs(tuso);
                b = Math.Abs(mauso);
                while (a != b && b != 0 && a != 0)
                {
                    if (a > b)
                        a = a - b;
                    else
                        b = b - a;
                }
                return a;
    và hàm rút gọn trả về một phân số lun nè

    Code:
            public phanso RutGonPhanSo()
            {
                phanso rutgon = new phanso();
                int uoc = UCLN(tuso, mauso);
                if (uoc != 0)
                {
                    rutgon.tuso = tuso / uoc;
                    rutgon.mauso = mauso / uoc;
                }
                else
                {
                    rutgon.tuso = tuso;
                    rutgon.mauso = mauso;
    
                }
                return rutgon;
            }

  5. #5
    Ngày gia nhập
    03 2011
    Bài viết
    4

    Wink Mảng Phân Số

    Class PhanSo
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DuAnPhanSo
    {
        class PhanSo
        {
            private int tu;
            public int Tu
            {
                get { return tu; }
                set { tu = value; }
            }
            private int mau;
            public int Mau
            {
                get { return mau; }
                set { mau = value; }
            }
    
            public PhanSo(PhanSo p)
            {
                tu = p.Mau;
                mau = p.Tu;
            }
            public PhanSo() { }
            public PhanSo(int t, int m)
            {
                tu = t;
                mau = m;
            }
            public void Xuat()
            {
                Console.Write("{0}/{1}\t", tu, mau);
            }
            public int CopareTo(PhanSo a)
            {
                int x = this.Tu * a.Mau;
                int y = this.Mau * a.Tu;
                return -x.CompareTo(y);
            }
            public int CopareToM(PhanSo a)
            {
                int x = this.Mau;
                int y = a.Mau;
                return x.CopareToM(y);
            }
        }
    }
    Class MangPhanSo
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DuAnPhanSo
    {
        class MangPhanSo
        {
            PhanSo []a=new PhanSo [50];
            public int len = 0;
            public void Them(PhanSo p)
            {
                a[len++] = p;
            }
            public void Nhap()
            {
                Console.Write("Nhap so phan so can nhap : ");
                int n = int.Parse(Console.ReadLine());
                Random r = new Random();
                for (int i = 0; i < n; i++)
                {
                    int t = r.Next(1,5);
                    int m = r.Next(1,5);
                    PhanSo p = new PhanSo(t,m);
                    Them(p);
                }
            }
            public void Xuat()
            {
                for (int i = 0; i < len; i++)
                    a[i].Xuat();
            }
            public PhanSo TimPhaSoMax()
            {
                PhanSo max = a[0];
                for (int i = 0; i < len; i++)
                    if (max.CopareTo(a[i]) == 1)
                        max = a[i];
                return max;
            }
            public int TimMauMax()
            {
                int max = a[0].Mau;
                for (int i = 0; i < len; i++)
                {
                    if (max < a[i].Mau)
                        max = a[i].Mau;
                }
                return max;
            }
            public int[] TimCacViTriMauMax(ref int lenm)
            {
                int[] kq = new int[50];
                lenm = 0;
                int max = TimMauMax();
                for (int i = 0; i < len; i++)
                {
                    if(a[i].Mau==max)
                        kq[lenm++] = i;
                }
                return kq;
            }
            public void SapXep()
            {
                for (int i = 0; i < len;i++ )
                {
                    for (int j = i; j < len;j++ )
                    {
                        if (a[i].CopareTo(a[j]) == 1)
                        {
                            PhanSo tam;
                            tam = a[i];
                            a[i] = a[j];
                            a[j] = tam;
                        }                    
                    }
                }
            }
            public PhanSo TimPhaSoMaxMau()
            {
                PhanSo max = a[0];
                for (int i = 0; i < len; i++)
                    if (max.CopareToM(a[i]) == 1)
                        max = a[i];
                return max;
            }
            
        }
    }
    Hàm Main
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DuAnPhanSo
    {
        class Program
        {
            static void Main(string[] args)
            {
                MangPhanSo a = new MangPhanSo();
                a.Nhap();
                a.Xuat();
                Console.Write("\n");
    
                //Tim phan so lon nhat
                Console.Write("\n\nPhan so lon nhat la : ");
                a.TimPhaSoMax().Xuat();
    
                //Tim vi tri co mau lon nhat 
                Console.Write("\n\nVi tri co mau lon nhat : ");
                int lenkq = 0;
                int[] kq = a.TimCacViTriMauMax(ref lenkq);
                for (int i = 0; i < lenkq; i++)
                    Console.Write("{0}\t", kq[i]);
                //sap xep phan so theo chieu tang
                Console.Write("\n\nPhan so sau khi sap xep la : ");
                a.SapXep();
                a.Xuat();
                
                
                Console.ReadLine();
            }
        }
    }
    các bác giúp em xuất ra Phân số lớn nhất ở mẫu giùm nhé
    thank

  6. #6
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    703

    Mặc định Xử lý so sánh, tối giản và sắp xếp phân số trên C#?

    Bạn đặt lại câu hỏi cho rõ ràng đi.
    Có phải là: "Xuất ra phân số có mẫu lớn nhất?"

  7. #7
    Ngày gia nhập
    05 2011
    Bài viết
    26

    Trích dẫn Nguyên bản được gửi bởi vanthuanitdlu Xem bài viết
    Class PhanSo
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DuAnPhanSo
    {
        class PhanSo
        {
            private int tu;
            public int Tu
            {
                get { return tu; }
                set { tu = value; }
            }
            private int mau;
            public int Mau
            {
                get { return mau; }
                set { mau = value; }
            }
    
            public PhanSo(PhanSo p)
            {
                tu = p.Mau;
                mau = p.Tu;
            }
            public PhanSo() { }
            public PhanSo(int t, int m)
            {
                tu = t;
                mau = m;
            }
            public void Xuat()
            {
                Console.Write("{0}/{1}\t", tu, mau);
            }
            public int CopareTo(PhanSo a)
            {
                int x = this.Tu * a.Mau;
                int y = this.Mau * a.Tu;
                return -x.CompareTo(y);
            }
            public int CopareToM(PhanSo a)
            {
                int x = this.Mau;
                int y = a.Mau;
                return x.CopareToM(y);
            }
        }
    }
    Class MangPhanSo
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DuAnPhanSo
    {
        class MangPhanSo
        {
            PhanSo []a=new PhanSo [50];
            public int len = 0;
            public void Them(PhanSo p)
            {
                a[len++] = p;
            }
            public void Nhap()
            {
                Console.Write("Nhap so phan so can nhap : ");
                int n = int.Parse(Console.ReadLine());
                Random r = new Random();
                for (int i = 0; i < n; i++)
                {
                    int t = r.Next(1,5);
                    int m = r.Next(1,5);
                    PhanSo p = new PhanSo(t,m);
                    Them(p);
                }
            }
            public void Xuat()
            {
                for (int i = 0; i < len; i++)
                    a[i].Xuat();
            }
            public PhanSo TimPhaSoMax()
            {
                PhanSo max = a[0];
                for (int i = 0; i < len; i++)
                    if (max.CopareTo(a[i]) == 1)
                        max = a[i];
                return max;
            }
            public int TimMauMax()
            {
                int max = a[0].Mau;
                for (int i = 0; i < len; i++)
                {
                    if (max < a[i].Mau)
                        max = a[i].Mau;
                }
                return max;
            }
            public int[] TimCacViTriMauMax(ref int lenm)
            {
                int[] kq = new int[50];
                lenm = 0;
                int max = TimMauMax();
                for (int i = 0; i < len; i++)
                {
                    if(a[i].Mau==max)
                        kq[lenm++] = i;
                }
                return kq;
            }
            public void SapXep()
            {
                for (int i = 0; i < len;i++ )
                {
                    for (int j = i; j < len;j++ )
                    {
                        if (a[i].CopareTo(a[j]) == 1)
                        {
                            PhanSo tam;
                            tam = a[i];
                            a[i] = a[j];
                            a[j] = tam;
                        }                    
                    }
                }
            }
            public PhanSo TimPhaSoMaxMau()
            {
                PhanSo max = a[0];
                for (int i = 0; i < len; i++)
                    if (max.CopareToM(a[i]) == 1)
                        max = a[i];
                return max;
            }
            
        }
    }
    Hàm Main
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DuAnPhanSo
    {
        class Program
        {
            static void Main(string[] args)
            {
                MangPhanSo a = new MangPhanSo();
                a.Nhap();
                a.Xuat();
                Console.Write("\n");
    
                //Tim phan so lon nhat
                Console.Write("\n\nPhan so lon nhat la : ");
                a.TimPhaSoMax().Xuat();
    
                //Tim vi tri co mau lon nhat 
                Console.Write("\n\nVi tri co mau lon nhat : ");
                int lenkq = 0;
                int[] kq = a.TimCacViTriMauMax(ref lenkq);
                for (int i = 0; i < lenkq; i++)
                    Console.Write("{0}\t", kq[i]);
                //sap xep phan so theo chieu tang
                Console.Write("\n\nPhan so sau khi sap xep la : ");
                a.SapXep();
                a.Xuat();
                
                
                Console.ReadLine();
            }
        }
    }
    Cái này là nhập theo cách ngẫu nhiên (random)! zậy có bạn nào cho mình hỏi nếu mình muốn người dùng nhập vào từng phân số cho mảng thì phải làm sao? cụ thể trong class MangPhanSo và trong Main viết thế nào?? Mong các pro giúp đở (mình còn gà quá) cám ơn!

  8. #8
    Ngày gia nhập
    02 2010
    Bài viết
    73

    Trích dẫn Nguyên bản được gửi bởi huycomputerhuy Xem bài viết
    Cái này là nhập theo cách ngẫu nhiên (random)! zậy có bạn nào cho mình hỏi nếu mình muốn người dùng nhập vào từng phân số cho mảng thì phải làm sao? cụ thể trong class MangPhanSo và trong Main viết thế nào?? Mong các pro giúp đở (mình còn gà quá) cám ơn!
    Cách tốt nhất là dùng Property( cái này là 1 thành phần khá căn bản trong C# bắt buộc phải biết), bạn tự kiếm tài liệu nhé

  9. #9
    Ngày gia nhập
    05 2012
    Bài viết
    1

    Mặc định cho e hoi ham public int CopareTo(PhanSo a) co chuc nang gi?

    chuc nang cua ham public int CopareTo(PhanSo a) ?

  10. #10
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    703

    Chẳng có chức năng gì cả, vì nó có đúng đâu.
    Visual C# Code:
    1.  public int CopareTo(PhanSo a)
    2.         {
    3.             int x = this.Tu * a.Mau;
    4.             int y = this.Mau * a.Tu;
    5.             return -x.CompareTo(y);
    6.         }
    Hàm CompareTo truyền vào là 1 phân số, thế mà trong câu lệnh return truyền y (có kiểu int) thì chạy sao được???

Các đề tài tương tự

  1. Bài tập C sắp xếp ma trận sao cho tăng dần trên cột và giảm dần trên dòng.
    Gửi bởi detective009 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 08-01-2011, 11:31 AM
  2. Lập trình Socket trên C++ có thể giao tiếp chương trình Java trên Server được ko các
    Gửi bởi jacobkruse trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 18-11-2010, 11:10 PM
  3. Xây dựng Từ Điển Anh-Việt đơn giản trên C#?
    Gửi bởi onelove88 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 06-08-2010, 02:58 AM
  4. Lập trình C Lập trình giao diện trên C thì cần sử dụng thư viện nào?
    Gửi bởi nasural trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 09-03-2010, 01:40 PM
  5. Giải quết vấn đề mã hóa và giải mả trên file
    Gửi bởi chanphat01001 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 04-12-2007, 09:42 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn