|
|
| | Tue 27 Oct 2009, 6:49 pm | | osmnt Thống Sói | -Sinh nhật : 24/05/1985
-Đến từ : Bình Thuận -Sở thích : mày và mò, tìm và tòi -Điểm tích cực : 1183 -Cảm ơn : 17
|
| | Tiêu đề: Lớp Phân Số | |
| | | | | | Nguồn : http://sptinbt.forum-viet.net/t184-topic Tiêu Đề : Lớp Phân Số
Nếu thấy bài viết này hay thì xin click vào nút [Cảm ơn] bên dưới để thay cho lời cảm ơn nhé --------------------------------------------------
Sao y bản chính: - Code:
-
#include<iostream> using namespace std;
long USCLN(long x, long y) { long r; x = abs(x); y = abs(y); if (x == 0 || y == 0) return 1; while ((r = x % y) != 0) { x = y; y = r; } return y; } class PhanSo { long tu, mau; void UocLuoc(); public: PhanSo(long t, long m) { Set(t,m); } void Set(long t, long m); long LayTu() const { return tu; } long LayMau() const { return mau; } PhanSo Cong(PhanSo b) const; PhanSo operator + (PhanSo b) const; PhanSo operator - () const { return PhanSo(-tu, mau); } bool operator == (PhanSo b) const; bool operator != (PhanSo b) const; void Xuat() const; }; void PhanSo::UocLuoc() { long usc = USCLN(tu, mau); tu /= usc; mau /= usc; if (mau < 0) mau = -mau, tu = -tu; if (tu == 0) mau = 1; } void PhanSo::Set(long t, long m) { if (m) { tu = t; mau = m; UocLuoc(); } } PhanSo PhanSo::Cong(PhanSo b) const { return PhanSo(tu*b.mau + mau*b.tu, mau*b.mau); } PhanSo PhanSo::operator + (PhanSo b) const { return PhanSo(tu*b.mau + mau*b.tu, mau*b.mau); } bool PhanSo::operator == (PhanSo b) const { return tu*b.mau == mau*b.tu; } void PhanSo::Xuat() const { cout << tu; if (tu != 0 && mau != 1) cout << "/" << mau<<endl; cout<<endl; } void main() { PhanSo a(7,4); a.LayMau(); a.LayTu(); a.Xuat(); PhanSo b(3,4); b.Xuat(); PhanSo c=b+a; c.Xuat(); PhanSo d=b.Cong(a); d.Xuat(); PhanSo e=a.operator+(-b); e.Xuat(); } --------------------------------------------------
| | | | |
Copy đường link gửi cho bạn bè ! |
|
|
Tue 27 Oct 2009, 7:00 pm | | osmnt Thống Sói | -Sinh nhật : 24/05/1985
-Đến từ : Bình Thuận -Sở thích : mày và mò, tìm và tòi -Điểm tích cực : 1183 -Cảm ơn : 17
|
| | Tiêu đề: Re: Lớp Phân Số | |
| |
Copy đường link gửi cho bạn bè ! |
|
|
Wed 28 Oct 2009, 6:36 pm | | osmnt Thống Sói | -Sinh nhật : 24/05/1985
-Đến từ : Bình Thuận -Sở thích : mày và mò, tìm và tòi -Điểm tích cực : 1183 -Cảm ơn : 17
|
| | Tiêu đề: Re: Lớp Phân Số | |
| |
Copy đường link gửi cho bạn bè ! |
|
|
Sun 01 Nov 2009, 9:29 am | | osmnt Thống Sói | -Sinh nhật : 24/05/1985
-Đến từ : Bình Thuận -Sở thích : mày và mò, tìm và tòi -Điểm tích cực : 1183 -Cảm ơn : 17
|
| | Tiêu đề: Re: Lớp Phân Số | |
| | | | | | Nguồn : http://sptinbt.forum-viet.net/t184-topic Tiêu Đề : Lớp Phân Số
Nếu thấy bài viết này hay thì xin click vào nút [Cảm ơn] bên dưới để thay cho lời cảm ơn nhé --------------------------------------------------
- osmnt đã viết:
- Các bạn ơi sao mình dùng toán tử friend cho 2 phep toán * và / thì được nhưng , - thì báo lổi. Bó tay, các bạn làm thử rồi cho ý kiến nha
- Code:
-
#include<iostream> using namespace std;
long USCLN(long x, long y) { long r; x = abs(x); y = abs(y); if (x == 0 || y == 0) return 1; while ((r = x % y) != 0) { x = y; y = r; } return y; } class PhanSo { long tu, mau; void UocLuoc(); public: PhanSo(long t, long m) { Set(t,m); } PhanSo(long t) { Set(t,1); } void Set(long t, long m); friend PhanSo operator +(PhanSo a,PhanSo b); void Xuat() const; }; void PhanSo::UocLuoc() { long usc = USCLN(tu, mau); tu /= usc; mau /= usc; if (mau < 0) mau = -mau, tu = -tu; if (tu == 0) mau = 1; } void PhanSo::Set(long t, long m) { if (m) { tu = t; mau = m; UocLuoc(); } }
PhanSo operator + (PhanSo a,PhanSo b) { return PhanSo(a.tu*b.mau + a.mau*b.tu,a.mau*b.mau); }
void PhanSo::Xuat() const { cout << tu; if (tu != 0 && mau != 1) cout << "/" << mau<<endl; cout<<endl; } void main() { PhanSo a(7,4); PhanSo b(3,4); PhanSo c=b+a; c.Xuat(); PhanSo d=a+5; d.Xuat(); } --------------------------------------------------
| | | | |
Copy đường link gửi cho bạn bè ! |
|
|
Mon 02 Nov 2009, 9:46 pm | | osmnt Thống Sói | -Sinh nhật : 24/05/1985
-Đến từ : Bình Thuận -Sở thích : mày và mò, tìm và tòi -Điểm tích cực : 1183 -Cảm ơn : 17
|
| | Tiêu đề: Re: Lớp Phân Số | |
| | | | | | Nguồn : http://sptinbt.forum-viet.net/t184-topic Tiêu Đề : Lớp Phân Số
Nếu thấy bài viết này hay thì xin click vào nút [Cảm ơn] bên dưới để thay cho lời cảm ơn nhé --------------------------------------------------
Dạy là mình tự mở topic rồi tự biên tự diễn luôn, bó tay cho mấy bạn Đây là bài đã chạy tốt rồi: - Code:
-
#include<iostream.h> #include<math.h>
long USCLN(long x, long y) { long r; x = abs(x); y = abs(y); if (x == 0 || y == 0) return 1; while ((r = x % y) != 0) { x = y; y = r; } return y; } class PhanSo { long tu, mau; void UocLuoc(); public: PhanSo(long t, long m) { Set(t,m); } PhanSo(long t) { Set(t,1); } void Set(long t, long m); friend PhanSo operator +(PhanSo a,PhanSo b); friend PhanSo operator -(PhanSo a,PhanSo b); friend PhanSo operator *(PhanSo a,PhanSo b); friend PhanSo operator /(PhanSo a,PhanSo b); bool operator == (PhanSo b) const; bool operator != (PhanSo b) const;
void Xuat() const; }; void PhanSo::UocLuoc() { long usc = USCLN(tu, mau); tu /= usc; mau /= usc; if (mau < 0) mau = -mau, tu = -tu; if (tu == 0) mau = 1; } void PhanSo::Set(long t, long m) { if (m) { tu = t; mau = m; UocLuoc(); } }
PhanSo operator + (PhanSo a,PhanSo b) { return PhanSo(a.tu*b.mau + a.mau*b.tu,a.mau*b.mau); }
PhanSo operator - (PhanSo a,PhanSo b) { return PhanSo(a.tu*b.mau-a.mau*b.tu,a.mau*b.mau); }
PhanSo operator * (PhanSo a,PhanSo b) { return PhanSo(a.tu*b.tu,a.mau*b.mau); }
PhanSo operator / (PhanSo a,PhanSo b) { return PhanSo(a.tu*b.mau,a.mau*b.tu); } bool PhanSo::operator == (PhanSo b) const { if (tu*b.mau == mau*b.tu) return 1; return 0; } void PhanSo::Xuat() const { cout << tu; if (tu != 0 && mau != 1) cout << "/" << mau<<endl; cout<<endl; } void main() { PhanSo a(7,4); a.Xuat(); PhanSo b(3,4); b.Xuat(); PhanSo c=b+a; c.Xuat(); PhanSo d=a+5; d.Xuat(); PhanSo e=a-b; e.Xuat(); PhanSo f=a*b; f.Xuat(); PhanSo g=a/b; g.Xuat(); } --------------------------------------------------
| | | | |
Copy đường link gửi cho bạn bè ! |
|
|
| | Sponsored content
| |
| | |
Trang 1 trong tổng số 1 trang | | * Viết tiếng Việt có dấu, là tôn trọng người đọc. * Chia sẻ bài sưu tầm có ghi rõ nguồn, là tôn trọng người viết. * Thực hiện những điều trên, là tôn trọng chính mình.-Nếu chèn smilies có vấn đề thì bấm A/a trên phải khung viết bài
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
|
|