Можно ли в C# стринговый знак "+" который я ввел в Textbox, как нить преобразовать что бы он принял его за знак вычисления

Узнай цену своей работы

Формулировка задачи:

а вот еще вопрос может ты знаеш? можно ли в C# стринговый знак "+" который я ввел в Textbox, как нить преобразовать что бы он принял его за знак вычисления, без проверок, т. е. например не if (a == "+") а например просто вставив в выражение c="+" b=123 d=22 a=bcd чтобы в итоге а = 145

Решение задачи: «Можно ли в C# стринговый знак "+" который я ввел в Textbox, как нить преобразовать что бы он принял его за знак вычисления»

textual
Листинг программы
        string[] AvailableSigns = { "+", "-", "*", "/" };
        
        bool HavePlus { get; set; }
        bool HaveMinus { get; set; }
        bool HaveMult { get; set; }
        bool HaveDiv { get; set; }
 
        string RemoveSpaces(string inputString)
        {
            inputString = inputString.Replace("  ", string.Empty);
            inputString = inputString.Trim().Replace(" ", string.Empty);
 
            return inputString;
        }
 
        IDictionary<char, int> ParseInputString(string inputString)
        {
            IDictionary<char, int> dynamicPair = new Dictionary<char, int>();
 
            foreach (string sign in AvailableSigns)
            {
                char separator;
                char.TryParse(sign, out separator);
 
                string[] splittedInputString = inputString.Split(separator);
 
                if (splittedInputString[0].CompareTo(inputString) != 0)
                {
                    foreach (string tmpString in splittedInputString)
                    {
                        string tmpSubString = RemoveSpaces(tmpString);
 
                        int result;
                        bool isDigit = int.TryParse(tmpString, out result);
 
                        if (isDigit)
                        {
                            if (!dynamicPair.ContainsKey(separator))
                                dynamicPair.Add(separator, result);
                            else
                            {
                                int value;
                                bool isOK = dynamicPair.TryGetValue(separator, out value);
 
                                if (isOK)
                                {
                                    switch (separator)
                                    {
                                        case '+':
                                            dynamicPair[separator] = value + result;
                                            HavePlus = true;
                                            break;
                                        case '-':
                                            dynamicPair[separator] = value - result;
                                            HaveMinus = true;
                                            break;
                                        case '*':
                                            dynamicPair[separator] = value * result;
                                            HaveMult = true;
                                            break;
                                        case '/':
                                            if (result != 0)
                                                dynamicPair[separator] = value / result;
                                            else
                                                dynamicPair[separator] = 0;
 
                                            HaveDiv = true;
                                            break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
 
            return dynamicPair;
        }
 
        private void ResultButton_Click(object sender, EventArgs e)
        {
            string input = InputTextBox.Text;
            IDictionary<char, int> pairs;
            
            HavePlus = false;
            HaveMinus = false;
            HaveMult = false;
            HaveDiv = false;
 
            OutputTextBox.Text = "";
 
            if (input.Length > 0)
            {
                pairs = ParseInputString(input);
 
                if (!HavePlus && !HaveMinus && !HaveMult && !HaveDiv)
                {
                    MessageBox.Show("В строке отсутствуют необходимые знаки.");
                    return;
                }
 
                foreach (string sign in AvailableSigns)
                {
                    char separator;
                    char.TryParse(sign, out separator);
 
                    int value;
                    bool isOK = pairs.TryGetValue(separator, out value);
 
                    if (isOK)
                    {
                        switch (separator)
                        {
                            case '+':
                                if (HavePlus)
                                    OutputTextBox.Text = value.ToString();
                                break;
                            case '-':
                                if (HaveMinus)
                                    OutputTextBox.Text = value.ToString();
                                break;
                            case '*':
                                if (HaveMult)
                                    OutputTextBox.Text = value.ToString();
                                break;
                            case '/':
                                if (HaveDiv)
                                    OutputTextBox.Text = value.ToString();
                                break;
                        }
                    }
                }
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы