Trang 1 trên tổng số 27 12311... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 266 kết quả

Đề tài: [ Thư giãn với lập trình ]

  1. #1
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Thumbs down [ Thư giãn với lập trình ]

    Như cái tên gọi đã nói, chúng ta thư giãn với lập trình đúng kiểu nghề nghiệp luôn.
    Thay vì cái tên gọi ngày xưa "Series Cốt Đờ Quán", nay tớ mở lại để anh em tiếp tục chơi với những câu đố với lối suy nghĩ theo chiều Guru/Geek giải trí

    P/s: nếu bạn nào có chơi TopCoder.com thì chắc là biết cái này rồi

    Nhân là chủ quán, nên tiện ra một câu đố như sau:

    Thư giãn 1

    Có 3 hàm như thế này:

    C Code:
    1. int add( int _a, int _b ) { return _a + _b; }
    2. int sub( int _a, int _b ) { return _a - _b; }
    3. int mul( int _a, int _b ) { return _a * _b; }

    Ok! Đây là 3 hàm đơn giản ai cũng biết. Vậy ta cùng implement một chương trình với thao tác như sau:

    - Chương trình yêu cầu người dùng nhập vào một trong 4 chuỗi: "add" "sub" "mul" "end".
    Nếu nhập không đúng thì tiếp tục lặp lại.
    - Yêu cầu người dùng nhập vào tiếp 2 con số nếu là 3 chuỗi "add" "sub" "mul". Thoát khỏi chương trình nếu là chuỗi "end".
    - In ra kết quả theo dạng: [A] [toán tử tương ứng] [B] = [Kết Quả]
    - 3 chuỗi input tương ứng với 3 hàm ở trên.

    Yêu cầu:
    - Thực hiện thế nào sao cho gọi hàm tương ứng với cái tên nhập vào. Ví dụ: nhập "add" thì gọi hàm add()...
    - Sử dụng con trỏ hàm
    - Ngôn ngữ sử dụng: C, C++

    Đây là demo chương trình:
    PHP Code:
    type 'add''sub''mul' or 'end'add
     a 
    1
     b 
    2
     1 
    3
    type 'add''sub''mul' or 'end'sub
     a 
    6
     b 
    4
     6 
    2
    type 'add''sub''mul' or 'end'mul
     a 
    12
     b 
    1
     12 
    12
    type 'add''sub''mul' or 'end'end

    PROGRAM ENDED 

    Đã được chỉnh sửa lần cuối bởi Xcross87 : 06-05-2010 lúc 09:41 AM.
    None!

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    anh X lại máu rồi, thật sự em muốn theo topic này nhưng nghĩ mãi chẳng có ý tưởng gì hay cho bài này
    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4.  
    5. int  add( int _a, int _b ) { return _a + _b; }
    6. int sub( int _a, int _b ) { return _a - _b; }
    7. int mul( int _a, int _b ) { return _a * _b; }
    8.  
    9. int main()
    10. {
    11.     string oper;
    12.  
    13.     do
    14.     {
    15.         cout << "> type 'add', 'sub', 'mul' or 'end': ";
    16.         do
    17.         {
    18.             getline(cin,oper);
    19.             if (oper == "add" || oper == "sub" || oper == "mul" || oper == "end") break;
    20.             cout << "> retype 'add', 'sub', 'mul' or 'end': ";
    21.         } while (true);
    22.  
    23.         if (oper == "add" || oper == "sub" || oper == "mul")
    24.         {
    25.             int a, b;
    26.             cout << "a = "; cin >> a;
    27.             cout << "b = "; cin >> b;
    28.             if (oper == "add")
    29.                 cout << a << " + " << b << " = " << add(a,b) << endl;
    30.             else if (oper == "sub")
    31.                 cout << a << " - " << b << " = " << sub(a,b) << endl;
    32.             else if (oper == "mul")
    33.                 cout << a << " * " << b << " = " << mul(a,b) << endl;
    34.         }
    35.         else if (oper == "end") break;
    36.        
    37.         cin.ignore();
    38.     } while (true);
    39.  
    40.     cout << "\nPROGRAM ENDED !";
    41.     return 0;
    42. }
    em sẽ nghĩ thêm

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

    -Ngưỡng mộ bác đã lâu ,h cũng tham gia với bác
    -Không biết làm thế này có đc không
    -Bác ra cái đề quá hay!Mong bác thêm vài đề nữa cho anh em cùng luyện tay nghề (lâu không đụng Function Pointer .... nên hơi rối)
    PHP Code:
    /*
      UITs:UITstudent.com
      Coder:tauit_dnmd.
    */
    #include<iostream>
    #include<string>
    using namespace std;
    typedef int (*MyType)(int,int);

    int  addint _aint _b ) { return _a _b; }
    int subint _aint _b ) { return _a _b; }
    int mulint _aint _b ) { return _a _b; }

    int (*GetFunctionVerSion1(string s,char &oper))(int,int
    {
            if(
    s=="add"){oper='+'; return &add;}
            if(
    s=="sub"){oper='-';return &sub;}
            if(
    s=="mul"){oper='*'; return &mul;}
    }

    MyType GetFunctionVerSion2(string s,char &oper)
    {
            if(
    s=="add"){oper='+'; return &add;}
            if(
    s=="sub"){oper='-';return &sub;}
            if(
    s=="mul"){oper='*'; return &mul;}
    }

    int main()
    {
        
    int (*uitstudent)(int,int)=NULL;//define 
        
    int a,b;
        
    string myoperator;//operator
        
    char UITs;
        do
        {
            do
            {
                
    cout<<"type 'add' 'sub' 'mul' or 'end':"
                
    cin>>myoperator;
                if(
    myoperator=="add"||myoperator=="sub"||myoperator=="mul"||myoperator=="end") break;
            }while(
    1);
            if(
    myoperator!="end")
            {
                
    uitstudent=GetFunctionVerSion1(myoperator,UITs);//Or uitstudent=GetFunctionVerSion2(myoperator,UITs);
                
    cout<<"a= ";cin>>a;
                
    cout<<"b= ";cin>>b;
                
    cout<<"a "<<UITs<<" b = "<<(*uitstudent)(a,b)<<endl;
            }
        }while(
    myoperator!="end");
        
    cout<<"UITs:PROGRAM END!"<<endl;
        return 
    0;

    Đã được chỉnh sửa lần cuối bởi tauit_dnmd : 06-05-2010 lúc 04:31 AM.

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

    Quang Hoàng làm lẹ quá mà quên đọc yêu cầu ^^ "con trỏ hàm" :P ! Làm lại đi nà ^^ !

  5. #5
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    @QuangHoang: em xem lại rồi biến tấu nó dưới dạng con trỏ hàm nhé.

    @tauid_tnmd:
    - Hãy xem những cái gì giống nhau trong code của bạn rồi rút gọn nó thành hàm, chia nhỏ nhất đến mức có thể.
    - Nhìn ra cốt lỗi vấn đề khá tốt

    @Cả hai:
    - Bài làm rất tốt, gọn gàng, sáng sủa(QuangHoang), tauid code hơi bị neat một tí
    - Hãy thử nâng cao hơn một xíu với sử dụng cấu trúc bài này đi.
    None!

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

    Mặc định [ Thư giãn với lập trình ]

    Trích dẫn Nguyên bản được gửi bởi Xcross87 Xem bài viết
    @QuangHoang: em xem lại rồi biến tấu nó dưới dạng con trỏ hàm nhé.

    @tauid_tnmd:
    - Hãy xem những cái gì giống nhau trong code của bạn rồi rút gọn nó thành hàm, chia nhỏ nhất đến mức có thể.
    - Nhìn ra cốt lỗi vấn đề khá tốt

    @Cả hai:
    - Bài làm rất tốt, gọn gàng, sáng sủa(QuangHoang), tauid code hơi bị neat một tí
    - Hãy thử nâng cao hơn một xíu với sử dụng cấu trúc bài này đi.
    --.Ý bác muốn em rút gọn code em sao cho ngắn nhất hả bác
    Câu này:"tauid code hơi bị neat một tí" khen hay chê đó bác

  7. #7
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi tauit_dnmd Xem bài viết
    --.Ý bác muốn em rút gọn code em sao cho ngắn nhất hả bác
    Câu này:"tauid code hơi bị neat một tí" khen hay chê đó bác
    Bỏ qua cái đó đi, thử viết cấu trúc nhé
    'neat' là chữ viết sát nhau quá, khó đọc.
    None!

  8. #8
    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 Xcross87 Xem bài viết
    Bỏ qua cái đó đi, thử viết cấu trúc nhé
    'neat' là chữ viết sát nhau quá, khó đọc.
    Sử dụng cấu trúc là sao bác,em chưa hỉu ý bác muốn.Bác nói cho em hiểu đi thì em mới biết đường mà tối ưu code chứ bác

  9. #9
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi tauit_dnmd Xem bài viết
    Sử dụng cấu trúc là sao bác,em chưa hỉu ý bác muốn
    tạo struct ấy, bạn sẽ thấy code dễ dàng hơn nhiều

    P/S: Update yêu cầu bài một tí
    None!

  10. #10
    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 Xcross87 Xem bài viết
    tạo struct ấy, bạn sẽ thấy code dễ dàng hơn nhiều

    P/S: Update yêu cầu bài một tí
    haizzzz.em thấy tạo struct cũng vậy à.Cũng đâu có j thay đổi mấy đâu bác

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