Code:
// code chơi kéo búa bao
// búa = 1, kéo = 2, bao = 3
int NhapKeoBuaBao(int n);
int SoSanhKeoBuaBao(int n1, int n2);
// code chính
int kqDienTien = 0; kqVan = 0;
while (kqDienTien > -3 && kqDienTien < 3)
{
// code gọi hàm dưới đây giả sử compiler không tính theo stack
// tức là nó sẽ tính tham sô thứ 1 trước thám số thứ 2
// nếu complier tính theo stack, tính tham số thứ 1 sau cùng thì đổi, đưa 2 lên trước
kqVan = SoSanhKeoBuaBao(NhapKeoBuaBao(1), NhapKeoBuaBao(2));
// code tính kết quả diễn tiến
// nếu kết quả ván là hòa thì xóa kết quả diễn tiến
// nếu đổi dấu (đang thắng thành thua, thì theo kết quả ván,
// nếu không đổi dấu (tiếp tục thắng) thì cộng thêm kết quả diễn tiến
kqDienTien = (kqVan==0)? 0 : (kqVan*kqDienTien < 0)? kqVan : kqDienTien + kqVan;
}
printf("%d thắng", (kqDienTien > 0)? 1 : 2);
// hết
// các hàm liên hệ:
int kqDienTien = 0;
while (kqDienTien > -3 && kqDienTien < 3)
{
n1 = 0
while (!n1)
{
scanf(*n1)
}
}
int NhapKeoBuaBao(int n)
{
printf("Người thứ %d (1=búa, 2=búa, 3=bao) ", n);
while (1)
{
scanf("%d", &n);
if (n >= 1 && n <= 3) return n;
printf("Đã bảo chỉ nhập 1, 2, hoăc 3. Mần ơn nhập lại\n");
}
}
int SoSanhKeoBuaBao(int n1, int n2)
// hàm trả vè 0 nếu hòa, 1 nếu n1 > n2, -1 nếu n1 < n2
{
switch (n1-n2)
{
case 0: return 0;
case 1: case -2: return 1;
default: return -1;
}
}
Bookmarks