30/09/2018, 16:08

hỏi về cách cho nhập những kí tự chỉ định trên c#

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

Phạm Hoàng Tuấn viết 18:23 ngày 30/09/2018

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#.

nguyen viết 18:15 ngày 30/09/2018

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;
}
nguyen viết 18:17 ngày 30/09/2018

đạ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

Bài liên quan
0