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

Đề tài: Lớp phân số

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    2

    Mặc định Lớp phân số

    Mình có 1 bài xây dựng lớp phân số thế này

    Code:
    #include "stdafx.h"
    #include "conio.h"
    #include "iostream.h"
    #include "math.h"
    int  USCLN(float x,float y){
    	int r;
    	x=abs(x);
    	y=abs(y);
    	if(x==0||y==0)
    		return 1;
    	while((r=int(x)%int(y))!=0)
    	{	x=y;
    		y=r;
    	}
    	return y;
    }
    class PhanSo{
    	float tu, mau;
    	public:
    		PhanSo(float=1,float=1);
    		void Xuat();
    		PhanSo operator+(PhanSo);
    		PhanSo operator+(float b);
    		friend PhanSo operator+(float a,PhanSo b);
    		float LayTu();//truy van
    		float LayMau();
    		void GanTu(float x);//cap nhat(gan)
    		void GanMau(float y);
    };
    PhanSo::PhanSo(float x,float y){
    	float tmp;
    	tmp=float(USCLN(x,y));
    	x=x/tmp;
    	y=y/tmp;
    	tu=x;mau=y;
    }
    void PhanSo::Xuat(){
    		cout<<tu<<"/"<<mau;
    }
    float PhanSo::LayTu(){
    	return tu;
    }
    float PhanSo::LayMau(){
    	return mau;
    }
    void PhanSo::GanTu(float x){
    	tu=x;
    }
    void PhanSo::GanMau(float y){
    	mau=y;
    }
    PhanSo PhanSo::operator +(PhanSo b){
    	PhanSo tmp;
    	tmp.GanTu(tu*b.LayMau()+mau*b.LayTu());
    	tmp.GanMau(mau*b.LayMau());
    	int u=USCLN(tmp.LayTu(),tmp.LayMau());
    	tmp.GanTu(tmp.LayTu()/u);
    	tmp.GanMau(tmp.LayMau()/u);
    	return tmp;
    }
    PhanSo PhanSo::operator+(float b){
    	PhanSo tmp;
    	tmp.GanTu(tu+b*mau);
    	tmp.GanMau(mau);
    int u=USCLN(tmp.LayTu(),tmp.LayMau());
    	tmp.GanTu(tmp.LayTu()/u);
    	tmp.GanMau(tmp.LayMau()/u);
    	return tmp;
    }
    PhanSo operator+(float a,PhanSo b)
    {
    	PhanSo tmp;
    	tmp.GanTu(a*b.LayMau()+b.LayTu());
    	tmp.GanMau(b.LayMau());
    int u=USCLN(tmp.LayTu(),tmp.LayMau());
    	tmp.GanTu(tmp.LayTu()/u);
    	tmp.GanMau(tmp.LayMau()/u);
    	return tmp;
    }
    void main()
    {
    		PhanSo a(1,4),b(1,4),c,d(2,4);
    		c=a+b;
    		c.Xuat();cout<<endl;
    		c=a+3;
    		c.Xuat();cout<<endl;
    		c=3+a;
    		c.Xuat();cout<<endl;
    		d.Xuat();cout<<endl;
    
    }
    Mình muốn viết 1 hàm định nghĩa phép toán"==" để kiểm tra 2 phân số có bằng nhau không? Mong các bạn giúp đỡ.
    Đã được chỉnh sửa lần cuối bởi yuka89 : 11-12-2008 lúc 06:46 PM. Lý do: code

  2. #2
    Ngày gia nhập
    07 2008
    Bài viết
    0

    bạn chèn thêm đoạn code này nữa để kiểm tra 2 phân số có bằng nhau hay không nhá:
    C Code:
    1. int phanso::operator==(phanso p)
    2. {
    3.         return (this->tu==p.tu)&&(this->mau==p.mau);
    4. }
    5.  
    6. int main(){
    7.     phanso a,b;
    8.     a.nhap();
    9.     b.nhap();
    10.     if(a==b) cout<<"a bang b"<<endl;
    11.     else cout<<"a khac b"<<endl;
    12.     getch();
    13.     return 0;
    14. }
    Đã được chỉnh sửa lần cuối bởi rox_rook : 18-12-2008 lúc 12:49 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