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

Đề tài: Phương thức Better cho chương trình, giúp em hoàn thiện

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

    Mặc định Phương thức Better cho chương trình, giúp em hoàn thiện

    Chào các bac pro. Em có bài thi này khó quá, muốn mong các bác giúp giùm. Em là thanh viên mới tinh.
    Bài toán: Xem kiểu dữ liệu trừng tượng cùng với thuật toán tìm phần tử tốt nhất(theo điều kiện nào đó) mô tả trong lớp trừu tượng BestAlg (abstract class) sau đây. Lập trình viên sẽ tổ chức dữ liệu và cài đặt các phương thức thích hợp trong từng lớp con cụ thể (concrete class) của lớp BestAlg tù theo mỗi bài toán cần giải quyết.
    -----------------
    C++ Code:
    1. class BestAlg{
    2. public:
    3. virtual void * FirstItem()=0;// Lấy phần tử đầu tiên: trả về NULL nếu hết dữ liệu
    4. virtual void * NextItem()=0;// Lấy phần tử kế tiếp: trả về NULL nếu hết dữ liệu
    5. virtual int Better(Void* Item1, Void* Item2)=0; //Kiểm tra Item1 có tốt hơn Item2 không
    6. void* BestElement();//tìm phần tử tốt nhất.
    7. };
    8. void* BestAlg::BestElement(){
    9. void *best=FirstItem(); void *cur=NextItem();
    10. while (cur!=NULL){
    11. if (Better(cur,best)){
    12. best=cur;
    13. }
    14. cur=NextItem();
    15. }
    16. return best;
    17. }
    ----------------------
    a. Trường hợp cần tìm phần tử tốt nhất trên mảng số thực, lập trình viên có thể tiến hành cài đặt sau:
    C++ Code:
    1. #include<vector>
    2. using namespace std;
    3. class BestFloat:Pubic BestAlg{
    4. protected:
    5. vector<float> Data; int curIdx;
    6. public
    7. BestFloat(int size, float a[]){
    8. Data.resize(size);
    9. for i=0;i<Data.size();i++){
    10. Data[i]=a[i];
    11. }
    12. curIdx=0
    13. }
    14.  
    15. void* getItem(int j){
    16. if(j>=Data.size()||j<0){
    17. return NULL;
    18. }
    19. return &Data[j];
    20. }
    21. vitual void* FirstItem(){
    22. curIdx=0 ;
    23. return getItem(curIdx);
    24. }
    25. vitual void* NextItem(){
    26. curIdx++;
    27. return getItem(curIdx);
    28. }
    29.  
    30. vitual int Better(void* Item1, void* Item2){
    31. //Viết thêm mã nguồn cần viết.
    32. }
    33. };
    -----------------
    câu a: Bạn hãy viết b ổ sung mã nguồn cần viết cho phương thức Better() nếu cần phải tìm phần tử nhỏ nhất trong mảng.
    câu b: Nếu cần phải tìm phần tử dương nhỏ nhất trong mảng các số thực, lập trình viên có thể viết lớp MinPositiveFloat kế thừa từ BestFloat như sau:

    C++ Code:
    1. class MinPositiveFloat: public BestFloat{
    2. //cần phải viết mã nguồn đặc biệt hóa...

    Theo bạn thì những phương thức nào cần phải viết đặc biệt hóa cho lớp MinPositiveFloat? hãy viết mã nguồn cho phương thức đó.
    Câu c: Giả sử cần tìm phần tử tốt nhất trong ma trận vuông n x n có dạng các phần tử phía trên đường chéo chính đều bằng 0. Đối với ma trận loại này ta chỉ cần lưu các phần tử nằm bên dưới đường chéo chính bởi vì tất cả các phần tử còn lại đều bằng 0. Một lập trình viên muốn phát triển lớp đối tượng cho các thuật toán ma trận tam giác dưới bằng cách kế thừa lớp BestFloat như dưới đây(bên trong bộ nhớ vẫn lưu mảng động một chiều dựa trên kiểu vector<T>).
    Code:
    class Matrix (int n);//Hàm tạo construtor: ma trận cấp n x n
    void Setij(int i, int j, float x);// đặty số x vào dòng i cột j
    // và các phương thức khác.
    };
    Bạn hãy thực hiện công việc sau đâycho lập trình viên đó.
    Câu c1: viết mã nguồn cài đặt hàm tạo Matrix(): chú ý dung lượng bộ nhớ xin cấp phát
    Câu c2: viết mã nguồn cài đặt phương thức Setij(): chú ý điều kiện ràng bộc mà các chì số i, j phải thỏa mãn.
    Câu c3: nếu cần tìm phần ử dương nhỏ nhất trong ma trận thì cần phải viết đặc biệt hóa phương thức nào khác hay không? Hãy giải thích rõ trả lời của bạn.
    Câu c4: Nếu cần tìm phần ử dương nhỏ nhất trên đường chéo chính thì những phương thức nào cần phải viết đặc biệt hóa? Viết mã nguồn minh họa.

    Câu d: giả sử "điều kiện dương" trong các câu b và câu c có thể thao thế bởi điều kiện khác( chẳng hạn âm, khác không, số nguyên chẵn...) tùy theo tình hình bạn có thể đề xuất giải quyết thích hợp.


    -----------
    Các bác giúp em với vì đây là một bài tập thật khó mà em gửi lên lần đầu tiên. Lần sau em sẽ post lên tiếp những bài tập khác. Giải càng nhanh càng ốt nghe các bac C/C++.
    Thanks alot!!!!
    Trả lời cùng với trích dẫn

    Vui lòng để tag vào trong tag code, và để đúng diễn đàn. Đọc Nội quy để biết thêm chi tiết.
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 21-03-2009 lúc 10:35 PM. Lý do: Nhắc nhở vi phạm

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Các bác giúp em với vì đây là một bài tập thật khó mà em gửi lên lần đầu tiên. Lần sau em sẽ post lên tiếp những bài tập khác. Giải càng nhanh càng ốt nghe các bac C/C++.
    Nếu bạn còn tiếp tục cái kiểu nói giải dùm như thế này thì sẽ không có ai rảnh mà đọc thread của bạn đâu nhé.
    Code bỏ vào thẻ code, đây là C not C++. Đọc kĩ nội qui trước khi post bài, keep posting this way is really annoying !

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    21

    Em sorry bác Rox_rook. Em bị nhầm box. Tuy nhiên có thể chuyển giúp em wa c++ hoặc viết thuật toán của nó ở dạng C cũng được. Em không có ý nhờ giải giúp mà muốn chia sẻ để các pác đưa ra ý kiến cho em học hỏi và cùng bàn luận. Ở đây bác không nên bắt bẻ ngôn từ của e vì có thể em muốn diễn đạt nhưng văn vả ko ổn. hehehehe Cười cái cho vui chư căng thẳng wa mệt mỏi.

  4. #4
    Ngày gia nhập
    02 2008
    Bài viết
    21

    aiza. Hổng có bạn nào có thể giúp mình bài này sao?

  5. #5
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Một điều trước khi xem bài của bạn phải nói bạn lập trình kiểu gì thế. Tuy đưa code lên nhưng bạn cũng phải trình bày một cách rõ ràng thì anh em mới đọc chứ. Trình bày suông thế àh.
    Không biết ghi gì luôn ...

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

  1. Hà Nội [GLUT/C] Hoàn thiện đoạn code này giúp mình - có trả công
    Gửi bởi MrChicKen_NAD trong diễn đàn Việc làm IT(tự do)
    Trả lời: 0
    Bài viết cuối: 11-07-2013, 09:58 AM
  2. Bài tập C Anh em giúp em hoàn thiện cái bài tập quản lý sinh viên.
    Gửi bởi dalamaco trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 03-01-2013, 03:37 PM
  3. Kỹ thuật C Độ rộng tối thiểu trong C/C++, giúp mình
    Gửi bởi tuant2n 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: 16-10-2010, 07:15 PM
  4. Hoàn thiện lớp nhân viên giúp mình
    Gửi bởi hellangelhp trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 27-10-2008, 11:05 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