PDA

View Full Version : lập trình C : " xây dựng thuật toán với các con bài "


teenhoc04
03-01-2011, 14:54
Các bạn góp ý cho mình nha

Mình đang làm bài tập lớn với đề tài xây dựng trò chơi Blackjack .Hiện tại đang làm đến bước xây dựng Flowchart xây dựng thuật toán cho nó .

Yêu cầu là bộ bài 52 lá ,cần xây dựng thuật toán sao cho rút ra 1 lá , sau khi rút xong thì không rút lại lá đó nữa .

Đây là đề bài cụ thể kèm theo cả luật chơi Blackjack http://www.mediafire.com/?keibswud5dxrc6r

và đây là bài làm của mình http://www.mediafire.com/?ecc05aqwe3h05p0

Trình độ tin học mình còn kém ( học C được 2 tháng) ,trình độ tiếng anh cũng không cao nên trong bài viết có gì sai các bạn góp ý cho mình nha .

Ai không down tài liệu thì đọc dòng tóm tắt sau và nhận xét về thuật toán của mình :

Để số hóa các lá bài ta làm như sau :
1 Quy ước các lá bài theo thứ tự rô cơ tép bích và át hai ba bốn … mười ji quy ka .

2 Đặt giá trị tương ứng át rô = 1 , át cơ = 2 … 2 rô =5 , 2 bích =8 …ka bích = 52, đặt them joker=53 để gán cho ace khi tổng bài lớn hơn 21

3 Tạo 10 biến Ca1 ,Ca2 ,C3…. Ca10 tương ứng với 10 vị trí lá bài trên tay người và máy

4 Người sẽ có các lá Ca1=>5 máy có Ca6=> . nếu rút đến là thứ 5 sẽ dừng chơi , không rút thêm được nữa .

5 Các giá trị 1 đến 53 sẽ được gán ngẫu nhiên vào các biến Ca1, Ca2, Ca3…Ca10 khi chia bài

6 Khi giá trị của Ca1 là 1 hay 2 3 4 ta hiểu đó là quân Ace và số điểm là 11 điểm, nếu là 5 6 7 8 ta hiểu đó là quân 2 và point= 2

7 Khi chia bài giả sử Ca1 là 2 rô tương ứng với giá trị = 5 vậy ta phải loại bỏ quân 2 rô ra khỏi bộ bài tức là các giá trị sau khi gán vào Ca1 ,Ca2 …. Ca10 phải khác 5 , bài đã chia xuống rồi không được chia lại nữa để tránh trường hợp có 10 quân ace trên bàn chơi ,hay có 2 quân k bích cùng 1 lúc .

8 Hai bước 6 và 7 về thuật toán và về hàm tương đối phức tạp .Nếu khả năng không cho phép có thể bỏ 2 bước 6 và 7 như vậy bộ bài không phân biệt rô cơ tép bích mà chỉ có át 2 3 4 .. j q k . tính chất các cây bài tương đương , có thể lặp lại , có thể có 10 quân át trên bàn chơi 1 lúc , Có thể bỏ qua cả các biến Ca1, Ca2 ,Ca3 ..Ca10 luôn .Đơn giản hết mức trò chơi .

update
đây là đề bài và flowchart của mình ,cả 1/2 chương trình đang code dở nữa

trình độ của mình ở mức 3 tháng aptech ,2 tháng học C . tiếng anh mức bằng A
gần được B . Mong các bác đưa ra kiến thức đơn giản , nếu cao quá mình sợ không hiểu hết được .
đây là đoạn code bị lỗi mọi người xem dùm hộ .
void hienThiA(bai laxd[10],int card[52], int hm, int ai ) // hien thi 2 cay cua nguoi choi 1 cay cua may
{
typedef struct bai
{
int diem;
char chat[5];
char ten[5];
}bai;
int i,j,k,m,n;

int diemHM,diemAI;
diemHM=0; diemAI=0;
int hienThiHM=1;
int hienThiAI=2;
for(i=0;i<10;i++)
{
k=card[i]/4;
int(k);
m=card[i]%4;
switch(k)
{
case (1):
{ strcpy(laxd[i].ten,"at");
laxd[i].diem=11;
break;
}
case (2):
{ strcpy(laxd[i].ten,"hai");
laxd[i].diem=2;
break;
case (3):
{ strcpy(laxd[i].ten,"ba");
laxd[i].diem=3;
break;
case (4):
{ strcpy(laxd[i].ten,"bon");
laxd[i].diem=4;
break;
}
case (5):
{ strcpy(laxd[i].ten,"nam");
laxd[i].diem=5;
break;
}
case (6):
{ strcpy(laxd[i].ten,"sau");
laxd[i].diem=6 ;
break;
}
case (7):
{ strcpy(laxd[i].ten,"bay");
laxd[i].diem=7 ;
break;
}
case (8):
{ strcpy(laxd[i].ten,"tam");
laxd[i].diem=8 ;
break;
}
case (9):
{ strcpy(laxd[i].ten,"chin");
laxd[i].diem=9 ;
break;
}
case (10):
{ strcpy(laxd[i].ten,"muoi");
laxd[i].diem=10 ;
break;
}
case (11):
{ strcpy(laxd[i].ten,"Joker");
laxd[i].diem=10 ;
break;
}
case (12):
{ strcpy(laxd[i].ten,"Queen");
laxd[i].diem=10 ;
break;
}
case (13):
{ strcpy(laxd[i].ten,"King");
laxd[i].diem=10 ;
break;
}

}


trình biên dịch là dev C

Link down dev C http://www.brothersoft.com/dev-c++-65296.html


đây là file đính kèm bao gồm đề bài flowchart , 1/2 chương trình của mình


link MF cho dễ down :http://www.mediafire.com/?fa8gucbriplrr

ikakashj
03-01-2011, 15:02
úp hộ bác. Có học C hồi đầu kỳ nhưng giờ chả nhớ gì :baffle:

Very T
03-01-2011, 15:04
Rất tiếc, mình ko biết luật chơi bài blackjack nên ko giúp bợn đc :D

teenhoc04
03-01-2011, 15:05
Rất tiếc, mình ko biết luật chơi bài blackjack nên ko giúp bợn đc :D

Vậy bạn góp ý cho mình làm sao để chia lá bài trong bất kì trò đánh bài .

holy light
03-01-2011, 15:10
học C 2 tháng mà bạn làm đc bài này...giỏi thật...

Very T
03-01-2011, 15:12
Bạn tạo 1 mảng 2 chiều như sau:

1 chiều từ 1 đến 13 tượng trưng cho A đến K
1 chiều từ 1 đến 4 tượng trưng cho4 chất cơ, rô, nhép bích
Nếu bài đó cần cả quân Joker thì chiều kia là từ 1 đến 14, và phải chú ý là giảm tỷ lệ ra số 14 xuống còn 1 nửa, nếu ko thì vô hình chung bạn đã cho vào bộ bài 4 con Joker chứ ko phải là 2 con Joker.
-------------------------------------------------------------------
Bạn tạo giá trị ngẫu nhiên cho 2 biến là I và J
I từ 1 đến 14, J từ 1 đến 4
Nếu I có giá trị từ 1 đến 13 thì đơn giản rồi, xúc ra luôn thôi.
Nếu I có giá trị là 14 thì bạn phải xét xem J = 1 hoặc 2 thì cho ra Joker, nếu là 3 hoặc 4 thì ta lại tạo giá trị I,J từ đầu. Làm thế để giảm tỷ lệ ra Joker xuống còn 1 nửa.

teenhoc04
03-01-2011, 15:15
Bạn tạo 1 mảng 2 chiều như sau:

1 chiều từ 1 đến 13 tượng trưng cho A đến K
1 chiều từ 1 đến 4 tượng trưng cho4 chất cơ, rô, nhép bích
Nếu bài đó cần cả quân Joker thì chiều kia là từ 1 đến 14, và phải chú ý là giảm tỷ lệ ra số 14 xuống còn 1 nửa, nếu ko thì vô hình chung bạn đã cho vào bộ bài 4 con Joker chứ ko phải là 2 con Joker.
-------------------------------------------------------------------
Bạn tạo giá trị ngẫu nhiên cho 2 biến là I và J
I từ 1 đến 14, J từ 1 đến 4
Nếu I có giá trị từ 1 đến 13 thì đơn giản rồi, xúc ra luôn thôi.
Nếu I có giá trị là 14 thì bạn phải xét xem J = 1 hoặc 2 thì cho ra Joker, nếu là 3 hoặc 4 thì ta lại tạo giá trị I,J từ đầu. Làm thế để giảm tỷ lệ ra Joker xuống còn 1 nửa.


Thank bạn. vậy là tạo ra mảng 2 chiều . tiết kiệm khá nhiều thời gian .

Very T
03-01-2011, 15:18
Thank bạn. vậy là tạo ra mảng 2 chiều . tiết kiệm khá nhiều thời gian .

Còn thắc mắc gì về thuật toán thì bạn cứ hỏi nhé :D Mình sẽ giúp bạn về thuật toán, nhưng ko viết chương trình cho bạn đc vì mình không học C và không biết luật chơi bài Black Jack. :shame:
Bây giờ mà ngồi nghiên cứu 2 cái vấn đề này thì mất thời gian lắm :sweat:

teenhoc04
03-01-2011, 15:23
Còn thắc mắc gì về thuật toán thì bạn cứ hỏi nhé :D Mình sẽ giúp bạn về thuật toán, nhưng ko viết chương trình cho bạn đc vì mình không học C và không biết luật chơi bài Black Jack. :shame:
Bây giờ mà ngồi nghiên cứu 2 cái vấn đề này thì mất thời gian lắm :sweat:

Mình làm cái bài này cũng vì thuật toán nó hay mà . vừa làm vừa giống ngồi giải toán .

Cái phần chia bài. 1 khi đã chia quân 2 cơ chẳng hạn . thì vòng sau không chia lại quân 2 cơ nữa. tránh có 2 quân giống nhau trên bàn .

Mình định làm như sau . chia vòng thứ nhất rồi lưu nó vào ô nhớ 1 . chia vòng 2 ,so sánh nếu nó bằng ô nhớ 1 vừa rồi thì hủy chia lại .
Nhưng nếu làm vậy thì các vòng sau vòng 6 7 8 thì phải so sánh 6 7 8 lần .

Very T
03-01-2011, 15:27
Mình làm cái bài này cũng vì thuật toán nó hay mà . vừa làm vừa giống ngồi giải toán .

Cái phần chia bài. 1 khi đã chia quân 2 cơ chẳng hạn . thì vòng sau không chia lại quân 2 cơ nữa. tránh có 2 quân giống nhau trên bàn .

Mình định làm như sau . chia vòng thứ nhất rồi lưu nó vào ô nhớ 1 . chia vòng 2 ,so sánh nếu nó bằng ô nhớ 1 vừa rồi thì hủy chia lại .
Nhưng nếu làm vậy thì các vòng sau vòng 6 7 8 thì phải so sánh 6 7 8 lần .

Bạn nghĩ gì mà làm thế :-s Mảng 2 chiều kia bạn để trang trí à :adore:
Thế bạn có biết mảng 2 chiều kia để làm gì ko???

Tạo cái mảng 2 chiều kia ra để lưu trạng thái vào.
Ban đầu toàn bộ mảng sẽ có giá trị = 0, tức là chưa có quân bài nào đc rút.
Sau đó bạn rút quân nào ra thì lưu 1 vào ô đó.
Ví dụ bạn rút đc quân 7 Cơ thì lưu vào ô [7,1] giá trị là 1, tức là quân đó đã được rút ra rồi.

Nói đến đây mà bạn vẫn ko hiểu thì mình khuyên bạn nên đi học thêm thuật toán xong rồi hãy học lập trình :stick:

Don't Ban
03-01-2011, 15:31
Các bro cho em hỏi tí,em có bài nhg chưa biết làm như thế nào ạ:"Viết chương trình liệt kê tất cả các ma phương bậc 3 và 4 dựa trên thuật toán quay lui"

Very T
03-01-2011, 15:35
Các bro cho em hỏi tí,em có bài nhg chưa biết làm như thế nào ạ:"Viết chương trình liệt kê tất cả các ma phương bậc 3 và 4 dựa trên thuật toán quay lui"

Mình ko biết ma phương là gì :hang:
Thuật toán quay lui mà bạn nói có lẽ là thuật toán Đệ Quy. Bạn lên Google sẽ tìm đc rất nhiều tài liệu về đệ quy :D

Don't Ban
03-01-2011, 15:38
Cái đn của nó đây ạ::(
Ma phương : là 1 bảng số hình vuông n x n gồm n*n số từ 1..n*2
Tổng các số trên mỗi hàng, mỗi cột, và trên mỗi 2 đường chéo đều bằng nhau.
Tổng đó gọi là hằng số của ma phương.
n gọi là cấp của ma phương

Phong.dq
03-01-2011, 15:38
download file đề bài của bạn có vấn đề, mình thấy lỗi 403. up lại được ko :)

Very T
03-01-2011, 15:44
Cái đn của nó đây ạ::(

Ma phương : là 1 bảng số hình vuông n x n gồm n*n số từ 1..n*2
Tổng các số trên mỗi hàng, mỗi cột, và trên mỗi 2 đường chéo đều bằng nhau.
Tổng đó gọi là hằng số của ma phương.
n gọi là cấp của ma phương

Chính xác :D Bài này 1 dạng của bài toán đệ quy. Mình chỉ biết làm đệ quy trên Pascal thôi. Nếu bạn học Pascal thì mình có thể giúp bạn :D

teenhoc04
03-01-2011, 15:47
Bạn nghĩ gì mà làm thế :-s Mảng 2 chiều kia bạn để trang trí à :adore:
Thế bạn có biết mảng 2 chiều kia để làm gì ko???

Tạo cái mảng 2 chiều kia ra để lưu trạng thái vào.
Ban đầu toàn bộ mảng sẽ có giá trị = 0, tức là chưa có quân bài nào đc rút.
Sau đó bạn rút quân nào ra thì lưu 1 vào ô đó.
Ví dụ bạn rút đc quân 7 Cơ thì lưu vào ô [7,1] giá trị là 1, tức là quân đó đã được rút ra rồi.

Nói đến đây mà bạn vẫn ko hiểu thì mình khuyên bạn nên đi học thêm thuật toán xong rồi hãy học lập trình :stick:

Dạ thực ra thì em vẫn chưa học đến phần mảng . chương trình C học tất cả trong 2 tháng . hiện tại mới học đến If else . bài tập này trong 2 tháng phải xong . em đọc sách trước nên còn gà lắm . anh thông cảm nha .

teenhoc04
03-01-2011, 15:52
download file đề bài của bạn có vấn đề, mình thấy lỗi 403. up lại được ko :)

Vẫn bình thường , vừa check xong . bạn kiểm tra lại nha .

iupeq456
03-01-2011, 15:58
chưa giáo viên nào ghét mình bằng giáo viên pascal với c . c++ ;)

Very T
03-01-2011, 16:16
Dạ thực ra thì em vẫn chưa học đến phần mảng . chương trình C học tất cả trong 2 tháng . hiện tại mới học đến If else . bài tập này trong 2 tháng phải xong . em đọc sách trước nên còn gà lắm . anh thông cảm nha .

Thế thì tạo số ngẫu nhiên từ 1 đến 54, chia cho 4 lấy phần nguyên và phần dư.

Phần nguyên:
Nếu đc 1 thì là A, 2 là 2, ... 13 là K, 14 là Joker.

Phần dư:
0 là cơ
1 là bích
2 là rô
3 là nhép

Như vậy, với mỗi 1 số từ 1 đến 54 thì ta xác định được 1 và chỉ 1 quân bài :D

Bạn đã hiểu chưa?

teenhoc04
03-01-2011, 16:23
Thế thì tạo số ngẫu nhiên từ 1 đến 54, chia cho 4 lấy phần nguyên và phần dư.

Phần nguyên:
Nếu đc 1 thì là A, 2 là 2, ... 13 là K, 14 là Joker.

Phần dư:
0 là cơ
1 là bích
2 là rô
3 là nhép

Như vậy, với mỗi 1 số từ 1 đến 54 thì ta xác định được 1 và chỉ 1 quân bài :D

Bạn đã hiểu chưa?
Cảm ơn anh. thêm 1 cách giúp giải bài đơn giản hơn . thuật toán này khá hay và đơn giản .

Em làm theo mảng thôi . Đọc sách 2 hôm là làm được . cảm ơn anh .

namthienmenh
03-01-2011, 16:36
Mình ko biết luật blackjack những cũng có thể tư vấn chút như sau:

- Thuật toán chia bài: bạn tạo 1 mảng 53 phần tử chứa giá trị từ 1-53. Mô phỏng bộ bài ban đầu là được sắp xếp đúng. Sau đó xây dựng thuật toán xào bài (Làm vậy mới đúng thực tế chứ không lên lấy quân bài ngẫu nhiên ngay lúc chia). Thuật toán xào đơn giản nhất là bạn random 2 số trong phạm vi 53, đổi giá trị 2 số trong mảng cho nhau. Lặp lại n lần (n>53 nhé). Vậy là ta có 1 bộ bài đã xào.
- Lúc chia bài thì bạn cứ lấy 10 giá trị ở đầu hoặc 10 ở cuối, vậy là đảm bảo vừa ngẫu nhiên, vừa ko lặp lại. Xong yêu cầu 7.

- Yêu cầu 6 thì đơn giản. Muốn biết đấy là quân bài nào bạn lấy giá trị chia cho 4, phần nguyên là quân bài, phần dư là chất.

Chúc bạn học tốt :)

Don't Ban
03-01-2011, 16:42
Chính xác :D Bài này 1 dạng của bài toán đệ quy. Mình chỉ biết làm đệ quy trên Pascal thôi. Nếu bạn học Pascal thì mình có thể giúp bạn :D

Vầng bác cứ nói đi ạ.

Anh Ta^y
03-01-2011, 16:51
bạn học linked list chưa, nếu rồi thì bài này rất đơn giản.

Very T
03-01-2011, 16:52
Vầng bác cứ nói đi ạ.

Trước hết, bạn phải hiểu chương trình con.

Trong Pascal thì chương trình con là Procedure hoặc Function
Trong Visual Basic thì chương trình con là Sub

Ví dụ:



chương trình con 1
begin
...
các câu lệnh
...
end;

chương trình con 2
begin
...
các câu lệnh
...
end;

BEGIN
...
chương trình con 1;
...
chương trình con 2;
...
END.


Có 1 quy tắc thế này, chương trình con ở phía dưới được phép gọi chương trình con ở phía trên, nhưng chương trình con ở phía trên không được phép gọi chương trình con ở phía dưới.

Theo ví dụ ở trên thì:
Chương trình con 2 được phép gọi chương trình con 1, tức là có thể viết như sau:

chương trình con 1
begin
...
các câu lệnh
...
end;

chương trình con 2
begin
...
các câu lệnh
...
chương trình con 1
...
end;

Khi nào bạn hiểu những gì mình viết ở trên thì chúng ta tiếp tục :)

Don't Ban
03-01-2011, 17:13
Em hiểu:D

Anh Ta^y
03-01-2011, 17:18
Nếu mình hiểu không nhầm thì trọng tâm của bài này là rút bài ngẫu nhiên đến hết 52 lá. Lâu rồi không động đến C nên cũng mất 10p đọc lại. Khi code mình 1 tay ôm gối 37 độ , tai nghe power metal nên ít suy nghĩ đến tối ưu, bạn tối ưu đến đâu cứ làm, mình chỉ viết để nó chạy đúng thôi :boss:

#include <iostream>
#include <time.h>


int pickRandomCard(int *cardArray){
int numberOfRemainingCards = 52;

// tinh so la bai con lai
for(int i = 0; i < 52; i++)
if(!cardArray [ i ] )
numberOfRemainingCards--;

// lay so ngau nhien tu 1 - so la bai con lai
srand((unsigned)time(NULL));
int randomPotision = rand()%numberOfRemainingCards+1;


// tim den vi tri ngau nhien do, neu gap 0 tuc la bai da rut roi, bo qua tim la khac
int flag = 0;
for(int i = 0; i < 52; i++)
if(cardArray [ i ]!=0)
if(++flag == randomPotision){
int returnNumber = cardArray [ i ];
cardArray [ i ] =0;
return returnNumber;
}
}

int main(){
int cardArray [52];

// khoi tao bo bai
for(int i = 0; i <52; i++)
cardArray [ i ] = i+1;


// rut bai
int i = 0;
while(i++<52)
printf("%d\n",pickRandomCard(cardArray));


system("pause");
return 0;
}

Anh Ta^y
03-01-2011, 17:20
Không hiểu sao lại dính censor, bạn thông cảm quote lại mà lấy nhé.

teenhoc04
03-01-2011, 19:38
Mình ko biết luật blackjack những cũng có thể tư vấn chút như sau:

- Thuật toán chia bài: bạn tạo 1 mảng 53 phần tử chứa giá trị từ 1-53. Mô phỏng bộ bài ban đầu là được sắp xếp đúng. Sau đó xây dựng thuật toán xào bài (Làm vậy mới đúng thực tế chứ không lên lấy quân bài ngẫu nhiên ngay lúc chia). Thuật toán xào đơn giản nhất là bạn random 2 số trong phạm vi 53, đổi giá trị 2 số trong mảng cho nhau. Lặp lại n lần (n>53 nhé). Vậy là ta có 1 bộ bài đã xào.
- Lúc chia bài thì bạn cứ lấy 10 giá trị ở đầu hoặc 10 ở cuối, vậy là đảm bảo vừa ngẫu nhiên, vừa ko lặp lại. Xong yêu cầu 7.

- Yêu cầu 6 thì đơn giản. Muốn biết đấy là quân bài nào bạn lấy giá trị chia cho 4, phần nguyên là quân bài, phần dư là chất.

Chúc bạn học tốt :)


Thuật toán này có vẻ là tối ưu nhất . Đúng là Voz có nhiều nhân tài toán học , tin học .

Anh Ta^y
03-01-2011, 19:58
Muon xa'o ba`i ba.n du`ng doan code cua minh la on. sr khong co unikey.

_LightninG_
03-01-2011, 22:56
Vầng bác cứ nói đi ạ.

Mình thành thật khuyên bạn nên mua 1 quyển giáo trình toán rời rạc về đọc, chứ cứ học kiểu chắp vá, hơi tí lại lên hỏi thế này thì sẽ chả làm được cái gì cả,

cuongbn
03-01-2011, 23:06
Thế poker với blackjack có khác nhau không, mình biết mỗi poker

Very T
04-01-2011, 00:24
Em hiểu:D

1 đặc điểm ở Pascal là 1 chương trình con có thể tự gọi chính nó
Ví dụ:


chương trình con 1
begin
...
chương trình con 1
...
end;


Nếu làm như thế, ta có thể tạo ra 1 dạng vòng lặp mà ko cần xác định trước :D
Cái kiểu lặp đấy gọi là đệ quy.

Mình khuyên bạn nên đi tìm thêm tài liệu về đệ quy để học tiếp, mình chỉ giải thích cho bạn dễ hiểu về khái niệm đệ quy thôi :)

teenhoc04
21-01-2011, 00:20
update
đây là đề bài và flowchart của mình ,cả 1/2 chương trình đang code dở nữa

trình độ của mình ở mức 3 tháng aptech ,2 tháng học C . tiếng anh mức bằng A
gần được B . Mong các bác đưa ra kiến thức đơn giản , nếu cao quá mình sợ không hiểu hết được .
đây là đoạn code bị lỗi mọi người xem dùm hộ .
void hienThiA(bai laxd[10],int card[52], int hm, int ai ) // hien thi 2 cay cua nguoi choi 1 cay cua may
{
typedef struct bai
{
int diem;
char chat[5];
char ten[5];
}bai;
int i,j,k,m,n;

int diemHM,diemAI;
diemHM=0; diemAI=0;
int hienThiHM=1;
int hienThiAI=2;
for(i=0;i<10;i++)
{
k=card[i]/4;
int(k);
m=card[i]%4;
switch(k)
{
case (1):
{ strcpy(laxd[i].ten,"at");
laxd[i].diem=11;
break;
}
case (2):
{ strcpy(laxd[i].ten,"hai");
laxd[i].diem=2;
break;
case (3):
{ strcpy(laxd[i].ten,"ba");
laxd[i].diem=3;
break;
case (4):
{ strcpy(laxd[i].ten,"bon");
laxd[i].diem=4;
break;
}
case (5):
{ strcpy(laxd[i].ten,"nam");
laxd[i].diem=5;
break;
}
case (6):
{ strcpy(laxd[i].ten,"sau");
laxd[i].diem=6 ;
break;
}
case (7):
{ strcpy(laxd[i].ten,"bay");
laxd[i].diem=7 ;
break;
}
case (8):
{ strcpy(laxd[i].ten,"tam");
laxd[i].diem=8 ;
break;
}
case (9):
{ strcpy(laxd[i].ten,"chin");
laxd[i].diem=9 ;
break;
}
case (10):
{ strcpy(laxd[i].ten,"muoi");
laxd[i].diem=10 ;
break;
}
case (11):
{ strcpy(laxd[i].ten,"Joker");
laxd[i].diem=10 ;
break;
}
case (12):
{ strcpy(laxd[i].ten,"Queen");
laxd[i].diem=10 ;
break;
}
case (13):
{ strcpy(laxd[i].ten,"King");
laxd[i].diem=10 ;
break;
}

}


trình biên dịch là dev C

Link down dev C


đây là file đính kèm bao gồm đề bài flowchart , 1/2 chương trình của mình


link MF cho dễ down :http://www.mediafire.com/?fa8gucbriplrr

đã update