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

Đề tài: Bài tập C++ về class

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

    Wink Bài tập C++ về class

    Mình đang tự coi C++ đến phần lập trình cấu trúc và hướng đối tượng mà không hiểu lắm bạn nào có bài tập nào nhỏ nhỏ về vấn đề này cho mình xin để mình làm thử với mình chưa học qua hàm hủy với bạn gì đâu v..v...đang sờ đến đoạn class thui hà.Cám ơn các bạn rất nhiều ( đừng có bài nào về đồ họa vì mình không coi đoạn đó)

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Cậu thử làm bài "các phép toán trên phân số" của huynguyen đề ra ấy.

    Làm thử cả struct và class.
    Keep moving forward!

    ... Retired ...

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

    Bạn cứ đem mấy bài bạn làm rồi viết lại hết, dùng class, struct. Ban sẽ hiểu ngay vấn đề . Giờ mình tạm lấy 1 bài mình làm rồi chuyển qua class bạn sẽ thấy ngay vấn đề. Bài này là tính ra ma trận xoắn ốc.
    Phiên bản không class :
    PHP Code:
    #include <iostream>
    #include <iomanip>

    /*Biến cục bộ đây*/
    int widthheight;
    int Grid[20][20];

    /*Các hàm xử lý đây*/
    void calculate_magic();
    void construct_grid();
    void print_result();
    void read_input_from_user();


    int main(){

      
    read_input_from_user();
      
    construct_grid();
      
    calculate_magic();
      
    print_result();
      return 
    0;
    }

    void read_input_from_user(){
      
      
    cout << "[ Enter width length ]" << endl;
      
    cout << "[ -width : ";
      
    cin >> width;
      
    cout << "heigth: ";
      
    cin >> height;
    }

    void construct_grid(){
     
      
    width += 2;
      
    height += 2;
      for (
    int x 0widthx++){
        for (
    int y 0heighty++){
          if (
    x*(width 1)*y*(height 1) == 0)
            
    Grid[x][y] = -1;
          else
            
    Grid[x][y] = 0;
        }    
      }    
    }

    void print_result(){
      
      
    cout << "\n\n\n RESULT : \n";
      for (
    int x 1width 1x++){       
        for (
    int y 1height 1y++){
          
    cout << setw(5) << Grid[x][y];
        }
        
    cout << endl << endl;
      }      
      
    }
    void calculate_magic()
    {
      
    int row_step 0col_step 1
          
    11
          
    mark 1;
      do{
        do{
          
    Grid[r][c] = mark++;
          
    += row_step;
          
    += col_step;
        }
        while(
    >= && width &&  >= 
                     
    && height && Grid[r+row_step][c+col_step] == 0);

        if(
    row_step == 0){
          
    row_step col_step row_step;
          
    col_step 0;
        }
        else{
          
    col_step col_step row_step;
          
    row_step 0;
        }

      }while(
    Grid[r][c] == 0);

    Bây h viết lại thành class xem nó có gì khác :

    PHP Code:
    #include <iostream>
    #include <iomanip>

    /*Tạo 1 class Board cho nó oai^^*/
    class Board{
      
    /*Các hàm thành phần bây h khai báo ở đây*/
      
    public :
        
    void calculate_magic();
        
    void construct_grid();
        
    void print_result();
        
    void read_input_from_user();
      
      
    /*Các dữ liệu cục bộ bây h cho vào đây, và bây giờ chỉ*/
      /*có các hàm trong class này được đụng tới nó thôi, 
      /*cái này gọi là sự đóng gói (encapsulation)*/
      
    private:
        
    int widthheight;
        
    int Grid[20][20];
    };

    /*Các hàm thành phần thêm class scope : "Board:: "*/
    void Board::read_input_from_user(){
      
      
    cout << "[ Enter width length ]" << endl;
      
    cout << "[ -width : ";
      
    cin >> width;
      
    cout << "heigth: ";
      
    cin >> height;
    }

    void Board::construct_grid(){
      
      
    width += 2;
      
    height += 2;
      for (
    int x 0widthx++){
        for (
    int y 0heighty++){
          if (
    x*(width 1)*y*(height 1) == 0)
            
    Grid[x][y] = -1;
          else
            
    Grid[x][y] = 0;
        }    
      }    
    }

    void Board::print_result(){
      
      
    cout << "\n\n\n RESULT : \n";
      for (
    int x 1width 1x++){       
        for (
    int y 1height 1y++){
          
    cout << setw(5) << Grid[x][y];
        }
        
    cout << endl << endl;
      }      
      
    }

    void Board::calculate_magic(){
      
      
    int row_step 0col_step 1
          
    11
          
    mark 1;
      do{
        do{
          
    Grid[r][c] = mark++;
          
    += row_step;
          
    += col_step;
        }
        while(
    >= && width &&  >= 
                     
    && height && Grid[r+row_step][c+col_step] == 0);

        if(
    row_step == 0){
          
    row_step col_step row_step;
          
    col_step 0;
        }
        else{
          
    col_step col_step row_step;
          
    row_step 0;
        }

      }while(
    Grid[r][c] == 0);
    }

    int main(){
      
      
    Board myGrid/*Tạo 1 đối tượng myGrid*/
      /*Gọi các hàm xử lý bằng syntax (tên_đối_tượng.hàm_nào_đó() )*/
      
    myGrid.read_input_from_user();
      
    myGrid.construct_grid();
      
    myGrid.calculate_magic();
      
    myGrid.print_result();

      return 
    0;

    Khác thì nó còn khác nhiều lắm, nhưng cơ bản là như vậy, bạn cứ học tiếp đi rồi thắc mắc gì hãy post lên hỏi.

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Nên tách ra làm 2 file .h và .cpp thì chương trình sẽ tốt hơn, khi tạo project thì nhúng file .cpp vào còn ở file main thì khai báo thư viện .h. Lúc compile thì chỉ compile đúng 1 lần còn nếu bạn nhúng file .h vào hoặc thiết kế chỉ có 1 file thì mỗi lần run là lại phải compile lại.

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

    Nên tách ra làm 2 file .h và .cpp thì chương trình sẽ tốt hơn, khi tạo project thì nhúng file .cpp vào còn ở file main thì khai báo thư viện .h. Lúc compile thì chỉ compile đúng 1 lần còn nếu bạn nhúng file .h vào hoặc thiết kế chỉ có 1 file thì mỗi lần run là lại phải compile lại.
    __________________
    Thanks ý kiến của bạn, cái này mình không biết thật, mình sẽ cố gắng khác phục ^^!

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

  1. Mã nguồn C Lỗi Lỗi see reference to class template instantiation 'std::list<_Ty>' being khi sử dụng Iterator cho class tự xây dựng
    Gửi bởi Mr_Chan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 10-07-2013, 01:58 AM
  2. Lỗi: error C2440: 'initializing' : cannot convert from 'class xxx *' to 'class xxx *' sửa như thế nào?
    Gửi bởi Nupakachy trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 16-06-2011, 08:54 PM
  3. Cách lấy giá trị biến từ class này sang class khác trong lập trình C#
    Gửi bởi phongk20 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 13-03-2011, 05:19 PM
  4. Truy cập biến từ class này sang class kia xin giúp
    Gửi bởi baotran 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: 02-12-2010, 09:20 AM
  5. Tại sao có struct rồi còn sinh ra class. Lợi thế của class là gì?
    Gửi bởi car0ot trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 24
    Bài viết cuối: 24-10-2008, 05:26 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