Bài toán về BlackJack

Tình hình là em đang làm bài tập thầy giao.

Đề bài : Blackjack (21, Vingt-et-un hay Pontoon) là trò cờ bạc được chơi nhiều nhất trong các casino trên toàn thế giới.

Blackjack ám chỉ 1 bộ 2 cây gồm một con ách và một con 10, J, Q, K chất bất kỳ, không nhất thiết phải có J hay có con bài đen nào.

Cách chơi:

  • Blackjack bao gồm nhà cái và nhiều người chơi.
  • Nhà cái sẽ phát bài cho người chơi và mình, mỗi người được lấy 2 cây.
  • Khi chia, quân đầu tiên trong 2 quân sẽ được lật lên.
  • Nếu người nào ngay trong 2 lá bài đầu có một con Ace và một trong các con 10, J, Q, K chất bất kỳ thì người đó đã được blackjack.
  • Blackjack không phụ thuộc vào chất của mỗi con bài để tính kết quả.
  • Tính điểm :
    • 2, 3, 4, 5, 6, 7, 8, 9, 10 ứng với điểm số tương ứng.
    • J, Q, K là 10 điểm.
    • A: Nếu tổng các quân bài với quân A lớn hơn 11 thì A sẽ là 1 điểm.
    • VD: 1 bộ bài gồm A, 9, 8 sẽ tính là 18 điểm
    • Nếu tổng các quân bài với quân A nhỏ hơn 11 thì A sẽ tính là 11 điểm.
    • VD: 1 bộ bài gồm A, 2, 3 sẽ tính là 16 điểm.
    • 21 là điểm số cao nhất mà người chơi có thể giành được.
    • Nếu người chơi lấy thêm bài quá 21 điểm thì sẽ thua ngay lập tức, tiền sẽ về tay nhà cái kể cả khi sau đó nhà cái cũng lấy thêm lớn hơn 21 điểm.
  • Trường hợp có hai A, người chơi có thể chọn cả hai A là 1 điểm hoặc một A là 11 điểm và một A là 1 điểm.

Viết một chương trình nhận vào từ bàn phím giá trị của hai cây bài (2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A) và in ra màn hình điểm của hai cây bài đó. Trong chương trình này, khi nhận được hai lá A, điểm số sẽ là 2

Nên em làm một bài toán con để hiện số điểm của từng lá bài nhưng không hiểu tại sao lại bị lỗi như thế này

#include<stdio.h>
int main() {
	int x, y;
	scanf("%d %d", &x, &y);
	if (x==0) scanf("%c", &x); //GIA TRI TRONG BANG ASCII
	if (y==0) scanf("%c", &y);
    //A=65; J=74 Q=81  K= 75
        switch(x) {
    	case 74:
    	case 81:
    	case 75:
    		x=10;
    		break;
    	case 65:
    		x=1;
    		break;
	}
	
	switch(y) {
    	case 74:
    	case 81:
    	case 75:
    		y=10;
    		break;
    	case 65:
    		y=1;
    		break;
	}
	
    
     printf("%d %d", x, y);
	return 0;
} 

Mn giúp em với ạ !

"%c", &x

x là int sao lại scanf %c được :V

đọc lần lượt từng lá bài, đừng đọc gộp 1 lúc :V

2 Likes

Nhưng mà in ra đúng gtri của lá 1 hêy ạ

chắc ngẫu nhiên in ra 1 :thinking:

viết hàm đọc int inputCard() rồi gọi 2 lần :V

int inputCard() {
    int intValue = 0;
    char charValue = '\0';
    if (scanf("%d", &intValue) == 1) return intValue;
    if (scanf("%c", &charValue) == 1) return charValue;
    return -1;
}
2 Likes

không hiểu lắm bác ạ

Nên nhập giá trị kiểu char hoàn toàn, sau đó quy đổi sang giá trị tương ứng.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?