Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Lớp phân số trong lập trình hướng đối tượng.

  1. #1
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    Wink Lớp phân số trong lập trình hướng đối tượng.

    Mình làm class phân số này mà sai lên sai xuống, nó chạy rùi nhưng hình như bị lỗi biên dịch, mấy bạn fix giúp với
    Code:
    #include "iostream"
    #include "stdio.h"
    #include "conio.h"
    #include "math.h"
    using namespace std;
    class phanso
    {
          private:
                  int tu;
                  int mau;
          public:
          		 void input();
                 void khoitao(int a,int b);
                 void ktphanso();
                 int UCLN(int x,int y);
                 int rutgon();
                 void xuatps();
    			 void xuatpsrg();
    };
    
    void phanso::khoitao(int a=1,int b=1)
    {
         tu=a;
         mau=b;
    }
    void phanso::input() 
    { 
        do 
        { 
        cout<<"nhap tu so: "; 
        cin>>tu; 
        cout<<"\nnhap mau so: "<<endl; 
        cin>>mau; 
        } 
        while (tu<0 || mau<0); 
    } 
    void phanso::ktphanso()
    {
         if(mau!=0)//mau so khac 0
         cout<<"Phan so hop le";
         else cout<<"Phan so khong hop le";
    }
    void phanso::xuatps()
    {
         cout<<"Phan so vua nhap la:"<<tu/mau<<"\n";
    }
    //tim uoc chung lon nhat cua hai so a va b de rut gon
    int phanso::UCLN(int x, int y) 
    {
       if(x==y)
          return x;
       else
          if(x>y)
             return UCLN(x-y,y);
          else
             return UCLN(x,y-x);
    }
    // Rut gon phan so
    int phanso::rutgon() 
    { 
       int k = UCLN(tu,mau);
       tu=tu/k;
       return tu;
       mau=mau/k;
       return mau;
    }
    void phanso::xuatpsrg()
    {
    	cout<<"Phan so vua rut gon:"<<tu/mau<<"\n";
    }
    void main()
    {
          phanso p,q;
          p.khoitao();
          p.xuatps();
          p.rutgon();
          p.xuatpsrg();
    
    	  q.input();
          q.xuatps();
          q.rutgon();
          q.xuatpsrg();
    	  getch();
    }

  2. #2
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Ở hàm rút gọn phân số:
    Code:
    int phanso::rutgon() 
    { 
       int k = UCLN(tu,mau);
       tu=tu/k;
       return tu;
       mau=mau/k;
       return mau;
    }
    bạn phải chia cả tử và mẫu cho k rồi mới return nhé!
    và vì tử và mẫu bạn khai báo là biến kiểu nguyên int nên khi bạn xuất tu/mau => ????

  3. #3
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    Trích dẫn Nguyên bản được gửi bởi vitbau1412 Xem bài viết
    Ở hàm rút gọn phân số:
    Code:
    int phanso::rutgon() 
    { 
       int k = UCLN(tu,mau);
       tu=tu/k;
       return tu;
       mau=mau/k;
       return mau;
    }
    bạn phải chia cả tử và mẫu cho k rồi mới return nhé!
    và vì tử và mẫu bạn khai báo là biến kiểu nguyên int nên khi bạn xuất tu/mau => ????
    vậy là sai ở hàm xuất phân số và xuất phân số rút gọn hả bạn

  4. #4
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    mình re lại code nha:
    Code:
    #include "iostream"
    #include "stdio.h"
    #include "conio.h"
    #include "math.h"
    
    using namespace std;
    
    class phanso
    {
          private:
                  int tu;
                  int mau;
          public:
          		 void input();
                 void khoitao(int a,int b);
                 void ktphanso();
                 int UCLN(int x,int y);
                 int rutgon();
                 void xuatps();
    			 void xuatpsrg();
    };
    
    void phanso::khoitao(int a=1,int b=1)
    {
         tu=a;
         mau=b;
    }
    void phanso::input() 
    { 
        do 
        { 
        cout<<"nhap tu so: "; 
        cin>>tu; 
        cout<<"\nnhap mau so: "<<endl; 
        cin>>mau; 
        } 
        while (tu<0 || mau<0); 
    } 
    void phanso::ktphanso()
    {
         if(mau!=0)//mau so khac 0
         cout<<"Phan so hop le";
         else cout<<"Phan so khong hop le";
    }
    void phanso::xuatps()
    {
         cout<<"Phan so vua nhap la:"<<tu<<"/"<<mau<<"\n";
    }
    //tim uoc chung lon nhat cua hai so a va b de rut gon
    int phanso::UCLN(int x, int y) 
    {
       if(x==y)
          return x;
       else
          if(x>y)
             return UCLN(x-y,y);
          else
             return UCLN(x,y-x);
    }
    // Rut gon phan so
    int phanso::rutgon() 
    { 
       int k = UCLN(tu,mau);
       tu=tu/k;
       return tu;
       mau=mau/k;
       return mau;
    }
    void phanso::xuatpsrg()
    {
    	cout<<"Phan so vua rut gon:"<<tu<<"/"<<mau<<"\n";
    }
    void main()
    {
          phanso p,q;
          p.khoitao();
    	  p.ktphanso();
          p.xuatps();
          p.rutgon();
          p.xuatpsrg();
    
    	  q.input();
    	  q.ktphanso();
          q.xuatps();
          q.rutgon();
          q.xuatpsrg();
    	  getch();
    }
    lúc deburg nó báo lỗi biên dịch hay sao ấy, nó hiện ra return(ptd); gì đó, rùi deburg bị đứng luôn :((

  5. #5
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Sửa thêm hàm rút gọn:
    C++ Code:
    1. phanso phanso::rutgon()
    2. {
    3.    int k = UCLN(tu,mau);
    4.    tu=tu/k;
    5.    mau=mau/k;
    6.    return *this;
    7. }

  6. #6
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    Mặc định Lớp phân số trong lập trình hướng đối tượng.

    Trích dẫn Nguyên bản được gửi bởi vitbau1412 Xem bài viết
    Sửa thêm hàm rút gọn:
    C++ Code:
    1. phanso phanso::rutgon()
    2. {
    3.    int k = UCLN(tu,mau);
    4.    tu=tu/k;
    5.    mau=mau/k;
    6.    return *this;
    7. }
    vẫn ko dk bạn ơi :((

  7. #7
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    C++ Code:
    1. #include "iostream"
    2. #include "stdio.h"
    3. #include "conio.h"
    4. #include "math.h"
    5.  
    6. using namespace std;
    7.  
    8. class phanso
    9. {
    10.       private:
    11.               int tu;
    12.               int mau;
    13.       public:
    14.              void input();
    15.              void khoitao(int a,int b);
    16.              void ktphanso();
    17.              int UCLN(int x,int y);
    18.              int rutgon();
    19.              void xuatps();
    20.              void xuatpsrg();
    21. };
    22.  
    23. void phanso::khoitao(int a=1,int b=1)
    24. {
    25.      tu=a;
    26.      mau=b;
    27. }
    28. void phanso::input()
    29. {
    30.     do
    31.     {
    32.     cout<<"nhap tu so: ";
    33.     cin>>tu;
    34.     cout<<"\nnhap mau so: "<<endl;
    35.     cin>>mau;
    36.     }
    37.     while (tu<0 || mau<0);
    38. }
    39. void phanso::ktphanso()
    40. {
    41.      if(mau!=0)//mau so khac 0
    42.      cout<<"Phan so hop le";
    43.      else cout<<"Phan so khong hop le";
    44. }
    45. void phanso::xuatps()
    46. {
    47.      cout<<"Phan so vua nhap la:"<<tu<<"/"<<mau<<"\n";
    48. }
    49. //tim uoc chung lon nhat cua hai so a va b de rut gon
    50. int phanso::UCLN(int x, int y)
    51. {
    52.    if(x==y)
    53.       return x;
    54.    else
    55.       if(x>y)
    56.          return UCLN(x-y,y);
    57.       else
    58.          return UCLN(x,y-x);
    59. }
    60. // Rut gon phan so
    61. int phanso::rutgon()
    62. {
    63.    int k = UCLN(tu,mau);
    64.    tu=tu/k;
    65.    mau=mau/k;
    66.    return 1;
    67. }
    68. void phanso::xuatpsrg()
    69. {
    70.     cout<<"Phan so vua rut gon:"<<tu<<"/"<<mau<<"\n";
    71. }
    72. void main()
    73. {
    74.       phanso p,q;
    75.       p.khoitao();
    76.       p.ktphanso();
    77.       p.xuatps();
    78.       p.rutgon();
    79.       p.xuatpsrg();
    80.  
    81.       q.input();
    82.       q.ktphanso();
    83.       q.xuatps();
    84.       q.rutgon();
    85.       q.xuatpsrg();
    86.       getch();
    87. }
    Mình chạy ra kết quả mà, có lỗi gì đâu, bạn thử lại xem

  8. #8
    Ngày gia nhập
    10 2012
    Bài viết
    2

    cái đó chạy xong nó chạy hoài....bạn ơi
    lỗi rùi hichic
    sơn

  9. #9
    Ngày gia nhập
    01 2012
    Nơi ở
    hà nôi 2
    Bài viết
    59

    C Code:
    1. void phanso::input()
    2. {
    3.     do
    4.     {
    5.     cout<<"nhap tu so: ";
    6.     cin>>tu;
    7.     cout<<"\nnhap mau so: "<<endl;
    8.     cin>>mau;
    9.     }
    10.     while (tu<0 || mau<0); //báo lỗi nếu nhập mẫu bằng 0 sau khi tính toán
    11. }
    Bạn xem lại điều kiện tử mẫu vòng while đi, để thế này thì phân số có mẫu bằng 0 vẫn chạy nhưng chạy xong thì lỗi chương trình ngay
    C Code:
    1. void phanso::input()
    2. {
    3.     do
    4.     {
    5.     cout<<"nhap tu so: ";
    6.     cin>>tu;
    7.     cout<<"\nnhap mau so: ";
    8.     cin>>mau;
    9.     }
    10.     while (mau==0); //điều kiện này đảm bảo hơn
    11. }
    I'm still a chicken
    rất vui khi được làm quen với mọi người ^_^ http://www.facebook.com/chung.v.nguyen.14

  10. #10
    Ngày gia nhập
    09 2013
    Bài viết
    0

    Bạn tham khảo phần rút gọn của tôi xem.
    Code:
    int uscln(int a, int b){
    	for (int i=a; i>1; i--)
    		if (a%i==0 && b%i==0)
    			return i;
    		return 1;
    }	
    // Toi gian phan so
    void PhanSo :: ToiGian(){	
    	int usc = uscln(mabs(tu), mabs(mau));
    	tu /= usc;
    	mau /= usc;
    	
    }
    Ở đây tôi tạo thêm 1 hàm độc lập tính uscln.

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