Cộng, trừ, nhân, chia 2 phân số tối giản....


Diễn đàn chia sẻ kiến thức, kinh nghiệm về IT và cuộc sống!
 
Trang ChínhGalleryTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng Nhập
Top posters
Sakura (1124)
 
hotboy (705)
 
Già Làng (373)
 
con_ca_nho90 (289)
 
that_true (154)
 
theanhkkt (143)
 
phamay (137)
 
lovelonelyman (134)
 
o0ovioletstaro0o (128)
 
stevenhung (122)
 
Âm - Dương lịch
Clock
Logo
11TH02 Pro!
Liên kết
Tin tức 60s
Tin công nghệ
Thời sự 24h
Game Moblie

Share | 
 

 Cộng, trừ, nhân, chia 2 phân số tối giản....

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Già Làng


avatar

Thú CƯng :
Nam Libra

Số bài viết : 373
Điểm : 2200708
Được cảm ơn : 53
Ngày sinh : 20/10/1987
Tham gia ngày : 16/03/2010
Tuổi : 31
Đến từ : Bình Dương
Ngề nghiệp : Sinh Viên
Chăm ngôn : Cơm Cha - Áo Mẹ!

Bài gửiTiêu đề: Cộng, trừ, nhân, chia 2 phân số tối giản....   16/10/2010, 02:19

Cộng, trừ, nhân, chia 2 phân số tối giản đây!!! Mại dô mại dô!!! Very Happy Very Happy Very Happy Very Happy
Code:
using System;
using System.Collections.Generic;
using System.Text;
namespace class_phan_so
{
    public class PHANSO
    {
        int tu;
        int mau;
        public PHANSO()
        {
            this.tu = 0;
            this.mau = 1;
        }
        public PHANSO(int ts, int ms)
        {
            this.tu = ts / UCLN(ts, ms);
            this.mau = ms / UCLN(ts, ms);
        }
        private int UCLN(int a, int b)
        {
            Math.Abs(a);
            Math.Abs(b);
            while (a != 0 && b != 0)
                if (a > b)
                    a -= b;
                else
                    b -= a;
            return a;


        }
        public void inPHANSO()
        {
            Console.Write("{0} / {1}", this.tu, this.mau);
        }
     
        public PHANSO CongPS(PHANSO ps1, PHANSO ps2)
        {
            int UC;
            PHANSO temp = new PHANSO();
            temp.tu = ps1.tu * ps2.mau + ps1.mau * ps2.tu;
            temp.mau = ps1.mau * ps2.mau;
            UC = UCLN(temp.tu, temp.mau);
            temp.tu = temp.tu / UC;
            temp.mau = temp.mau / UC;
            return temp;
        }
        public PHANSO Hieu(PHANSO ps1, PHANSO ps2)
        {
            int UC;
            PHANSO temp = new PHANSO();
            temp.tu = ps1.tu * ps2.mau - ps1.mau * ps2.tu;
            temp.mau = ps1.mau * ps2.mau;
            UC = UCLN(Math.Abs(temp.tu), Math.Abs(temp.mau));
            temp.tu = temp.tu / UC;
            temp.mau = temp.mau / UC;
            return temp;

        }
        public PHANSO Nhan(PHANSO ps1, PHANSO ps2)
        {
            int UC;
            PHANSO temp = new PHANSO();
            temp.tu = ps1.tu * ps2.tu;
            temp.mau = ps1.mau * ps2.mau;
            UC = UCLN(temp.tu, temp.mau);
            temp.tu = temp.tu / UC;
            temp.mau = temp.mau / UC;
            return temp;
        }
        public PHANSO Thuong(PHANSO ps1, PHANSO ps2)
        {
            int UC;
            PHANSO temp = new PHANSO();
            temp.tu = ps1.tu * ps2.mau;
            temp.mau = ps1.mau * ps2.tu;
            UC = UCLN(temp.tu, temp.mau);
            temp.tu = temp.tu / UC;
            temp.mau = temp.mau / UC;
            return temp;
        }
       

        public class Tester
        {
            static void Main()
            {
                int tu, mau,n;
                Console.WriteLine("Nhap vao phan so 1:\n");
                Console.Write("\tNhap tu: ");
                tu = int.Parse(Console.ReadLine());
                Console.Write("\tNhap mau: ");
                mau = int.Parse(Console.ReadLine());
                Console.WriteLine("Phan so thu 1 vua nhap la: " + tu + "/" + mau);
                PHANSO ps1 = new PHANSO(tu, mau);
                Console.WriteLine("\nNhap vao phan so 2:\n");
                Console.Write("\tNhap tu: ");
                tu = int.Parse(Console.ReadLine());
                Console.Write("\tNhap mau: ");
                mau = int.Parse(Console.ReadLine());
                Console.WriteLine("Phan so thu 2 vua nhap la: " + tu + "/" + mau);
                PHANSO ps2 = new PHANSO(tu, mau);
                PHANSO kq = new PHANSO();
                Console.WriteLine("\nTong 2 phan so");
                kq = kq.CongPS(ps1, ps2);
                ps1.inPHANSO();
                Console.Write(" + ");
                ps2.inPHANSO();
                Console.Write(" = ");
                kq.inPHANSO();
                Console.WriteLine("\n\nHieu 2 phan so");
                kq = kq.Hieu(ps1, ps2);
                ps1.inPHANSO();
                Console.Write(" - ");
                ps2.inPHANSO();
                Console.Write(" = ");
                kq.inPHANSO();
                Console.WriteLine("\n\nTich 2 phan so");
                kq = kq.Nhan(ps1, ps2);
                ps1.inPHANSO();
                Console.Write(" x ");
                ps2.inPHANSO();
                Console.Write(" = ");
                kq.inPHANSO();
                Console.WriteLine("\n\nThuong 2 phan so");
                kq = kq.Thuong(ps1, ps2);
                ps1.inPHANSO();
                Console.Write(" : ");
                ps2.inPHANSO();
                Console.Write(" = ");
                kq.inPHANSO();
                Console.ReadLine();
            }
        }
    }
}

_________________________________________________
Khách viếng thăm đọc rồi thì thanks đi chứ!!
Về Đầu Trang Go down
Xem lý lịch thành viên http://itworld.4rumer.com
GGGG




Nam Pisces

Số bài viết : 11
Điểm : 14
Được cảm ơn : 0
Ngày sinh : 15/03/1989
Tham gia ngày : 16/10/2010
Tuổi : 29
Đến từ : AL

Bài gửiTiêu đề: Re: Cộng, trừ, nhân, chia 2 phân số tối giản....   16/10/2010, 10:51

Góp ý cho bạn 1 xíu nha!
Hàm USCLN, bạn không nên để trong class PhanSo, nó phải thuộc 1 lớp nào đó, PhanSo chỉ sử dụng hàm này để tính toán thôi.
Fix thêm trường hợp, ví dụ, bạn nhập tử = 0; mẫu = 1, thử xem ==> hàm USCLN trả về 0, và phần tối giản của bạn bị sai.
Bạn nên Overload các toán tử + - * / lên, như vậy sẽ hay hơn.
Bạn nên tách class phân số ra 1 file ***.cs mới, tránh để chung với namespace chứa hàm Main.
Bạn nên Override phương thức ToString() lên để thay cho hàm InPhanSo.
Phần khởi tạo có tham số, bạn nên tôn trọng đầu vào của bài toán, ko nên tự tiện tối giản trong đó!
....

1 ít góp ý, mong bạn sẽ hoàn thiện hơn!
Về Đầu Trang Go down
Xem lý lịch thành viên
.net




Nữ Capricorn

Số bài viết : 14
Điểm : 12
Được cảm ơn : 0
Ngày sinh : 11/01/1989
Tham gia ngày : 11/10/2010
Tuổi : 29
Đến từ : sần

Bài gửiTiêu đề: Re: Cộng, trừ, nhân, chia 2 phân số tối giản....   16/10/2010, 15:12

già làng cày kinh quá! thôi mien
nhưng vẫn không theo hướng đối tượng!
đừng mang theo tư tưởng C vào bài làm nữa!
học OOP rồi mà Very Happy
còn lại chỉ là test lỗi và dùng try ... catch thôi! không có gì mới Razz
Tặng ông cái này
Code:

public static PHANSO operator +(PHANSO a, PHANSO b)
public static PHANSO operator -(PHANSO a, PHANSO b)
public static PHANSO operator *(PHANSO a, PHANSO b)
public static PHANSO operator /(PHANSO a, PHANSO b)
Về Đầu Trang Go down
Xem lý lịch thành viên
Già Làng


avatar

Thú CƯng :
Nam Libra

Số bài viết : 373
Điểm : 2200708
Được cảm ơn : 53
Ngày sinh : 20/10/1987
Tham gia ngày : 16/03/2010
Tuổi : 31
Đến từ : Bình Dương
Ngề nghiệp : Sinh Viên
Chăm ngôn : Cơm Cha - Áo Mẹ!

Bài gửiTiêu đề: Re: Cộng, trừ, nhân, chia 2 phân số tối giản....   16/10/2010, 17:17

sorry!! Hướng đối tượng đi học ít nên hok rành!!kekeke. Đang ngâm lần lần nè!!!

_________________________________________________
Khách viếng thăm đọc rồi thì thanks đi chứ!!
Về Đầu Trang Go down
Xem lý lịch thành viên http://itworld.4rumer.com
Già Làng


avatar

Thú CƯng :
Nam Libra

Số bài viết : 373
Điểm : 2200708
Được cảm ơn : 53
Ngày sinh : 20/10/1987
Tham gia ngày : 16/03/2010
Tuổi : 31
Đến từ : Bình Dương
Ngề nghiệp : Sinh Viên
Chăm ngôn : Cơm Cha - Áo Mẹ!

Bài gửiTiêu đề: Re: Cộng, trừ, nhân, chia 2 phân số tối giản....   16/10/2010, 17:21

ToYeuCau đã viết:
Góp ý cho bạn 1 xíu nha!
Hàm USCLN, bạn không nên để trong class PhanSo, nó phải thuộc 1 lớp nào đó, PhanSo chỉ sử dụng hàm này để tính toán thôi.
Fix thêm trường hợp, ví dụ, bạn nhập tử = 0; mẫu = 1, thử xem ==> hàm USCLN trả về 0, và phần tối giản của bạn bị sai.
Bạn nên Overload các toán tử + - * / lên, như vậy sẽ hay hơn.
Bạn nên tách class phân số ra 1 file ***.cs mới, tránh để chung với namespace chứa hàm Main.
Bạn nên Override phương thức ToString() lên để thay cho hàm InPhanSo.
Phần khởi tạo có tham số, bạn nên tôn trọng đầu vào của bài toán, ko nên tự tiện tối giản trong đó!
....

1 ít góp ý, mong bạn sẽ hoàn thiện hơn!
Thanks!!! Mình cố gắng học hỏi thêm!!!hj study study study

_________________________________________________
Khách viếng thăm đọc rồi thì thanks đi chứ!!
Về Đầu Trang Go down
Xem lý lịch thành viên http://itworld.4rumer.com
tkhking

Member Năng Động


Member Năng Động
avatar

Thú CƯng :
Nam Pisces

Số bài viết : 114
Điểm : 135
Được cảm ơn : 1
Ngày sinh : 18/03/1990
Tham gia ngày : 01/07/2010
Tuổi : 28
Đến từ : Óc Trâu Lấy Ra
Ngề nghiệp : Student
Chăm ngôn : King

Bài gửiTiêu đề: Re: Cộng, trừ, nhân, chia 2 phân số tối giản....   18/10/2010, 23:37

hihih già làng nay cũng khá lên rồi đó cố gắng phát huy nha...tui ủng hộ 2 tay...
Trích dẫn :
public int UCLN(int a, int b)
{
Math.Abs(a);
Math.Abs(b);
if(a*b!=0)return 1;
else
{
while (a != b)
{ if (a > b)
a -= b;
else
b -= a;
}
return a;
}


}
tặng cái này nếu thấy hay thì nhận làm kỉ niệm nha...
Về Đầu Trang Go down
Xem lý lịch thành viên trungkienho90@yahoo.com
Sponsored content




Bài gửiTiêu đề: Re: Cộng, trừ, nhân, chia 2 phân số tối giản....   

Về Đầu Trang Go down
 

Cộng, trừ, nhân, chia 2 phân số tối giản....

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

 Similar topics

-
» Chia sẻ kinh nghiệm mua nhà Sài Gòn

Permissions in this forum:Bạn không có quyền trả lời bài viết
IT World! :: HỌC TẬP :: HỌC KỲ V :: Nhập môn .Net-