Можно ли в 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; } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д