Hàm chuyển số thành chữ !
3 posters
:: Góc Học Tập :: Cơ Sở Lập Trình
Trang 1 trong tổng số 1 trang
Hàm chuyển số thành chữ !
lang thang trên mạng tự nhiên thấy , bạn nào đọc qua tranh thủ post bài chỉnh sủa đoạn code này lại cho hoàn thiện nha (cái này là C)
public void docso()
{
string s = textBox1.Text.Trim();
if (s != "")
{
s = xoasokhong(s);
switch (s.Length)
{
case 1: label1.Text = motso(s) + " đồng"; break;
case 2: label1.Text = haiso(s) + " đồng"; break;
case 3: label1.Text = baso(s) + " đồng"; break;
default: label1.Text = nhieuso(s, s.Length); break;
}
}
else label1.Text = "Bạn phải nhập giá trị vào";
}
#region Các hàm đọc số
public string motso(string bienso)
{
switch (bienso)
{
case "0": return "không";
case "1": return "một";
case "2": return "hai";
case "3": return "ba";
case "4": return "bốn";
case "5": return "năm";
case "6": return "sáu";
case "7": return "bảy";
case "8": return "tám";
case "9": return "chín";
}
return "không";
}
public string haiso(string bienso)
{
string biendoc = " mười ";
if ((bienso.Substring(1, 1) == "0") && (bienso.Substring(0, 1)
!= "1")) biendoc = motso(bienso.Substring(0, 1)) + " mươi ";
if (bienso.Substring(1, 1) != "0")
switch (bienso.Substring(1, 1))
{
case "5":
if (bienso.Substring(0, 1) == "1") biendoc = " mười lăm";
else biendoc = motso(bienso.Substring(0, 1)) + " mươi lăm";
break;
case "1":
if (bienso.Substring(0, 1) == "1") biendoc = " mười một";
else biendoc = motso(bienso.Substring(0, 1)) + " mươi mốt";
break;
default:
if (bienso.Substring(0, 1) == "1") biendoc = " mười " + motso(bienso.Substring(1, 1));
else biendoc = motso(bienso.Substring(0, 1)) + " mươi " + motso(bienso.Substring(1, 1));
break;
}
return biendoc;
}
public string baso(string bienso)
{
string biendoc = "trăm";
if (bienso.Substring(1, 1) == "0")
{
if (bienso.Substring(2, 1) == "0") biendoc = motso(bienso.Substring(0, 1)) + " trăm ";
else biendoc = motso(bienso.Substring(0, 1)) + " trăm lẻ " + motso(bienso.Substring(2, 1));
}
else
{
biendoc = motso(bienso.Substring(0, 1)) + " trăm " + haiso(bienso.Substring(1, 2));
}
return biendoc;
}
#endregion
// hàm xử lý vấn đề số 0
private string xoasokhong(string tam)
{
while (tam[0] == '0')
{
if (tam.Length > 1) tam = tam.Substring(1,tam.Length-1);
else break;
}
return tam;
}
// hàm xử lý chèn các giá trị
private string kieuchen(int tam)
{
switch (tam)
{
case 0: return " đồng ";
case 1: return " nghìn ";
case 2: return " triệu ";
case 3: return " tỷ ";
}
return "";
}
// hàm đọc nhiều số
private string nhieuso(string bienso, int dodai)
{
string biendoc = "", bientam = "";
int i = 0;
while ((dodai) > 3)
{
bientam = baso(bienso.Substring(bienso.Length - 3, 3));
bienso = bienso.Substring(0, bienso.Length - 3);
biendoc = bientam + kieuchen(i) + biendoc;
i++;
if (i > 3) i = 1;
if (dodai > 3) dodai = dodai - 3;
}
if (dodai == 1) biendoc = motso(bienso) + kieuchen(i) + biendoc;
if (dodai == 2) biendoc = haiso(bienso) + kieuchen(i) + biendoc;
if (dodai == 3) biendoc = baso(bienso) + kieuchen(i) + biendoc;
return biendoc;
}
public void docso()
{
string s = textBox1.Text.Trim();
if (s != "")
{
s = xoasokhong(s);
switch (s.Length)
{
case 1: label1.Text = motso(s) + " đồng"; break;
case 2: label1.Text = haiso(s) + " đồng"; break;
case 3: label1.Text = baso(s) + " đồng"; break;
default: label1.Text = nhieuso(s, s.Length); break;
}
}
else label1.Text = "Bạn phải nhập giá trị vào";
}
#region Các hàm đọc số
public string motso(string bienso)
{
switch (bienso)
{
case "0": return "không";
case "1": return "một";
case "2": return "hai";
case "3": return "ba";
case "4": return "bốn";
case "5": return "năm";
case "6": return "sáu";
case "7": return "bảy";
case "8": return "tám";
case "9": return "chín";
}
return "không";
}
public string haiso(string bienso)
{
string biendoc = " mười ";
if ((bienso.Substring(1, 1) == "0") && (bienso.Substring(0, 1)
!= "1")) biendoc = motso(bienso.Substring(0, 1)) + " mươi ";
if (bienso.Substring(1, 1) != "0")
switch (bienso.Substring(1, 1))
{
case "5":
if (bienso.Substring(0, 1) == "1") biendoc = " mười lăm";
else biendoc = motso(bienso.Substring(0, 1)) + " mươi lăm";
break;
case "1":
if (bienso.Substring(0, 1) == "1") biendoc = " mười một";
else biendoc = motso(bienso.Substring(0, 1)) + " mươi mốt";
break;
default:
if (bienso.Substring(0, 1) == "1") biendoc = " mười " + motso(bienso.Substring(1, 1));
else biendoc = motso(bienso.Substring(0, 1)) + " mươi " + motso(bienso.Substring(1, 1));
break;
}
return biendoc;
}
public string baso(string bienso)
{
string biendoc = "trăm";
if (bienso.Substring(1, 1) == "0")
{
if (bienso.Substring(2, 1) == "0") biendoc = motso(bienso.Substring(0, 1)) + " trăm ";
else biendoc = motso(bienso.Substring(0, 1)) + " trăm lẻ " + motso(bienso.Substring(2, 1));
}
else
{
biendoc = motso(bienso.Substring(0, 1)) + " trăm " + haiso(bienso.Substring(1, 2));
}
return biendoc;
}
#endregion
// hàm xử lý vấn đề số 0
private string xoasokhong(string tam)
{
while (tam[0] == '0')
{
if (tam.Length > 1) tam = tam.Substring(1,tam.Length-1);
else break;
}
return tam;
}
// hàm xử lý chèn các giá trị
private string kieuchen(int tam)
{
switch (tam)
{
case 0: return " đồng ";
case 1: return " nghìn ";
case 2: return " triệu ";
case 3: return " tỷ ";
}
return "";
}
// hàm đọc nhiều số
private string nhieuso(string bienso, int dodai)
{
string biendoc = "", bientam = "";
int i = 0;
while ((dodai) > 3)
{
bientam = baso(bienso.Substring(bienso.Length - 3, 3));
bienso = bienso.Substring(0, bienso.Length - 3);
biendoc = bientam + kieuchen(i) + biendoc;
i++;
if (i > 3) i = 1;
if (dodai > 3) dodai = dodai - 3;
}
if (dodai == 1) biendoc = motso(bienso) + kieuchen(i) + biendoc;
if (dodai == 2) biendoc = haiso(bienso) + kieuchen(i) + biendoc;
if (dodai == 3) biendoc = baso(bienso) + kieuchen(i) + biendoc;
return biendoc;
}
Re: Hàm chuyển số thành chữ !
class Class1
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
//string t = string.Empty;
string str= "";
while(str!="?")
{
str = Console.ReadLine();
try{double.Parse(str);}
catch{break;}
Console.WriteLine(DocSo(double.Parse(str)));
}
}
public static string DocSo(double n)
{
string strSo = n.ToString();
int len = (int)strSo.Length / 3;
if(len*3 < strSo.Length)len++;
string[] t = new string[len];
int i = 0;
while(strSo != "")
{
if(strSo.Length > 3)
{
tIdea = strSo.Substring(strSo.Length - 3,3);
strSo = strSo.Substring(0,strSo.Length - 3);
}
else
{
tIdea = strSo;
strSo = "";
}
i++;
}
string str="";
string temp;
for(i = t.Length-1; i>=0; i--)
{
temp = Doc3(tIdea);
if(temp.Trim() != "")
{
str += temp.Trim() + " " + DonVi(i+1) + " ";
}
}
return str;
}
public static string DonVi(int n)
{
string str = "";
switch(n.ToString())
{
case "0":
str = "VN";
break;
case "1":
str = "Dong";
break;
case "2":
str = "Ngan";
break;
case "3":
str = "Trieu";
break;
case "4":
str = "Ty";
break;
}
return str;
}
public static string Doc3(string n)
{
string tram = string.Empty,chuc=string.Empty,dv = string.Empty;
if(n.Length == 3)
{
tram = n[0].ToString();
chuc = n[1].ToString();
dv = n[2].ToString();
}
if(n.Length == 2)
{
chuc = n[0].ToString();
dv = n[1].ToString();
}
if(n.Length == 1)
{
dv = n[0].ToString();
}
if(n != "000")
{
if(tram != "") tram = So(int.Parse(tram)) + " Tram";
if(chuc != ""){
switch(chuc)
{
case "0":
if(dv != "0"){
chuc = "Le";dv = So(int.Parse(dv));
}else{
dv = "";
chuc = "";
}
break;
case "1":
chuc = " Muoi";
if(dv != "0"){
if(dv=="5"){
dv = "Lam";
}else{
dv = So(double.Parse(dv));
}
}else{
dv = "";
}
break;
default:
chuc = So(int.Parse(chuc)) + " Muoi";
if(dv=="5")
{
dv = "Lam";
}
else
{
if(dv != "0") dv = So(int.Parse(dv));
else dv = "";
}
//dv = So(int.Parse(dv));
break;
}
}
else
{
if(chuc != "")
{
switch(chuc)
{
case "1":
chuc = " Muoi";
if(dv != "0")
{
if(dv=="5")
{
dv = "Lam";
}
else
{
dv = So(int.Parse(dv));
}
}
break;
default:
chuc = So(int.Parse(chuc)) + " Muoi";
if(dv=="5")
{
dv = "Lam";
}
else
{
dv = So(int.Parse(dv));
}
break;
}
}
else
{
dv = So(int.Parse(dv));
}
}
}
else
{
tram = "";
chuc = "";
dv = "";
}
return tram + " " + chuc + " " + dv;
}
public static string So(double n)
{
string str = "";
switch(n.ToString())
{
case "0":
str = "Khong";
break;
case "1":
str = "Mot";
break;
case "2":
str = "Hai";
break;
case "3":
str = "Ba";
break;
case "4":
str = "Bon";
break;
case "5":
str = "Nam";
break;
case "6":
str = "Sau";
break;
case "7":
str = "Bay";
break;
case "8":
str = "Tam";
break;
case "9":
str = "Chin";
break;
}
return str;
}
}
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
//string t = string.Empty;
string str= "";
while(str!="?")
{
str = Console.ReadLine();
try{double.Parse(str);}
catch{break;}
Console.WriteLine(DocSo(double.Parse(str)));
}
}
public static string DocSo(double n)
{
string strSo = n.ToString();
int len = (int)strSo.Length / 3;
if(len*3 < strSo.Length)len++;
string[] t = new string[len];
int i = 0;
while(strSo != "")
{
if(strSo.Length > 3)
{
tIdea = strSo.Substring(strSo.Length - 3,3);
strSo = strSo.Substring(0,strSo.Length - 3);
}
else
{
tIdea = strSo;
strSo = "";
}
i++;
}
string str="";
string temp;
for(i = t.Length-1; i>=0; i--)
{
temp = Doc3(tIdea);
if(temp.Trim() != "")
{
str += temp.Trim() + " " + DonVi(i+1) + " ";
}
}
return str;
}
public static string DonVi(int n)
{
string str = "";
switch(n.ToString())
{
case "0":
str = "VN";
break;
case "1":
str = "Dong";
break;
case "2":
str = "Ngan";
break;
case "3":
str = "Trieu";
break;
case "4":
str = "Ty";
break;
}
return str;
}
public static string Doc3(string n)
{
string tram = string.Empty,chuc=string.Empty,dv = string.Empty;
if(n.Length == 3)
{
tram = n[0].ToString();
chuc = n[1].ToString();
dv = n[2].ToString();
}
if(n.Length == 2)
{
chuc = n[0].ToString();
dv = n[1].ToString();
}
if(n.Length == 1)
{
dv = n[0].ToString();
}
if(n != "000")
{
if(tram != "") tram = So(int.Parse(tram)) + " Tram";
if(chuc != ""){
switch(chuc)
{
case "0":
if(dv != "0"){
chuc = "Le";dv = So(int.Parse(dv));
}else{
dv = "";
chuc = "";
}
break;
case "1":
chuc = " Muoi";
if(dv != "0"){
if(dv=="5"){
dv = "Lam";
}else{
dv = So(double.Parse(dv));
}
}else{
dv = "";
}
break;
default:
chuc = So(int.Parse(chuc)) + " Muoi";
if(dv=="5")
{
dv = "Lam";
}
else
{
if(dv != "0") dv = So(int.Parse(dv));
else dv = "";
}
//dv = So(int.Parse(dv));
break;
}
}
else
{
if(chuc != "")
{
switch(chuc)
{
case "1":
chuc = " Muoi";
if(dv != "0")
{
if(dv=="5")
{
dv = "Lam";
}
else
{
dv = So(int.Parse(dv));
}
}
break;
default:
chuc = So(int.Parse(chuc)) + " Muoi";
if(dv=="5")
{
dv = "Lam";
}
else
{
dv = So(int.Parse(dv));
}
break;
}
}
else
{
dv = So(int.Parse(dv));
}
}
}
else
{
tram = "";
chuc = "";
dv = "";
}
return tram + " " + chuc + " " + dv;
}
public static string So(double n)
{
string str = "";
switch(n.ToString())
{
case "0":
str = "Khong";
break;
case "1":
str = "Mot";
break;
case "2":
str = "Hai";
break;
case "3":
str = "Ba";
break;
case "4":
str = "Bon";
break;
case "5":
str = "Nam";
break;
case "6":
str = "Sau";
break;
case "7":
str = "Bay";
break;
case "8":
str = "Tam";
break;
case "9":
str = "Chin";
break;
}
return str;
}
}
MERCI...!
Hi khongxacdinh,
Mình cũng đang tìm you post lên kịp thời luôn thanks nha.hihi
Về xem nhưng không biết hiểu không nữa,
Hỏi nhỏ nhe, tên của you?!
Mình cũng đang tìm you post lên kịp thời luôn thanks nha.hihi
Về xem nhưng không biết hiểu không nữa,
Hỏi nhỏ nhe, tên của you?!
NguyenHong- Tổng số bài gửi : 12
Join date : 16/09/2009
Age : 37
Đến từ : Tiền Giang
Re: Hàm chuyển số thành chữ !
Chào Bà con....
Tui mói lợm được con cờ Caro nè. Bà con nào sửa được qua C# thì Post lại đi cho học hỏi chút nha!
//---------------------------------------//
Subject: Viet game tro choi caro
* Cac bien su dung *****
* dong,cot : dung de xac dinh so dong vao so cot cua mang A[][].
* x,y : vi tri co dinh cua mang A[][].
* c1,c2,c3,c4 : dung de truyen ky tu ke ban co caro.
* x1,y1,x2,y2 : la luu vi tri tai goc ben trai va goc ben phai cua ban co.
* k,l : la vi tri hien tai cua dau nhay.
* dx,dy : la khoang cach cua x va y khi di chuyen phim tren ban co.
* K_Tra : dung de kiem tra xem da thang chua.
* Ten[2] : dung luu ho ten cua 2 nguoi choi.
* ch : dung de nhan biet cac phim mui ten, phim, phim .
* Co : luu ky tu quan co 'X' hay 'O'.
* A[][] : dung de luu cac quan co voi ky tu 'X'=1, 'O'=2.
* flag : dung de nhan biet nguoi choi thu 1 chon 'X' hay 'O'.
* m : dung de dem co du 5 quan lien tiep cung loai hay khong ?
* i,j : dung lam bien chay.
* GTD,GTC : dung luu gia tri chan 2 dau cua quan co.
*/
#include
#include
#include
const dong=25,cot=47,x=cot/2,y=dong/2;
/* Thu tuc ve 1 dong */
void Ve_1d(int x2,char c1,char c2,char c3,char c4)
{ cprintf("%c",c1);
for (int i=1;i<=(x2-3)/2;i++)
cprintf("%c%c",c2,c3);
cprintf("%c%c",c2,c4);
}
//============================================
/* Thu tuc ke bang */
void Ke_bang(int x1,int y1,int x2,int y2){ gotoxy(x1,y1);
Ve_1d(x2,'Ú','Ä','Â','¿');
for (int i=1;i<(y2-y1);i++)
{ gotoxy(x1,y1+i);
Ve_1d(x2,'Ã','Ä','Å','´');
}
gotoxy(x1,y2);
Ve_1d(x2,'À','Ä','Á','Ù');
}
//============================================
/* Thu tuc nhap ho ten nguoi choi */
void Nhap_HoTen(char *Ten[])
{ for (int k=0;k<2;k++)
{ printf("Nhap ho ten nguoi thu %d=",k+1);
gets(Ten[k]);
}
}
//============================================
/* Thu tuc bam phim qua trai */
void Qua_Trai(int &l,int dx){ if (l==-x/dx)
l=(x+1)/dx;
else l--;
}
/* Thu tuc bam phim qua phai */
void Qua_Phai(int &l,int dx)
{ if (l==(x+1)/dx)
l=-x/dx;
else l++;
}
/* Thu tuc bam phim di len */
void Di_Len(int &k,int dy)
{ if (k==-(y-1)/dy)
k=(y+1)/dy;
else k--;
}
//============================================/* Thu tuc bam phim di xuong */
void Di_Xuong(int &k,int dy)
{ if (k==(y+1)/dy)
k=-(y-1)/dy;
else k++;
}
//============================================
/* Ham kiem tra duong cheo goc trai */
int Ktra_DuongCheo1(int A[dong][cot],int k,int l,int >D,int >C)
{ int i,j,m;
for (i=k-1,j=l-1,m=1;i>=k-5;i--,j--)
if (A[y+k][x+l]==A[y+i][x+j])
m++;
else
{ GTD=A[y+i][x+j];
break;
}
for (i=k+1,j=l+1;i<=k+5;i++,j++)
if (A[y+k][x+l]==A[y+i][x+j])
m++;
else
{ GTC=A[y+i][x+j];
break;
}
return m;
}
//============================================
/* Ham kiem tra duong thang dung */
int Ktra_DuongThang(int A[dong][cot],int k,int l,int >D,int >C)
{ int i,m;
for (i=k-1,m=1;i>=k-5;i--)
if (A[y+k][x+l]==A[y+i][x+l])
m++;
else
{ GTD=A[y+i][x+l];
break;
}
for (i=k+1;i<=k+5;i++)
if (A[y+k][x+l]==A[y+i][x+l])
m++;
else
{ GTC=A[y+i][x+l];
break;
}
return m;
}
============================================
/* Ham kiem tra duong cheo goc phai */
int Ktra_DuongCheo2(int A[dong][cot],int k,int l,int >D,int >C)
{ int i,j,m;
for (i=k-1,j=l+1,m=1;i>=k-5;i--,j++)
if (A[y+k][x+l]==A[y+i][x+j])
m++;
else
{ GTD=A[y+i][x+j];
break;
}
for (i=k+1,j=l-1;i<=k+5;i++,j--)
if (A[y+k][x+l]==A[y+i][x+j])
m++;
else
{ GTC=A[y+i][x+j];
break;
}
return m;
}
============================================
/* Ham kiem tra duong ngang */
int Ktra_DuongNgang(int A[dong][cot],int k,int l,int >D,int >C)
{ int j,m;
for (j=l-1,m=1;j>=l-5;j--)
if (A[y+k][x+l]==A[y+k][x+j])
m++;
else
{ GTD=A[y+k][x+j];
break;
}
for (j=l+1;j<=l+5;j++)
if (A[y+k][x+l]==A[y+k][x+j])
m++;
else
{ GTC=A[y+k][x+j];
break;
}
return m;
}
//============================================
/* Ham kiem tra thang chua */
int Ktra_Thang(int A[dong][cot],int k,int l)
{ int m,GTD,GTC,SoLan=0;
while (SoLan++<=4)
{ switch (SoLan)
{ case 1: m=Ktra_DuongCheo1(A,k,l,GTD,GTC); break;
case 2: m=Ktra_DuongThang(A,k,l,GTD,GTC); break;
case 3: m=Ktra_DuongCheo2(A,k,l,GTD,GTC); break;
case 4: m=Ktra_DuongNgang(A,k,l,GTD,GTC); break;
}
if ((m==5) && ((GTD==0) || (GTC==0)))
return 1;
}
return 0;
}
/* Ham luu va xuat quan co */
char LuuXuat_QuanCo(int A[dong][cot],int k,int l,int Co)
{ int So,mau;
So=(Co=='X') ? 1:2;
mau=(Co=='X') ? 12:14;
if (A[y+k][x+l]==0)
{ A[y+k][x+l]=So;
textcolor(mau);
putch(Co);
if (Ktra_Thang(A,k,l)!=1)
switch (Co)
{ case 'X': Co='O'; break;
case 'O': Co='X'; break;
}
}
return Co;
}
void main()
{ int A[dong][cot],k,l,K_Tra,flag;
const dx=2,dy=1;
char *Ten[2];
char ch,Co;
start:
textattr(0x07);
clrscr();
Nhap_HoTen(Ten);
printf("Ban %s chon quan co di truoc (X/O)=",Ten[0]);
Co=toupper(getch());
flag=(Co=='X') ? 0:1;
/* Tao gia tri 0 cho mang A[][] */
for (k=0;k for (l=0;l A[k] =0;
clrscr();
gotoxy(56,1);
textattr(0x5E+128);
cprintf("Tro Choi Caro !");
textattr(0x07);
/* Ke ban co caro */
textcolor(2);
Ke_bang(1,1,cot,dong);
textcolor(7);
k=0,l=0;
do
{ gotoxy(x+l*dx,y+k*dy);
ch=getch();
if (ch==27) goto thoat;
if (ch=='\0')
{ ch=getch();
switch (ch)
{ case 'K': Qua_Trai(l,dx); break; // Trai
case 'M': Qua_Phai(l,dx); break; // Phai
case 'H': Di_Len(k,dy); break; // Len
case 'P': Di_Xuong(k,dy); break; // Xuong
}
} // if (ch=='\0')
else
if (ch==13)
switch (Co)
{ case 'X': Co=LuuXuat_QuanCo(A,k,l,Co);
case 'O': Co=LuuXuat_QuanCo(A,k,l,Co);
} // switch (Co)
K_Tra=Ktra_Thang(A,k,l);
}
while ((ch!=27) && (K_Tra!=1));
gotoxy(50,23);
textcolor(13);
if ((K_Tra==1) && (flag==0))
cprintf("Ban %s da thang !",Ten[A[y+k][x+l]-1]);
if ((K_Tra==1) && (flag==1))
cprintf("Ban %s da thang !",Ten[2-A[y+k][x+l]]);
thoat:
gotoxy(50,25);
textcolor(11);
cprintf("Ban co tiep tuc khong ?");
textcolor(7);
ch=getch();
if (toupper(ch)=='Y') goto start;
}
Tui mói lợm được con cờ Caro nè. Bà con nào sửa được qua C# thì Post lại đi cho học hỏi chút nha!
//---------------------------------------//
Subject: Viet game tro choi caro
* Cac bien su dung *****
* dong,cot : dung de xac dinh so dong vao so cot cua mang A[][].
* x,y : vi tri co dinh cua mang A[][].
* c1,c2,c3,c4 : dung de truyen ky tu ke ban co caro.
* x1,y1,x2,y2 : la luu vi tri tai goc ben trai va goc ben phai cua ban co.
* k,l : la vi tri hien tai cua dau nhay.
* dx,dy : la khoang cach cua x va y khi di chuyen phim tren ban co.
* K_Tra : dung de kiem tra xem da thang chua.
* Ten[2] : dung luu ho ten cua 2 nguoi choi.
* ch : dung de nhan biet cac phim mui ten, phim
* Co : luu ky tu quan co 'X' hay 'O'.
* A[][] : dung de luu cac quan co voi ky tu 'X'=1, 'O'=2.
* flag : dung de nhan biet nguoi choi thu 1 chon 'X' hay 'O'.
* m : dung de dem co du 5 quan lien tiep cung loai hay khong ?
* i,j : dung lam bien chay.
* GTD,GTC : dung luu gia tri chan 2 dau cua quan co.
*/
#include
#include
#include
const dong=25,cot=47,x=cot/2,y=dong/2;
/* Thu tuc ve 1 dong */
void Ve_1d(int x2,char c1,char c2,char c3,char c4)
{ cprintf("%c",c1);
for (int i=1;i<=(x2-3)/2;i++)
cprintf("%c%c",c2,c3);
cprintf("%c%c",c2,c4);
}
//============================================
/* Thu tuc ke bang */
void Ke_bang(int x1,int y1,int x2,int y2){ gotoxy(x1,y1);
Ve_1d(x2,'Ú','Ä','Â','¿');
for (int i=1;i<(y2-y1);i++)
{ gotoxy(x1,y1+i);
Ve_1d(x2,'Ã','Ä','Å','´');
}
gotoxy(x1,y2);
Ve_1d(x2,'À','Ä','Á','Ù');
}
//============================================
/* Thu tuc nhap ho ten nguoi choi */
void Nhap_HoTen(char *Ten[])
{ for (int k=0;k<2;k++)
{ printf("Nhap ho ten nguoi thu %d=",k+1);
gets(Ten[k]);
}
}
//============================================
/* Thu tuc bam phim qua trai */
void Qua_Trai(int &l,int dx){ if (l==-x/dx)
l=(x+1)/dx;
else l--;
}
/* Thu tuc bam phim qua phai */
void Qua_Phai(int &l,int dx)
{ if (l==(x+1)/dx)
l=-x/dx;
else l++;
}
/* Thu tuc bam phim di len */
void Di_Len(int &k,int dy)
{ if (k==-(y-1)/dy)
k=(y+1)/dy;
else k--;
}
//============================================/* Thu tuc bam phim di xuong */
void Di_Xuong(int &k,int dy)
{ if (k==(y+1)/dy)
k=-(y-1)/dy;
else k++;
}
//============================================
/* Ham kiem tra duong cheo goc trai */
int Ktra_DuongCheo1(int A[dong][cot],int k,int l,int >D,int >C)
{ int i,j,m;
for (i=k-1,j=l-1,m=1;i>=k-5;i--,j--)
if (A[y+k][x+l]==A[y+i][x+j])
m++;
else
{ GTD=A[y+i][x+j];
break;
}
for (i=k+1,j=l+1;i<=k+5;i++,j++)
if (A[y+k][x+l]==A[y+i][x+j])
m++;
else
{ GTC=A[y+i][x+j];
break;
}
return m;
}
//============================================
/* Ham kiem tra duong thang dung */
int Ktra_DuongThang(int A[dong][cot],int k,int l,int >D,int >C)
{ int i,m;
for (i=k-1,m=1;i>=k-5;i--)
if (A[y+k][x+l]==A[y+i][x+l])
m++;
else
{ GTD=A[y+i][x+l];
break;
}
for (i=k+1;i<=k+5;i++)
if (A[y+k][x+l]==A[y+i][x+l])
m++;
else
{ GTC=A[y+i][x+l];
break;
}
return m;
}
============================================
/* Ham kiem tra duong cheo goc phai */
int Ktra_DuongCheo2(int A[dong][cot],int k,int l,int >D,int >C)
{ int i,j,m;
for (i=k-1,j=l+1,m=1;i>=k-5;i--,j++)
if (A[y+k][x+l]==A[y+i][x+j])
m++;
else
{ GTD=A[y+i][x+j];
break;
}
for (i=k+1,j=l-1;i<=k+5;i++,j--)
if (A[y+k][x+l]==A[y+i][x+j])
m++;
else
{ GTC=A[y+i][x+j];
break;
}
return m;
}
============================================
/* Ham kiem tra duong ngang */
int Ktra_DuongNgang(int A[dong][cot],int k,int l,int >D,int >C)
{ int j,m;
for (j=l-1,m=1;j>=l-5;j--)
if (A[y+k][x+l]==A[y+k][x+j])
m++;
else
{ GTD=A[y+k][x+j];
break;
}
for (j=l+1;j<=l+5;j++)
if (A[y+k][x+l]==A[y+k][x+j])
m++;
else
{ GTC=A[y+k][x+j];
break;
}
return m;
}
//============================================
/* Ham kiem tra thang chua */
int Ktra_Thang(int A[dong][cot],int k,int l)
{ int m,GTD,GTC,SoLan=0;
while (SoLan++<=4)
{ switch (SoLan)
{ case 1: m=Ktra_DuongCheo1(A,k,l,GTD,GTC); break;
case 2: m=Ktra_DuongThang(A,k,l,GTD,GTC); break;
case 3: m=Ktra_DuongCheo2(A,k,l,GTD,GTC); break;
case 4: m=Ktra_DuongNgang(A,k,l,GTD,GTC); break;
}
if ((m==5) && ((GTD==0) || (GTC==0)))
return 1;
}
return 0;
}
/* Ham luu va xuat quan co */
char LuuXuat_QuanCo(int A[dong][cot],int k,int l,int Co)
{ int So,mau;
So=(Co=='X') ? 1:2;
mau=(Co=='X') ? 12:14;
if (A[y+k][x+l]==0)
{ A[y+k][x+l]=So;
textcolor(mau);
putch(Co);
if (Ktra_Thang(A,k,l)!=1)
switch (Co)
{ case 'X': Co='O'; break;
case 'O': Co='X'; break;
}
}
return Co;
}
void main()
{ int A[dong][cot],k,l,K_Tra,flag;
const dx=2,dy=1;
char *Ten[2];
char ch,Co;
start:
textattr(0x07);
clrscr();
Nhap_HoTen(Ten);
printf("Ban %s chon quan co di truoc (X/O)=",Ten[0]);
Co=toupper(getch());
flag=(Co=='X') ? 0:1;
/* Tao gia tri 0 cho mang A[][] */
for (k=0;k
clrscr();
gotoxy(56,1);
textattr(0x5E+128);
cprintf("Tro Choi Caro !");
textattr(0x07);
/* Ke ban co caro */
textcolor(2);
Ke_bang(1,1,cot,dong);
textcolor(7);
k=0,l=0;
do
{ gotoxy(x+l*dx,y+k*dy);
ch=getch();
if (ch==27) goto thoat;
if (ch=='\0')
{ ch=getch();
switch (ch)
{ case 'K': Qua_Trai(l,dx); break; // Trai
case 'M': Qua_Phai(l,dx); break; // Phai
case 'H': Di_Len(k,dy); break; // Len
case 'P': Di_Xuong(k,dy); break; // Xuong
}
} // if (ch=='\0')
else
if (ch==13)
switch (Co)
{ case 'X': Co=LuuXuat_QuanCo(A,k,l,Co);
case 'O': Co=LuuXuat_QuanCo(A,k,l,Co);
} // switch (Co)
K_Tra=Ktra_Thang(A,k,l);
}
while ((ch!=27) && (K_Tra!=1));
gotoxy(50,23);
textcolor(13);
if ((K_Tra==1) && (flag==0))
cprintf("Ban %s da thang !",Ten[A[y+k][x+l]-1]);
if ((K_Tra==1) && (flag==1))
cprintf("Ban %s da thang !",Ten[2-A[y+k][x+l]]);
thoat:
gotoxy(50,25);
textcolor(11);
cprintf("Ban co tiep tuc khong
textcolor(7);
ch=getch();
if (toupper(ch)=='Y') goto start;
}
angel_hb- Khởi đầu
- Tổng số bài gửi : 28
Join date : 21/09/2009
Age : 37
Đến từ : Thủ Đức - TP HCM
Similar topics
» Bài giải của thầy về chuyển số thành chữ + file bài giảng
» Thông báo chuyến đi thay thế cho chuyến đi Vườn Xoài
» Máy hiệu chuẩn âm thanh, thiết bị hiệu chuẩn âm thanh
» Chuyện vui !
» [Vui] Phản Ứng Dây Chuyền
» Thông báo chuyến đi thay thế cho chuyến đi Vườn Xoài
» Máy hiệu chuẩn âm thanh, thiết bị hiệu chuẩn âm thanh
» Chuyện vui !
» [Vui] Phản Ứng Dây Chuyền
:: Góc Học Tập :: Cơ Sở Lập Trình
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|
10/12/2020, 01:06 by Ti3uThucodon93
» Tiểu thuyết : Yêu anh là sai lầm của cuộc đời em
24/2/2019, 11:49 by Ti3uThucodon93
» Tiểu thuyết : Yêu sai thời điểm
23/2/2019, 16:39 by Ti3uThucodon93
» Thơ Trung Quốc !
15/10/2018, 10:05 by Ti3uThucodon93
» Câu nói hay !
22/1/2017, 15:59 by Ti3uThucodon93
» Thơ tình dài !
15/11/2016, 11:45 by Ti3uThucodon93
» Thơ 4 câu !
1/9/2016, 16:14 by Ti3uThucodon93
» Thơ hài hước !
9/8/2016, 09:04 by Ti3uThucodon93
» Cách chữa trị bệnh hôi nách dành cho sinh viên
30/7/2016, 16:02 by thammybacsihathanh