Đánh giá, nhận xét, review các công ty tuyển dụng
Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Làm phép tính với 1 dãy phân số như thế nào?

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

    Question Làm phép tính với 1 dãy phân số như thế nào?

    Viết một chương trình thực hiện các công việc sau:

    1. Xây dựng lớp PS (phân số) có hai thuộc tính: tử số, mẫu số. Các phương thức: nhập, hiển thị, rút gọn.

    2. Xây dựng lớp PS1 kế thừa lớp PS và có thêm các phương thức cộng, nhân hai phân số.

    3. Nhập một dãy các phân số rồi cho biết tổng các phân số của dãy, tích các phân số của dãy.
    Mình có 1 bài tập như trên, 2 ý đầu thì mình đã làm được rồi (làm được phép tính với 2 phân số nhập vào từ bàn phím). Còn ý thứ 3 là làm phép tính với 1 dãy các phân số được nhập vào thì mình nghĩ mãi vẫn chưa ra cách giải. Đây là code của mình, lưu ý là bài này nó bắt phải làm bằng cách xây dựng lớp kế thừa.

    #include"iostream.h"
    #include"conio.h"
    int t;
    class ps
    {
    public:
    int ts,ms;
    void nhap()
    {
    cout<<"Nhap tu so:";cin>>ts;
    cout<<"Nhap mau so:";cin>>ms;
    }
    void hienthi()
    {
    if (ts==0) cout<<0;
    else if (ts==ms) cout<<1;
    else if (ms==0) cout<<"Phan so ko ton tai";
    else cout<<ts<<"/"<<ms;
    }
    void rutgon();
    };
    int ucln(int a,int b)
    {
    int c;
    do
    {
    c=a%b;
    a=b;
    b=c;
    }
    while(c!=0);
    return a;
    }
    void ps::rutgon()
    {
    t=ucln(ts,ms);
    ts=ts/t;
    ms=ms/t;
    }
    class ps1:public ps
    {
    public:
    void nhap1()
    {
    ps::nhap();
    }
    void hienthi1()
    {
    ps::hienthi();
    }
    void rutgon1()
    {
    ps::rutgon();
    }
    ps1 cong(ps1 p1,ps1 p2)
    {
    ps1 p3;
    p3.ts=p1.ts*p2.ms+p2.ts*p1.ms;
    p3.ms=p1.ms*p2.ms;
    return p3;
    }
    ps1 nhan(ps1 p1,ps1 p2)
    {
    ps1 p3;
    p3.ts=p1.ts*p2.ts;
    p3.ms=p1.ms*p2.ms;
    return p3;
    }
    };
    void main()
    {
    clrscr();
    ps1 p1,p2,c,d;
    p1.nhap1();
    p1.rutgon1();
    p2.nhap1();
    p2.rutgon1();
    cout<<"Phan so thu nhat la:";p1.hienthi1();
    cout<<"\nPhan so thu hai la:";p2.hienthi1();
    c=d.ps1::cong(p1,p2);
    cout<<"\nTong hai phan so la:";c.rutgon1();c.hienthi1();
    c=d.ps1::nhan(p1,p2);
    cout<<"\nTich hai phan so la:";c.rutgon1();c.hienthi1();
    getch();
    }
    Giúp mình với, môn này sắp thi rồi mà mình lại kém môn này lắm . Cám ơn các bạn trước nha.

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Thâm sơn cùng cốc
    Bài viết
    824

    Sử dụng toán tử thôi cài đặt các toán tử + ,- , * , / cho lớp phân số.Mình giúp bạn một toán ,gán , so sánh hai phân số.
    Còn lại - , nhân và chia bạn tự viết lấy nha.

    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. class PS
    4. {
    5. public:
    6.     PS():ts(0),ms(1){};
    7.     PS(int a,int b):ts(a),ms(b){};
    8.     int ts,ms;
    9.     ~PS(){};
    10.  
    11.     //Cai dat cac toan tu nam luon trong lop ma khong su dung friend
    12.  
    13.     //Toan tu cong doi so thu nhat la doi tuong lop
    14.     //Doi so thu 2 la ps2
    15.     PS operator+(const PS& ps2) const
    16.     {
    17.         return PS(this->ts*ps2.ms,this->ms*ps2.ts);
    18.     }
    19.  
    20.     //Toan tu gan ve trai la doi tuong, ve phai la ps1
    21.     PS & operator=(const PS& ps1)
    22.     {
    23.         this->ts=ps1.ts;
    24.         this->ms=ps1.ms;
    25.         return *this;
    26.     }
    27.  
    28.     //Toan tu bit luong dung de in ra phan so
    29.     friend ostream& operator<<(ostream& out,const PS& ps)
    30.     {
    31.         out<<ps.ts<<"/"<<ps.ms;
    32.         return out;
    33.     }
    34.  
    35.     //Vi du toan tu so sanh 2 phan so bang nhau
    36.     bool operator==(const PS& ps1) const
    37.     {
    38.         return (ts*ps1.ms==ms*ps1.ts);
    39.     }
    40.  
    41.     //Vi du overloading toan tu == giua phan so voi so thuc
    42.     bool operator==(const float &value) const
    43.     {
    44.         return ((float)(ts/ms)==value);
    45.     }
    46.  
    47.     //Phuong thuc rut gon phan so
    48.     void Reduce()
    49.     {
    50.         int a=ts;
    51.         int b=ms;
    52.         while (b!=0)
    53.         {
    54.             int r=a%b;
    55.             a=b;
    56.             b=r;
    57.         }
    58.         ts/=a;
    59.         ms/=a;
    60.     }
    61. };
    62.  
    63. int main()
    64. {
    65.     PS a(1,1);
    66.     cout<<a<<endl;
    67.     a=PS(4,2);
    68.     cout<<a<<endl;
    69.     a.Reduce();
    70.     cout<<a<<endl;
    71.     cout<<(a==2)<<endl;
    72.     system("pause");
    73.     return 0;
    74. }
    Đã được chỉnh sửa lần cuối bởi Tadius : 01-06-2010 lúc 09:05 AM.

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

    Ko được bạn ơi, bài của bạn mình cho vào chạy thử thì có 13 lỗi, sau khi thêm .h đằng sau #include <iostream> thì còn 6 lỗi mà mình không biết sửa như thế nào. Với lại trong bài của bạn nhiều lệnh mình không hiểu. Nói thật môn Lập trình hướng đối tượng này ở trường cô giáo dạy đọc chép như văn nên mình cảm thấy như đang trên mây ấy nản lắm .

  4. #4
    Ngày gia nhập
    04 2010
    Nơi ở
    Thâm sơn cùng cốc
    Bài viết
    824

    Trời ạ. Vẫn xài Turbo C++ à?
    Vậy thì thêm cái .h vào đằng sau và bỏ dòng using namespace std đi
    Bây giờ vẫn còn người xài TC++ thì chịu thật, các trường đại học nên quăng phách nó đi rồi.Lỗi thờ mất xừ 6 đến 7 năm rồi còn gì.

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

    Hix, trường mình vẫn dạy với Turbo C++
    Xin hỏi thế hiện nay mọi người đang dùng cái gì? Visual Studio à?
    Vậy thì thêm cái .h vào đằng sau và bỏ dòng using namespace std đi
    Vẫn chưa được , còn 5 lỗi. Hix mà kể cả chạy được đến lớp GV mà hỏi cũng ko biết giải thích thế nào (mình thấy mấy lệnh này nó hơi khang khác với mấy thứ học trên lớp thế nào ấy), lại bắt làm theo những gì cô dạy thì chịu.

  6. #6
    Ngày gia nhập
    04 2010
    Nơi ở
    Thâm sơn cùng cốc
    Bài viết
    824

    Mặc định Làm phép tính với 1 dãy phân số như thế nào?

    Thôi
    không dùng cái TC++ nữa
    Cũng chả cần động đến VC++.
    Down cái Dev C++ 49MB về
    cài là chạy được ngon lành, tuy nhiên phải giữ cái code như ban đầu.
    Nếu đọc mà không hiểu được rồi phân tích và làm tương tự cho mấy cái toán tử - , *, / thì thật là nan giải đó.

    Học lập trình phải có đam mê, nếu không có đam mê sẽ chỉ đi đến vũng lầy mà thôi

  7. #7
    Ngày gia nhập
    09 2009
    Nơi ở
    205Bee
    Bài viết
    231

    Trích dẫn Nguyên bản được gửi bởi tieuquynd Xem bài viết
    Hix, trường mình vẫn dạy với Turbo C++
    Xin hỏi thế hiện nay mọi người đang dùng cái gì? Visual Studio à?

    Vẫn chưa được , còn 5 lỗi. Hix mà kể cả chạy được đến lớp GV mà hỏi cũng ko biết giải thích thế nào (mình thấy mấy lệnh này nó hơi khang khác với mấy thứ học trên lớp thế nào ấy), lại bắt làm theo những gì cô dạy thì chịu.
    down cái DevC về mà xài bạn à. Nhưng xài thằng Visual là sướng nhất

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