May 2024 | Mon | Tue | Wed | Thu | Fri | Sat | Sun |
---|
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | Calendar |
|
| | Cài đặt bài Phân Số? | |
| | Tác giả | Thông điệp |
---|
symphonyenigmatic Thành viên bậc 3
Tổng số bài gửi : 61 Points : 104 Reputation : 6 Join date : 26/07/2009 Age : 35 Đến từ : http:://thienthancntt.tk
| Tiêu đề: Cài đặt bài Phân Số? Thu Oct 15, 2009 7:46 am | |
| Có bạn nào cài được thuật rút gọn trong bài Phân Số không? Mình dùng thuật toán cũ hồi năm ngoái (nhưng có chỉnh sửa đôi chút, vì dùng OOP mà). Nhưng mà vẫn chưa compile được. Mình không biết nó sai gì nữa. Bạn nào làm rồi Show lên mình xem với nha. Tại hôm nay k mang trong usp, nên không đưa lên đây dc... | |
| | | anbinhtrong Thành viên bậc 1
Tổng số bài gửi : 13 Points : 17 Reputation : 1 Join date : 29/08/2009 Age : 35 Đến từ : BT
| Tiêu đề: Re: Cài đặt bài Phân Số? Sun Oct 18, 2009 6:11 am | |
| Nguyên tắc vẫn tìm ước số chung cho 2 mẫu số, rồi cộng hoặc trừ tử. Sau đó tìm ước số chung của tử và mẫu. Bạn thử viết lại rồi mọi người cùng nhau sửa. | |
| | | symphonyenigmatic Thành viên bậc 3
Tổng số bài gửi : 61 Points : 104 Reputation : 6 Join date : 26/07/2009 Age : 35 Đến từ : http:://thienthancntt.tk
| Tiêu đề: Re: Cài đặt bài Phân Số? Wed Oct 21, 2009 9:59 pm | |
| uh. File PhanSo.h
// PhanSo.h // ES
#ifndef PhanSo_H #define PhanSo_H class PhanSo { int tu,mau; int Uscln(int a, int b); public: PhanSo(int t=0,int mau=1); void Nhap (); void Xuat (); PhanSo RutGon (); PhanSo Cong (PhanSo p); PhanSo Tru (PhanSo p); PhanSo Nhan (PhanSo p); }; #endif ---------------------------------------------- // PhanSo.cpp // ES
#include "PhanSo.h" #include "iostream"
using namespace std;
PhanSo::PhanSo (int t, int m) { tu=t; mau=m; }
void PhanSo::Nhap() { cout<<"\nNhap Tu So: "; cin>>tu; cout<<"Nhap Mau so: "; cin>>mau; }
void PhanSo::Xuat () { cout<}
int PhanSo::Uscln (int a, int b) { while (a!=0 && b!=0) { if(a>b) a -= b; else b -= a; } if(a==0) return b; else return a; }
PhanSo PhanSo::RutGon () { int uc=Uscln (tu,mau); return (tu/uc, mau/uc); }
/* PhanSo PhanSo::RutGon() { int uc; if(mau!=0) { { uc=Uscln(tu,mau); tu=tu/uc; mau=mau/uc; } if(mau<0) { tu=-tu; mau=-mau; } else mau=1; cout< } else cout<<"Mau phai khac 0"; return (tu,mau); } */
// Tham so p la phan so duoc truyen vao PhanSo PhanSo::Cong(PhanSo p) { PhanSo kq; if (mau==p.mau) { kq.tu=tu+p.tu; kq.mau=mau; } else { kq.tu=tu*p.mau+mau*p.tu; kq.mau=mau*p.mau; } return kq; }
PhanSo PhanSo::Tru(PhanSo p) { PhanSo kq; if (mau==p.mau) { kq.tu=tu-p.tu; kq.mau=mau; } else { kq.tu=tu*p.mau - mau*p.tu; kq.mau=tu*p.mau; } return kq; }
PhanSo PhanSo::Nhan(PhanSo p) { return (tu*p.mau, mau*p.mau); } ------------------------------------------- // 20091013_PhanSo.cpp // ES
#include "PhanSo.h" #include "iostream"
using namespace std;
void main() { PhanSo a,b,c; cout<<"Chuong trinh Tinh toan Phan So: \n";
a.Nhap(); a.Xuat(); b.Nhap(); b.Xuat();
cout<<"\n a + b = "; c=a.Cong(b); c.Xuat();
cout<<"\n a - b = "; c=a.Tru(b); c.Xuat();
cout<<"\n a * b = "; c=a.Nhan(b); c.Xuat(); }
| |
| | | anbinhtrong Thành viên bậc 1
Tổng số bài gửi : 13 Points : 17 Reputation : 1 Join date : 29/08/2009 Age : 35 Đến từ : BT
| Tiêu đề: Re: Cài đặt bài Phân Số? Sun Oct 25, 2009 11:57 pm | |
| Phần rút gọn của bạn sai ở chỗ là thuật toán tìm USCLN không áp dụng cho số âm. Đơn giản nhất là bạn cứ áp dụng thuật toán chia Euclide cho lẹ. ( Mình không biết bài toán trừ Euclide làm cho số âm được hay không?). Mình nhận thấy đơn giản nhất là khi nhập vào là Rút gọn, cộng hay trừ rồi rút gọn ở cuối hàm. Bài toán trừ chỗ này bị sai: - Code:
-
kq.mau=tu*p.mau; Bài toán nhân - Code:
-
return (tu*p.mau, mau*p.mau) Mình thử sửa lại như sau: có dùng thêm hàm BSCNN file Phanso.cpp - Code:
-
//---------------------------------------------- // PhanSo.cpp // ES
#include "PhanSo.h" #include "iostream"
using namespace std;
PhanSo::PhanSo (int t, int m) { tu=t; mau=m; }
void PhanSo::Nhap() { cout<<"\nNhap Tu So: "; cin>>tu; cout<<"Nhap Mau so: "; cin>>mau; if(mau<0) { mau=mau*(-1); tu=tu*(-1); } this->RutGon(); }
void PhanSo::Xuat () { cout<<tu<<" / "<<mau; }
int PhanSo::Uscln (int a, int b) { int tg; if(a<0) a*=-1; tg=a%b; while(tg!=0) { a=b;; b=tg; tg=a%b; } return b; } int PhanSo::Bscnn (int a, int b) { int tg; tg=Uscln(a,b); a=a/tg; return a*b; } void PhanSo::RutGon () { int uc=Uscln (tu,mau); tu/=uc; mau/=uc; }
// Tham so p la phan so duoc truyen vao PhanSo PhanSo::Cong(PhanSo p) { PhanSo kq; int bsc; bsc=Bscnn(mau,p.mau); kq.tu=tu*bsc/mau+p.tu*bsc/p.mau; kq.mau=bsc; kq.RutGon(); return kq; }
PhanSo PhanSo::Tru(PhanSo p) { PhanSo kq; if (mau==p.mau) { kq.tu=tu-p.tu; kq.mau=mau; } else { kq.tu=tu*p.mau - mau*p.tu; kq.mau=mau*p.mau; } kq.RutGon(); return kq; }
PhanSo PhanSo::Nhan(PhanSo p) { PhanSo tg; tg.tu=tu*p.tu; tg.mau=mau*p.mau; tg.RutGon(); return tg; } | |
| | | Sponsored content
| Tiêu đề: Re: Cài đặt bài Phân Số? | |
| |
| | | | Cài đặt bài Phân Số? | |
|
Trang 1 trong tổng số 1 trang | |
Similar topics | |
|
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |