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

Đề tài: Bài tập tìm lỗi trong code

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

    Mặc định Bài tập tìm lỗi trong code

    Hi các bác, em có một số bài tập về đọc hiểu và tìm lỗi với C++ (yêu cầu là ko dùng compiler). Trong đó có 1 bài về enum như sau:

    C++ Code:
    1. #include <iostream>
    2.  
    3. using namespace std;
    4.  
    5. class COption {
    6.    public:
    7.       enum E_Options {none=0, option1 = 1, option2=2, option3=4, option4=8};
    8.       /* lỗi thứ nhất tại đây, E_Options chỉ có giá trị trong block của class COption, nên sẽ báo lỗi trong main là chưa khai báo
    9.       */
    10.       COption() : akt_options(none) {}
    11.       void setOptions(E_Options options) {akt_options = options;}
    12.       bool is_option_selected (E_Options option);
    13.  
    14.    private:
    15.       E_Options akt_options;
    16. };
    17.  
    18. bool COption::is_option_selected (E_Options option){
    19.    return (akt_options & option);
    20. }
    21.  
    22. int main() {
    23.    COption c;
    24.    c.setOptions(option1 || option3 || option4);
    25.    // lỗi thứ hai tại đây hàm setOption chỉ có 1 parameter
    26.  
    27.    cout << c.is_option_selected(option1) << endl;
    28.    cout << c.is_option_selected(option2) << endl;
    29.    cout << c.is_option_selected(option3) << endl;
    30.    cout << c.is_option_selected(option4) << endl;
    31. }

    Yêu cầu là tìm ra 3 lỗi, hiện tại em đã thấy 2 lỗi . Bác nào có thể giúp em được không?

  2. #2
    Ngày gia nhập
    11 2012
    Nơi ở
    Ở trong rừng trong rú
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi phongdt Xem bài viết
    C++ Code:
    1. bool COption::is_option_selected (E_Options option){
    2.    return (akt_options & option);
    3. }
    Nghi là lỗi chỗ này quá. akt_options & option trả về int mà is_option_selected lại trả về bool. Chắc là thế.

  3. #3
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    C++ Code:
    1. #include <iostream>
    2.  
    3. using namespace std;
    4.  
    5. class COption {
    6.     public:
    7.         enum E_Options : int {
    8.             none = 0,
    9.             option1 = 1,
    10.             option2 = 2,
    11.             option3 = 4,
    12.             option4 = 8
    13.         };
    14.         COption()
    15.             : akt_options(none) {}
    16.         void setOptions(int options) {                                      // (1)
    17.             akt_options = options;     
    18.         }
    19.         bool is_option_selected (E_Options option);
    20.     private:
    21.         int akt_options;                                                    // (1')
    22. };
    23.  
    24. bool COption::is_option_selected (E_Options option) {
    25.     return ((akt_options & option) == option);                              // (2)
    26. }
    27.  
    28. int main() {
    29.     COption c;
    30.     c.setOptions(COption::option1 | COption::option3 | COption::option4);   // (3)
    31.  
    32.     cout << c.is_option_selected(COption::option1) << endl;                 // (4)
    33.     cout << c.is_option_selected(COption::option2) << endl;
    34.     cout << c.is_option_selected(COption::option3) << endl;
    35.     cout << c.is_option_selected(COption::option4) << endl;
    36. }
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

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

    Trích dẫn Nguyên bản được gửi bởi doicanhden Xem bài viết
    C++ Code:
    1.         enum E_Options : int {             // Chỗ này là chỉ có tác dụng trên C++11
    2.             none = 0,
    3.             option1 = 1,
    4.             option2 = 2,
    5.             option3 = 4,
    6.             option4 = 8
    7.         };
    http://en.cppreference.com/w/cpp/language/enum .

  5. #5
    Ngày gia nhập
    11 2012
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi hoailam911 Xem bài viết
    Nghi là lỗi chỗ này quá. akt_options & option trả về int mà is_option_selected lại trả về bool. Chắc là thế.
    Em nghĩ là không sai, vì với C++, x = 0 thì trả về false, còn với mọi x != 0 thì trả về true .

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

  1. Mất giao diện (mất hết code trong Windows Form Designer generated code) trong khi thiết kế?
    Gửi bởi violent_feeling trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 25-04-2013, 04:19 PM
  2. Tại sao lại bỏ Store Proceduce nếu code theo hướng Code First trong MVC3
    Gửi bởi rogerminh2401 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 5
    Bài viết cuối: 02-11-2012, 08:22 PM
  3. Đoạn code trong sách Ngôn ngữ lập trình C# mình code trên máy thì chạy sai
    Gửi bởi piavg trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 01-07-2012, 11:04 PM
  4. Chuyển code sang code ngắn hơn trong LINQ
    Gửi bởi tinhthanhiepsi9x trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 14-04-2012, 11:19 AM
  5. compiler Warning: Unreachable code và chạy sai trong khi code đúng. Vì sao?
    Gửi bởi lovemoney trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 19
    Bài viết cuối: 19-01-2012, 10:02 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