mình có làm một cái bài tập về máy tính Console trên C#, mình đã bắt đc hầu hết cách lỗi nhập vào rồi, nhưng băn khoăn ở cái. Mình có chặn những kí tự là chữ nhập vào là chữ, nhưng mình muốn những kí tự nhập vào là cos sin tan thì k chặn. vậy có cách nào bỏ chặn những kí tự đấy đc không
hỏi về cách cho nhập những kí tự chỉ định trên c#
nếu các ký tự đó ít (tầm 2,3 cái như sin,cos, tan) thì bạn nên dùng switch -case, nếu lớn hơn thì bạn có thể tìm hiểu về regular expression trong C#.
1 Like
em tạo một cái IDictionary để bắt những cái lỗi
vd như *- thì là false
e muốn dùng ngay bộ IDictionary đấy để bắt những lỗi cho sin cos như cos) thì là false vv…v
public enum TypeCheck
{
Digit,
BinaryOp,
ClBracket,
Pow,
OpBracket,
Start,
Finish,
Dot,
//Cos,
Unknow
}
struct Dic
{
public TypeCheck _Type1;
public TypeCheck _Type2;
public Dic(TypeCheck _t1, TypeCheck _t2)
{
_Type1 = _t1;
_Type2 = _t2;
}
}
private static IDictionary<Dic, int> dicInputCheck = new Dictionary<Dic, int>();
private static IDictionary<string, Dic> dicInputCheck1 = new Dictionary<string, Dic>();
private static void DictionaryCheck()
{
dicInputCheck.Add(new Dic(TypeCheck.Digit, TypeCheck.Digit), 1);
dicInputCheck.Add(new Dic(TypeCheck.Digit, TypeCheck.BinaryOp), 1);
dicInputCheck.Add(new Dic(TypeCheck.Digit, TypeCheck.OpBracket), 0);
dicInputCheck.Add(new Dic(TypeCheck.Digit, TypeCheck.ClBracket), 1);
dicInputCheck.Add(new Dic(TypeCheck.Digit, TypeCheck.Dot), 0);
dicInputCheck.Add(new Dic(TypeCheck.Digit, TypeCheck.Pow), 1);
dicInputCheck.Add(new Dic(TypeCheck.Digit, TypeCheck.Finish), 1);
}
private static TypeCheck GetOperand(char symbol)
{
if ((symbol == '0') || (symbol == '1') || (symbol == '2') || (symbol == '3') || (symbol == '4') || (symbol == '5') || (symbol == '6') || (symbol == '7') || (symbol == '8') || (symbol == '9'))
return TypeCheck.Digit;
else if ((symbol == '+') || (symbol == '-') || (symbol == '*') || (symbol == '/'))
return TypeCheck.BinaryOp;
else if (symbol == '(')
return TypeCheck.OpBracket;
else if (symbol == ')')
return TypeCheck.ClBracket;
else if (symbol == '.')
return TypeCheck.Dot;
else if (symbol == '^')
return TypeCheck.Pow;
else
return TypeCheck.Unknow;
}
đại khái đoạn code của em nó là như thế
phương thức DictionaryCheck em để 1 là true 0 là flase 
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?