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

Đề tài: Code chương trình tính giá trị đa thức trong OOP. Ý tưởng đã có nhưng khó triển khai

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

    Mặc định Code chương trình tính giá trị đa thức trong OOP. Ý tưởng đã có nhưng khó triển khai

    Chào các bạn! Mình có một bài tập hướng đối tượng như thế này: Viết một class DaThuc với mô tả như hình



    khi sử dụng sẽ nhập bậc n của đa thức, các hệ số và cuối cùng là nhập giá trị x để tính giá trị biểu thức!

    Nhưng constructor mình không biết phải khởi tạo cái gì cho đúng nữa nên mình làm đại. Constructor mặc định thì mình khởi tạo giá trị đa thức là bằng 0, constructor có tham số là bậc n thì mình khởi tạo một loạt các đơn thức rỗng như là x^n, x^n-1..., x^0 là = 1. Sau đó tui dùng phương thức thêm hệ số(tham số là một đơn thức) để nhập hệ số lần lượt cho từng đơn thức một. ý tưởng là vậy nhưng không biết triển khai như thế nào...mong các bạn hướng dẫn giúp mình! Thanks

    C++ Code:
    1. //DaThuc.h
    2.  
    3. #pragma once
    4.  
    5. #include <iostream>
    6. using namespace std;
    7. #include <vector>
    8.  
    9. struct OPERAND
    10. {
    11.     double a;
    12.     int power;
    13. };
    14.  
    15. class DaThuc
    16. {
    17. private:
    18.     vector<OPERAND> dathuc;
    19.     int n;
    20. public:
    21.     DaThuc();
    22.     DaThuc(int n);
    23.     DaThuc(const DaThuc & );
    24.     ~DaThuc();
    25.     void input();
    26.     void output();
    27.     OPERAND getop();
    28.  
    29.     void addOpeRand(OPERAND);
    30.     double _cal_value_from_x(double x);
    31. };

    C++ Code:
    1. //DaThuc.cpp
    2.  
    3.  
    4. #include "DaThuc.h"
    5.  
    6.  
    7. DaThuc::DaThuc()
    8. {
    9.     dathuc.resize(1);
    10.     for(int i=0; i<dathuc.size(); i++)
    11.     {
    12.         dathuc[i].a = 0;
    13.         dathuc[i].power = 0;
    14.     }
    15. }
    16.  
    17. DaThuc::DaThuc(int n) //Chỗ này mình không biết khởi tạo đơn thức như thế nào!
    18. {
    19.     this->n = n;
    20.     dathuc.resize(this->n);
    21. }
    22.  
    23. DaThuc::DaThuc(const DaThuc & src)
    24. {
    25.     this->dathuc.size() = src.dathuc.size();
    26. }
    27.  
    28. DaThuc::~DaThuc(void)
    29. {
    30. }
    31.  
    32. void DaThuc::input()
    33. {
    34.     cout<<"\nNhap vao bac cua da thuc: ";
    35.     int n; cin>>n;
    36.     dathuc.resize(n);
    37. }
    38.  
    39. OPERAND DaThuc::getop()
    40. {
    41.     return OPERAND;
    42. }
    43. void DaThuc::addOpeRand(OPERAND OP)
    44. {
    45.  
    46.     for(int i = 0; i<n; ++i)
    47.     {
    48.         cout<<"\nNhap so hang a"<<n-i<<":";
    49.         cin>>dathuc[i].a;
    50.     }
    51. }

    Bài làm còn nhiều thiếu xót mong các bạn hướng dẫn dùm nha!
    Thời khắc vẫn trôi
    Trăng nước vẫn chan hòa
    Tình yêu theo năm tháng
    Nở dần như cánh hoa...

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    82

    Có thể khởi tạo thế này. Chỉ là ví dụ cũng có thể bỏ qua hàm khởi tạo tham số với n vì nó không có nhiều ý nghĩa do chỉ có mỗi bậc(n).
    Code:
    DaThuc::DaThuc(int n) //Chỗ này mình không biết khởi tạo đơn thức như thế nào!
    {
        this->n = n;
        dathuc.resize(this->n);
    
        for(int i=0; i<dathuc.size(); i++)
        {
            dathuc[i].a = 0;
            dathuc[i].power = 0;
        }
    }

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

    Nhưng như vậy mình thấy cũng không đúng lắm, tại vì tham số mình truyền vào là bậc n mà trong vòng for mình khởi tạo các hệ số và lũy thừa đều bằng 0 thế thì bậc n truyền vào xem như vô nghĩa rùi!
    Thời khắc vẫn trôi
    Trăng nước vẫn chan hòa
    Tình yêu theo năm tháng
    Nở dần như cánh hoa...

  4. #4
    Ngày gia nhập
    04 2011
    Bài viết
    44

    bạn có thể khởi tạo một mảng A gồm n+1 phần tử với A[i] là hệ số của x^i
    như vậy hàm khởi tạo có thể là
    Code:
    class DaThuc{
    	private:
    		double *A;
    		int n;
    	public:
    		DaThuc(int x){
    			n = x;
    			A = new double[x+1];
    		}
    gương kia ngự ở trên tường...thế gian ai lười đc dường như ta..

  5. #5
    Ngày gia nhập
    08 2011
    Nơi ở
    /pentest
    Bài viết
    44

    Đọc bài chủ topic, thấy nhiều vấn đề quá, có vài lỗi sai:
    1.
    Code:
    OPERAND DaThuc::getop()
    {
        return OPERAND;
    }
    Có một số thứ vô nghĩa, như 2 Ctor, Dtor, copy Ctor...
    Code:
    DaThuc::DaThuc(int n) //Chỗ này mình không biết khởi tạo đơn thức như thế nào!
    {
        this->n = n;
        dathuc.resize(this->n);
    }
    
    DaThuc::DaThuc(const DaThuc & src)
    {
        this->dathuc.size() = src.dathuc.size();
    }
    
    DaThuc::~DaThuc(void)
    {
    }
    
    void DaThuc::input()
    {
        cout<<"\nNhap vao bac cua da thuc: ";
        int n; cin>>n;
        dathuc.resize(n);
    }
    
    OPERAND DaThuc::getop()
    {
        return OPERAND;
    }
    void DaThuc::addOpeRand(OPERAND OP)
    {
    
        for(int i = 0; i<n; ++i)
        {
            cout<<"\nNhap so hang a"<<n-i<<":";
            cin>>dathuc[i].a;
        }
    }
    Theo mình có thể ý của bạn có thể dễ biểu đạt hơn nếu bạn có khai báo mẫu trong file .h
    Code:
    #include <iostream>
    using namespace std;
    #include <vector>
    
    struct OPERAND
    {
        double a;
        int power;
    };
    
    class DaThuc
    {
    private:
        vector<OPERAND> dathuc;
        int n;
    Phần public:
    Code:
    public:
        friend ostream& operator<<(ostream&, dathuc const&);
        friend istream& operator>>(istream&, dathuc&)
    Bạn có thể thêm một số phuơng thức khác thiết thực hơn nếu cần.
    We are oft to blame in this...'Tis too much proved.
    - That with devotion's visage and pious action we do sugar o'er the devil himself.

Các đề tài tương tự

  1. Lập trình C++ Đoạn code trong tạo cây có lỗi khó hiểu
    Gửi bởi xuandao20294 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 27-10-2013, 08:43 PM
  2. Mảng trên C khó hiểu trong khai báo mảng
    Gửi bởi leafdark trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 04-07-2013, 09:14 PM
  3. Lỗi khai báo biến trong C? Giúp mình sửa code.
    Gửi bởi vovietnghia trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 14-10-2010, 09:12 PM
  4. Stack trong C# triển khai như thế nào?
    Gửi bởi Xninety trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 18-04-2010, 08:46 AM
  5. Biển và Đảo ! Giải thuật và cách triển khai trong C++
    Gửi bởi rox_rook trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 01-02-2008, 01:51 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