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

Đề tài: Đề mẫu HDT | Bài tập lập trình hướng đối tượng?

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

    Mặc định Đề mẫu HDT | Bài tập lập trình hướng đối tượng?

    Sắp tới là mình thi LTHDT rồi, thầy có cung cấp 1 số đề mẫu và nói có thể ra trong đó, nhưng sao thấy mấy cái đề nó lạ wa' (ko giống những gì trong lớp dc học ). Hi vọng các bạn vào topic này giải dùm, vừa tăng kiến thức của các bạn, vừa là tài liệu tham khảo trong forum cho các bạn khác sau này, mà cũng vừa giúp mình, 1 công 3 việc lun!!!
    Note:
    _Bạn nào tốt bụng thì vào đây giải giúp dùm mình, mình rất biết ơn!
    _Bạn nào không muốn giúp thì cũng ko sao, miễn đừng spam là dc

    Code:
    Đề I
    
    Câu 1:
    a) Cho lớp IntList cài đặt danh sách móc nối các số nguyên được khai báo như sau:
    
    class IntList{
    public:
    IntList(); // khởi tạo danh sách rỗng kích thước bằng 100
    IntList(int Size); // khởi tạo danh sách rỗng kích thước bằng Size
    int getFirst(); // trả về giá trị phần tử ở đầu danh sách
    int getLast(); // trả về giá trị phần tử ở cuối danh sách
    void delFirst(); // xóa phần tử ở đầu danh sách
    void delLast(); // xóa phần tử ở cuối danh sách
    int getSize(); // trả về số phần tử của danh sách
    private:
    int * data
    int size;
    };
    
    Dựa vào lớp IntList hãy kế thừa và xây dựng lớp IntStack gồm các phương thức sau:
    
    IntStack(); // khởi tạo stack rỗng kích thước bằng 100
    IntStack(int Size); // khởi tạo stack rỗng kích thước bằng Size
    Bool isEmpty(); // kiểm tra stack rỗng
    int Pop(); // loại bỏ phần tử ở đỉnh stack
    void Push(int); // thêm 1 phần tử vào đỉnh stack
    
    b) Thế nào là ràng buộc động, cho ví dụ? Cách thức trình biên dịch giải quyết ràng buộc động?
    
    Câu 2:
    a) Cho lớp Song và một đoạn chương trình như sau:
    
    class Song{
    public:
    friend void sort(Song [], int size);
    private:
    char * title;
    char * content;
    };
    int main()
    {
    Song songs[2];
    songs[0] = new Song(“Yesterday”,””);
    songs[1] = new Song();
    sort(songs,2);
    return 0;
    };
    
    Lớp Song có cần hủy tử và các hàm toán tử gán, cấu tử copy không, tại sao? Hãy cài đặt các hàm này?
    
    b) Giả sử trong chương trình người ta muốn đếm số các đối tượng thuộc lớp Song bằng cách sử dụng một biến thành viên tĩnh, hãy viết các hàm cần thiết và đoạn chương trình đưa ra màn hình các đối tượng thuộc lớp Song.
    Đã được chỉnh sửa lần cuối bởi [WuTang] : 27-06-2010 lúc 09:14 PM.

  2. #2
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    chẳng lạ cái j hết.Nếu có lạ là do bạn không chịu học .Post bài nhờ giải từ A->Z .không cố gắng tự làm.
    Hãy tự làm,sai chỗ nào thì post lên hỏi.mọi người giúp.

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

    Trích dẫn Nguyên bản được gửi bởi tauit_dnmd Xem bài viết
    chẳng lạ cái j hết.Nếu có lạ là do bạn không chịu học .Post bài nhờ giải từ A->Z .không cố gắng tự làm.
    Hãy tự làm,sai chỗ nào thì post lên hỏi.mọi người giúp.
    Mình đã note ở trên rồi, bạn sẵn lòng thì giúp, ko thì vào đây xem tham khảo thôi cũng dc, mình ko thix pm lại kỉu nài "ko ai rãnh giải từ a -> z cho bạn đâu" (đại loại như vậy, kỉu "nhiệt tình" nài mình thấy hoài ngán rồi, bạn ko rãnh thì để bạn khác rãnh), vì mình phải thi nhiều môn lận nên nếu có thời gian làm hết thì đã làm roài! Vả lại mình ko giỏi lập trình, và cũng ko phải ngành lập trình, hk nài lại trúng phải gv ko hợp í cho lắm, các bạn trong lớp mình cũng thế, đang mong mỏi sự giúp đỡ nhiệt tình từ các bạn, mình cũng đoán trước bên dưới sẽ có ng` đáp lại thế nhưng mình chỉ đại diện post đề lên thôi, có ném gạch ném tạ gì cũng dc, mình sẵn sàng tiếp nhận, chỉ mong các bạn giúp thì giúp, ko thì đừng spam, cảm ơn các bạn trước!
    P/S: ah`, mà mình cũng ko phải up lên, ko cố gắng tự làm mà để mặc các bạn làm từ a -> z đâu, mình cũng có làm với nhóm bạn, nhưng mún vào đây tham khảo cách làm của các bạn để đối chiếu đúng sai thôi!
    Đã được chỉnh sửa lần cuối bởi [WuTang] : 27-06-2010 lúc 05:00 PM.

  4. #4
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    Trích dẫn Nguyên bản được gửi bởi [WuTang] Xem bài viết
    Mình đã note ở trên rồi, bạn sẵn lòng thì giúp, ko thì vào đây xem tham khảo thôi cũng dc, mình ko thix pm lại kỉu nài "ko ai rãnh giải từ a -> z cho bạn đâu" (đại loại như vậy, kỉu "nhiệt tình" nài mình thấy hoài ngán rồi, bạn ko rãnh thì để bạn khác rãnh), vì mình phải thi nhiều môn lận nên nếu có thời gian làm hết thì đã làm roài! Vả lại mình ko giỏi lập trình, và cũng ko phải ngành lập trình, hk nài lại trúng phải gv ko hợp í cho lắm, các bạn trong lớp mình cũng thế, đang mong mỏi sự giúp đỡ nhiệt tình từ các bạn, mình cũng đoán trước bên dưới sẽ có ng` đáp lại thế nhưng mình chỉ đại diện post đề lên thôi, có ném gạch ném tạ gì cũng dc, mình sẵn sàng tiếp nhận, chỉ mong các bạn giúp thì giúp, ko thì đừng spam, cảm ơn các bạn trước!
    Hic. Đừng đổ lỗi cho việc học quá nhiều môn.Tôi nói j?

    Post bài nhờ giải từ A->Z .không cố gắng tự làm.
    Hãy tự làm,sai chỗ nào thì post lên hỏi.mọi người giúp.
    Bạn có thấy dòng màu đỏ không? .
    Đã được chỉnh sửa lần cuối bởi tauit_dnmd : 27-06-2010 lúc 05:11 PM.

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

    Trích dẫn Nguyên bản được gửi bởi tauit_dnmd Xem bài viết
    Bạn có thấy dòng màu đỏ không? .
    Hix, thấy và hỉu, nhưng thôi, mình lập ra topic nài mục đích chủ yếu học hỏi, ko mún mất lòng bạn nào hết, có gì sai cho xin lỗi trước, trở lại vấn đề chính nha!
    Đã được chỉnh sửa lần cuối bởi [WuTang] : 27-06-2010 lúc 05:23 PM.

  6. #6
    Ngày gia nhập
    05 2010
    Nơi ở
    Cách Mạng Tháng 8
    Bài viết
    205

    Mặc định Đề mẫu HDT | Bài tập lập trình hướng đối tượng?


    @chủ topic : thế bạn đã làm được những gì rùi? Post code lên chúng tôi sửa cho.
    Bây giờ mà làm từ đầu tới cuối thì lười lắm, ngán nữa.
    Nothing last forever !!

  7. #7
    Ngày gia nhập
    05 2010
    Nơi ở
    Cách Mạng Tháng 8
    Bài viết
    205


    Tôi hướng dẫn 1 chút nhé:
    - Câu 1 dùng kế thừa private (nếu ko thik kế thừa thì cũng có cách khác đấy)
    - Câu 2 : Nếu lớp có dữ liệu là con trỏ và có cấp phát động thì phải có đủ bộ 4 : Constructor, Copy constructor, assignment operator và destructor nếu không muốn có vấn đề gì về bộ nhớ.
    Bạn hãy tự viết các phương thức này, nếu bây giờ mà vẫn không biết viết thì ... chắc thi rớt thật đấy.
    Nothing last forever !!

  8. #8
    Ngày gia nhập
    04 2010
    Bài viết
    6

    Bài làm:

    Câu 1:
    Code:
    Đề:
    class IntList{
    public:
    IntList(); // khởi tạo danh sách rỗng kích thước bằng 100
    IntList(int Size); // khởi tạo danh sách rỗng kích thước bằng Size
    int getFirst(); // trả về giá trị phần tử ở đầu danh sách
    int getLast(); // trả về giá trị phần tử ở cuối danh sách
    void delFirst(); // xóa phần tử ở đầu danh sách
    void delLast(); // xóa phần tử ở cuối danh sách
    int getSize(); // trả về số phần tử của danh sách
    private:
    int * data
    int size;
    };
    a ) Kế thừa lớp IntList

    Code:
    class IntStack :public IntList
    {
        public:     
            IntStack();
            IntStack(int Size);
            Bool isEmpty()const;
            void Pop();
            void Push(int);
        private:
            int Topidx;        
    }
    
    IntStack::IntStack()
    {
        IntList::IntList();
        Topidx=-1;
    }
    
    IntStack::IntStack(int Size)
    {
        IntList::IntList(Size);
        Topidx=-1;
    }
    
    Bool IntStack::isEmpty()const
    {
        return ( Topidx = = - 1 )
    }
    
    void IntStack::Pop()
    {
        IntList::delFirst();
        If  (topidx>=0) topidx--;
    }
    
    void IntStack::Push(int d)
    {
    // Hàm này không xây dựng được vì trong lớp IntList không có hàm nào chèn một phần tử vào danh sách.    
    }
    b ) Các bạn giúp mình câu b nhé, chưa được học nó nên không biết

    Câu 2:

    a ) Lớp Song nêu trên cần :
    - Hàm hủy tử vì trong lớp Song có sử dụng biến con trỏ , ta cần dùng hàm hủy tử để giải phóng bộ nhớ cấp phát cho con trỏ khi không dùng đến nữa.
    - Hàm cấu tử copy có thể không cần thiết vì ta thấy chương trình chưa dùng.đến
    - Hàm cấu tử gán vì trong đoạn chương trình chính ( main ) có sử dụng toán tử gán cho đối tượng của lớp .

    -> cái đặt các hàm : hủy tử , cấu tử copy, toán tử gán .
    Code:
    class Song
    {
    private:
                char *title;
                char *content;
            public:
                friend void sort(Song [],int size);
                Song();  //  Hàm cấu tử mặc định
                Song(char *,char *);  //  Hàm cấu tử có 2 tham số truyền vào 
                ~Song();  //  Hàm hủy tử
    Song(const Song &);  // Cấu tử copy
                const Song &operator=(const Song &s);  //  Toán tử gán
                static int cout;  //  Biến thành viên tĩnh dùng để đếm số lượng đối tương Song
                friend void Print();
    };
    
            Song::Song()    //Hàm cấu tử mặc định
            {
                    title=new char [100];
                    content=new char [100];
    count++;  //  Tăng đối tượng Song lên một đơn vị mỗi khi một đối tượng Song sinh ra
    }
    
    Song::Song(char *title1,char *content1)   // Cấu tử có 2 tham số
    {
    title=new char [strlen(title1];    
    content=new char [strlen(content1)];
    strcpy(title,title1);
    strcpy(content ,content1)
    count++;  // Tăng đối tượng Song lên một đơn vị mỗi khi một đối tượng Song sinh ra
    }
    
    Song::Song(const Song &s)
    {
    if (title!=NULL)    delete []title;
    if (content!=NULL)    delete []content;
    title=new char [strlen(s.title)];    
    content=new char [strlen(s.content)];
    strcpy(title,s.title);
    strcpy(content ,s.content)
    count++;  // Tăng đối tượng Song lên một đơn vị mỗi khi một đối tượng Song sinh ra
    }
    
    Song::~Song()
    {
        if (title!=NULL)    delete [] title;
        if (content!=NULL)    delete []content;
    count--;  // Giảm đối tượng Song đi một đơn vị mỗi khi một đối tượng Song bị xóa
    }
    
    const Song &Song::operator=(const Song &s)
    {
    if (title!=NULL)    delete []title;
    if (content!=NULL)    delete []content;
    title= new char[strlen(s.title)];
    content= new  char[strlen(s.content)];
    strcpy(title,s.title);
    strcpy(content ,s.content)
    return s;
    }
    b) Để đếm số lượng đối tượng Song ta dùng thành phần tĩnh count, trong các hàm cấu tử mặc định, cấu tử có tham số, cấu tử copy ta tăng biến count lên một đơn vị, còn trong hàm hủy tử ta giảm biến count đi 1 đơn vị.
    Để khởi gán cho thành phần tĩnh ta không được khởi gán trong lớp mà phải khởi tạo nó ở ngoài lớp với cấu trúc như sau: static int Song::count=0;
    *) Để đưa ra màn hình các đối tượng thuộc lớp Song ta phải viết thêm một hàm Print như sau
    Code:
    void Print()
                {
                    int i;
                    for (i=0;i<=count;i++)
                    {
                        cout <<”\n Title     : “<<title;
                        cout <<”\n Content: “<<content;
    }
    }
                 Đoạn chương trình thực hiện việc hiển thị các đối tượng thuộc lớp Song lên màn hình
    
                int main()        
                {
    Song s[4];
                    s[0]=new Song(“aaa”,”bbb”);
                    s[1]=new Song(“bbb”,”ddd”);
                    s[2]=new Song(“eee”,”fff”);
                    s[3]=new Song(“ggg”,”hhh”);
                    Print();
                    getch();
                    Return 0;
    }
    P/S:
    Các bạn kiểm/sửa giúp mình với nha!
    Các bạn chỉ mình làm sao để cho nó dzô khung code với, nhìn mấy dòng code toàn màu đen đuối wa'
    Đã được chỉnh sửa lần cuối bởi [WuTang] : 01-07-2010 lúc 01:10 AM.

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

    Up! Up! Up! Up! Up!

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