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

Đề tài: đề bài hướng đối tượng tính tổng, hiệu, tích 2 phân số!!!

  1. #1
    Ngày gia nhập
    11 2010
    Nơi ở
    TPHCM
    Bài viết
    9

    Mặc định đề bài hướng đối tượng tính tổng, hiệu, tích 2 phân số!!!

    Mình thấy cái đề thi của mấy khóa trước trường mình yêu cầu như thế này. mình không biết phải làm thế nào cho đúng.


    *****//khai báo và định nghĩa lớp đối tượng CPhanSo cần thiết để hàm main có thể thực hiện
    void main()
    {
    CPhanSo a,b(1),c(2,3)
    cin>>a;
    CPhanSo tong =a+b;
    cout<<" Tong hai phan so "<<a<<"+"<<b<<"="<<Tong;
    CPhanSo Hieu =a-5;
    cout <<"Hieu="<<Hieu ;
    Cphanso Tich =5*c;
    cout<<" Tich="<<Tich;
    }

  2. #2
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    bạn viêt contructor tham số, contructor mặc định, contructor copy, operator<<, operator>>,operator+,-,*,/ nói chung là đề yêu cầu đa năng hóa các toán tử để sử dụng cho lớp đó bạn
    I'll come back

  3. #3
    Ngày gia nhập
    09 2010
    Bài viết
    2

    minh co doan code k pit dung khong
    nen up len cho ae chem dum!!!
    // phan so_operator.cpp : Defines the entry point for the console application.
    #include "stdafx.h"
    #include"iostream"
    using namespace std;
    class PHANSO
    {
    private:
    int tu,mau;
    public:
    PHANSO(){}
    PHANSO(int _tu,int _mau=1)
    {
    tu=_tu;
    mau=_mau;
    }
    PHANSO(const PHANSO& src)
    {
    this->tu=src.tu;
    this->mau=src.mau;
    }
    void nhap()
    {
    cout<<"nhap tu: ";cin>>tu;
    cout<<"nhap mau: ";cin>>mau;
    }
    void xuat()
    {
    cout<<"phan so:= ";
    dongian();
    cout<<tu<<"/"<<mau<<endl;
    }
    friend istream & operator>>(istream &ist, PHANSO&b)
    {
    cout<<"nhap tu: "; ist>>b.tu;
    cout<<"nhap mau: "; ist>>b.mau;
    return ist;
    }
    friend ostream & operator<<(ostream &ost,PHANSO &b)
    {
    b.dongian();
    ost<<b.tu<<"/"<<b.mau<<endl;
    return ost;
    }
    int ucln(int a,int b)
    {
    a=abs(a);
    b=abs(b);
    while(a!=0&&b!=0)
    {
    if(a>b)
    a-=b;
    else
    b-=a;
    }
    return a;

    }
    void dongian()
    {
    int uc=ucln(tu,mau);
    tu/=uc;
    mau/=uc;
    }
    friend PHANSO operator +(PHANSO a,PHANSO b);
    friend PHANSO operator -(PHANSO a,PHANSO b);
    friend PHANSO operator *(PHANSO a,PHANSO b);

    };
    PHANSO operator +(PHANSO a,PHANSO b)
    {
    PHANSO temp;
    temp.tu=a.tu*b.mau+b.tu*a.mau;
    temp.mau=b.mau*a.mau;
    return temp;
    }
    PHANSO operator -(PHANSO a,PHANSO b)
    {
    PHANSO temp;
    temp.tu=a.tu*b.mau-b.tu*a.mau;
    temp.mau=b.mau*a.mau;
    return temp;
    }
    PHANSO operator *(PHANSO a,PHANSO b)
    {
    PHANSO temp;
    temp.tu=a.tu*b.tu-b.mau*a.mau;
    temp.mau=b.mau*a.mau;
    return temp;
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    PHANSO a,b(1),c(2,3);
    cin>>a;
    PHANSO Tong =a+b;
    cout<<" Tong hai phan so "<<a<<"+"<<b<<"="<<Tong<<endl;
    PHANSO Hieu =a-5;
    cout <<"Hieu="<<Hieu<<endl;
    PHANSO Tich =5*c;
    cout<<" Tich="<<Tich<<endl;
    cin.get();cin.get();
    return 0;
    }

  4. #4
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    Trích dẫn Nguyên bản được gửi bởi vuongpro1211 Xem bài viết
    minh co doan code k pit dung khong
    nen up len cho ae chem dum!!!
    mấy cái operator+-*/ bạn nên trả về là tham chiếu bạn ạ, như thế mới sử dụng đa năng hơn, bạn có thể thực hiện cộng trừ nhân chia với số đối tượng > 2 vẫn trả về kết quả chính xác
    I'll come back

  5. #5
    Ngày gia nhập
    09 2010
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi stupid_genius Xem bài viết
    mấy cái operator+-*/ bạn nên trả về là tham chiếu bạn ạ, như thế mới sử dụng đa năng hơn, bạn có thể thực hiện cộng trừ nhân chia với số đối tượng > 2 vẫn trả về kết quả chính xác
    minh thay de vay no cung chay binh thuong ma!!
    co khac j k nhi!!!
    Đã được chỉnh sửa lần cuối bởi vuongpro1211 : 12-08-2011 lúc 10:38 PM.

  6. #6
    Ngày gia nhập
    12 2009
    Bài viết
    28

    Mặc định đề bài hướng đối tượng tính tổng, hiệu, tích 2 phân số!!!

    Mình thấy nên trả về tham trị vì biến temp là biến local trong hàm khi return VS nó warning.
    Mặc dù chạy đúng nhưng 1 số trường hợp nó sai.

  7. #7
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Trích dẫn Nguyên bản được gửi bởi stupid_genius Xem bài viết
    mấy cái operator+-*/ bạn nên trả về là tham chiếu bạn ạ, như thế mới sử dụng đa năng hơn, bạn có thể thực hiện cộng trừ nhân chia với số đối tượng > 2 vẫn trả về kết quả chính xác
    Tuyệt đối không trả về tham chiếu với các operator+-*/
    Tham chiếu? Lấy chiếu ở đâu ra mà tham???
    Khi người ta viết c = a + b thì theo ngữ nghĩa mặc định, a và b không bị thay đổi. Vì vậy bạn không thể trả về tham chiếu đến a hay đến b được.
    Ngược lại với bạn nói, trả về value mới ra kết quả đúng. Nếu trả về tham chiếu (đến a hoặc b) thì biểu thức c = a + b + a + b sẽ không ra 2*(a + b) mà ra kết quả sai.

  8. #8
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    Trích dẫn Nguyên bản được gửi bởi fbchicken Xem bài viết
    Tuyệt đối không trả về tham chiếu với các operator+-*/
    Tham chiếu? Lấy chiếu ở đâu ra mà tham???
    Khi người ta viết c = a + b thì theo ngữ nghĩa mặc định, a và b không bị thay đổi. Vì vậy bạn không thể trả về tham chiếu đến a hay đến b được.
    Ngược lại với bạn nói, trả về value mới ra kết quả đúng. Nếu trả về tham chiếu (đến a hoặc b) thì biểu thức c = a + b + a + b sẽ không ra 2*(a + b) mà ra kết quả sai.
    hihi, xem lại sách đi bạn, mình làm nhiều bài tập phần này lắm rồi nên có kinh nghiệm như vậy đó, tùy các bạn thôi, ý kiến của mình là vậy đó, khi bạn không dùng một biến để gán dữ liệu cho a+b+a+b xem kết quả còn đúng không giả sử đề yêu cầu tính không dùng biến khác xem nào kết quả ra có đúng không, nếu bạn trả về tham chiếu thì lúc tính a+b+a+b bạn chỉ việc cout<<a là ra kết quả rồi, mình nói trả về tham chiếu để đúng vs mọi bài toán thôi, còn nếu đề không yêu cầu thì cứ làm theo ý các bạn, sr đóng góp ý kiến để chia sẻ kinh nghiệm mà bị phản đối cũng thấy hơi ngại
    I'll come back

  9. #9
    Ngày gia nhập
    11 2010
    Bài viết
    41

    Trích dẫn Nguyên bản được gửi bởi stupid_genius Xem bài viết
    hihi, xem lại sách đi bạn, mình làm nhiều bài tập phần này lắm rồi nên có kinh nghiệm như vậy đó, tùy các bạn thôi, ý kiến của mình là vậy đó, khi bạn không dùng một biến để gán dữ liệu cho a+b+a+b xem kết quả còn đúng không giả sử đề yêu cầu tính không dùng biến khác xem nào kết quả ra có đúng không, nếu bạn trả về tham chiếu thì lúc tính a+b+a+b bạn chỉ việc cout<<a là ra kết quả rồi, mình nói trả về tham chiếu để đúng vs mọi bài toán thôi, còn nếu đề không yêu cầu thì cứ làm theo ý các bạn, sr đóng góp ý kiến để chia sẻ kinh nghiệm mà bị phản đối cũng thấy hơi ngại
    Ý của @fbchick là đúng rồi. Chỉ trả tham chiếu với toán tử gán kết hợp như +=, -=, ... Còn toán tử 2 ngôi như +, -, *, / thì phải trả ra trị chứ. Còn cái dzụ của bạn là dùng 1 biểu thức a + b + a + b mà khi xuất kết quả là thằng a là xong ko cần biến tạm thì cái này chắc chỉ đối phó thôi, chứ chả có OOP tí nào.

    @Chủ topic cái bài này trong forum có rất nhiều bạn àh, chịu khó search đi. Với lại vừa đọc lt vừa vọc thì mới thấm chứ!
    i dont care who are u, where yr from, what u did , as long as u love me

  10. #10
    Ngày gia nhập
    11 2010
    Nơi ở
    TPHCM
    Bài viết
    9

    Trích dẫn Nguyên bản được gửi bởi vantrong Xem bài viết
    Ý của @fbchick là đúng rồi. Chỉ trả tham chiếu với toán tử gán kết hợp như +=, -=, ... Còn toán tử 2 ngôi như +, -, *, / thì phải trả ra trị chứ. Còn cái dzụ của bạn là dùng 1 biểu thức a + b + a + b mà khi xuất kết quả là thằng a là xong ko cần biến tạm thì cái này chắc chỉ đối phó thôi, chứ chả có OOP tí nào.

    @Chủ topic cái bài này trong forum có rất nhiều bạn àh, chịu khó search đi. Với lại vừa đọc lt vừa vọc thì mới thấm chứ!
    tks u very much!!!

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