Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 8 của 8
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    [Hỏi] Nhập đầu vào Bài tập C về tá lả ù bài.

    (Lần đầu post có gì sai sót,mong m.n góp ý ,bỏ quá cho ạ [IMG]images/smilies/biggrin.png[/IMG] )
    E đang có 1 bài tập C về tá lả
    mà k biết phải viết đầu vào ra sao.Mong mọi người giúp ạ.
    ** Bài tập:
    e sẽ dùng thuật toán quay lui ạ!!

    +Chọn ra random 9/52 quân bài.
    +xét xem bộ 9 quân đó có ù hay không?

    Vs "ù" định nghĩa là:
    +có 2 phỏm (4 quân,5 quân)-có thể là phỏm dãy hoặc sáp,...
    +Hoặc có 3 phỏm 3.

    Về phân biệt cơ rô tép bíc..
    +e lấy phần dư của phép chia cho 4 ạ.
    ......................................

    Bài toán e diễn đạt ra có gì k hiểu..m.n góp ý ạ [IMG]images/smilies/smile.png[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Vẫn chưa đk ai góp ý giúp e nhỉ

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình nghĩ là bạn hỏi về cách tổ chức (lưu trữ) dữ liệu phải ko? Mình tự nghĩ ra 2 cách sau:
    Cách 1 (tốn bộ nhớ + thời gian, đơn giản):
    Tạo 1 ma trận 13x4 (tới đây chắc hiểu sơ rồi nhỉ [IMG]images/smilies/biggrin.png[/IMG] ). Cụ thể hơn mỗi phần tử chứa giá trị 1 (đc chọn) hoặc 0 (ko đc chọn). Tìm cách nào đó để lấy random trong ma trận (có thể dùng 2 biến random 0 <= i < 13, 0 <= j < 4)
    Cách 2 (tốt hơn, hơi rắc rối tí)
    Dùng 1 mảng nguyên kích thước là 9 lưu các số từ 1->52. Quy ước từ 1 -> 13 là cơ, 14 -> 26 là rô, ... cách này lấy random thì dễ, nếu người khác đọc thì cần giải thích vì có thể họ ko hiểu [IMG]images/smilies/biggrin.png[/IMG]

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ^ Cách 1: vào sọt.
    Cách 2: Ghi comment + named constant vào.

  5. #5
    Ngày tham gia
    Sep 2015
    Đang ở
    24 Rạch Bùng Binh , P10,Q3 , HCM
    Bài viết
    0
    Dạ.E làm theo hướng kiểu 2 đó ạ!
    Nhưng kiểu e chọn ra là a%4=0 là cơ chẳng hạn ạ [IMG]images/smilies/smile.png[/IMG]
    Nhưng vẫn rối quá.

    - - - Nội dung đã được cập nhật ngày 23-05-2014 lúc 04:32 PM - - -

    Trích dẫn Gửi bởi prog10
    ^ Cách 1: vào sọt.
    Cách 2: Ghi comment + named constant vào.
    Mình k hiểu ý bạn lắm :

  6. #6
    Ngày tham gia
    Sep 2015
    Đang ở
    Hà Nội
    Bài viết
    0
    Bạn nên ghi cơ rô chuồn bích là ứng với số mấy, đó gọi là named constants [IMG]images/smilies/smile.png[/IMG]

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    52 quân bài tương đương từ số 4 đến 56 chẳng hạn. bạn sắp xếp. phép chia cho 4 lấy dư 0 = cơ, dư 1 = rô, dư 2= chuồn, dư 3 = bích.
    Còn về xét cái ù có vẻ phức tạp, mình k0 biết, hi

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn tham khảo nhé:

    Mã:
    //---------------------------------------------------------------------------
    const int CARDS_IN_DECK  = 52;
    const int CARDS_IN_HAND  = 9;
    const int SUITS_IN_DECK  = 4;
    const int COLORS_IN_DECK = 2;
    
    const char* CARD_NAME[] = {
       "Ach", "Hai", "Ba", "Bon", "Nam", "Sau", "Bay", "Tam", "Chin", "Muoi", "Boi", "Dam", "Gia"
    };
    
    const char* SUIT_NAME[] = {
       "Co", "Ro", "Chuon", "Bich"
    };
    
    const char* COLOR_NAME[] = {
       "Do", "Den"
    };
    //---------------------------------------------------------------------------
    enum RANK {
       ACH, HAI, BA, BON, NAM, SAU, BAY, TAM, CHIN, MUOI, BOI, DAM, GIA
    };
    enum SUIT {
       CO, RO, CHUON, BICH
    };
    enum COLOR {
       DO, DEN
    };
    //---------------------------------------------------------------------------
    typedef struct CARD_STRUCT
    {
       RANK rank;
       SUIT suit;
       COLOR color;
    } CARD;
    typedef CARD DECK[CARDS_IN_DECK];
    typedef CARD HAND[CARDS_IN_HAND];
    //---------------------------------------------------------------------------
    void InitDeck(DECK& deck)
    {
       for (int i = 0; i < CARDS_IN_DECK; i++) {
          deck[i].rank = (RANK)(i / SUITS_IN_DECK);
          deck[i].suit = (SUIT)(i % SUITS_IN_DECK);
          deck[i].color = (COLOR)(deck[i].suit / COLORS_IN_DECK);
       }
    }
    //---------------------------------------------------------------------------
    int main(int argc, char *argv[])
    {
       DECK deck;
       HAND hand;
    	
       InitDeck(deck);
    	
       for (int i = 0; i < CARDS_IN_DECK; i++)
          printf("%s %s %s
    ", CARD_NAME[deck[i].rank], SUIT_NAME[deck[i].suit], COLOR_NAME[deck[i].color]);
    
       return 0;
    }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •