|
|
|
C# WinApp การเช็คค่า string/double ครับ |
|
|
|
|
|
|
|
Code (C#)
string Ans;
void GetAns() {
timer1.Stop();
if (string.IsNullOrEmpty(lblEq.Text))
{
score++;
MessageBox.Show("ได้คะแนนฟรี 1 คะแนน");
lblStatus.Write($"ได้คะแนนฟรี 1 คะแนน");
log.Debug($"ได้คะแนนฟรี 1 คะแนน");
}
else if (string.IsNullOrEmpty( txtAns.Text.Trim()))
{
MessageBox.Show($"คำตอบคือ \n{Ans}");
score--;
log.Debug($"Invalid input. Please enter a valid Ans.");
}
else
{
log.Debug($"GetAns:{txtAns.Text} and {Ans}");
if (txtAns.Text.Trim() == Ans.Trim())
{
score++;
}
else
{
MessageBox.Show($"คำตอบคือ \n{Ans}");
score--;
}
}
lblStatus.Write($"คำตอบคือ {Ans}");
txtScore.Text = score.ToString();
lblStatus.Write($"โจทย์ {count} ข้อ คุณทำได้ {score} คะแนน คิดเป็น {score / count * 100:0.000}%");
GetProblems();
}
ตัว Ans จะเป็นได้ทั้ง string และ double ครับ
ปัญหา คือ เวลาเป็นตัวเลขแล้ว อาจจะไม่ตรงกัน
เช่น อาจจะกรอกคำตอบเป็น 9.012 แต่ Ans เป็น 9.0122 ก็จะทำให้ตอบผิดไป
ซึ่งโจทย์ ค่อนข้างกว้างครับ มีทั้งเรื่องหน่วยเวลา เรื่องแปลงหน่วย เรื่อง หาพื้นที่ ปริมาตร หรือ การ บวก ลบ คูณหาร พื้นฐานด้วย
การแปลงหน่วย มีตั้งแต่ 0.000000000001d - 1000000000000d
Code (C#)
private static QuestionItem GetProblemsPSUnit01() {
List<Prefixe> Prefixs = new List<Prefixe>() {
new Prefixe("เทระ", "tera-", "T-", "10^12", 1000000000000d),
new Prefixe("จิกะ", "giga-", "G-", "10^9", 1000000000d),
new Prefixe("เมกะ", "mega-", "M-", "10^6", 1000000d),
new Prefixe("กิโล", "kilo-", "k-", "10^3", 1000d),
new Prefixe("เฮกโต", "hecto-", "h-", "10^2", 100d),
new Prefixe("เดคา", "deca-", "da-", "10^1", 10d),
new Prefixe("เดซิ", "deci-", "d-", "10^-1", 0.1d),
new Prefixe("เซนติ", "centi-", "c-", "10^-2", 0.01d),
new Prefixe("มิลลิ", "milli-", "m-", "10^-3", 0.001d),
new Prefixe("ไมโคร", "micro-", "μ-", "10^-6", 0.000001d),
new Prefixe("นาโน", "nano-", "n-", "10^-9", 0.000000001d),
new Prefixe("พิโค", "pico-", "p-", "10^-12", 0.000000000001d),
};
List<string> units = new List<string>() { "เมตร", "กรัม", "วินาที", "แอมแปร์", "เคลวิน", "โมล", "เฮิรตซ์", "นิวตัน", "จูล", "วัตต์", "โวลต์", "โอห์ม", "ฟารัด" };
QuestionItem question = new QuestionItem();
string a;
Prefixe prefixe = Prefixs[RandomNumber.Randomnumber(0, Prefixs.Count)];
string _uint = units[RandomNumber.Randomnumber(0, units.Count)];
double anws = 0.00;
double randomNum;
if (prefixe.factor >= 10d)
{
randomNum = (r.NextDouble().ToDouble(r.Next(2, 5))) * (Math.Pow(10, r.Next(1, 5))) * prefixe.factor;
a = randomNum.ToString("F0");
}
else
{
randomNum = r.NextDouble().ToDouble(r.Next(2, 5)) * (Math.Pow(10, r.Next(1, 5))) * prefixe.factor;
a = randomNum.ToString("##0.############################################");
}
anws = randomNum / prefixe.factor;
string s = $"{a} {_uint} มีค่าเป็นกี่ {prefixe.prefixeTh}{_uint}?";
question = new QuestionItem(anws, s);
return question;
}
Tag : .NET, Win (Windows App), C#
|
|
|
|
|
|
Date :
2024-04-04 10:47:40 |
By :
lamaka.tor |
View :
192 |
Reply :
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|