2014-01-04 2 views
0

У меня возник вопрос о создании калькулятора в приложении Windows Form Application. Я хочу, чтобы это было возможно написать с помощью кнопок формы выражение в текстовом поле, например, 2 + 3 + 7 = и после нажатия "=" кнопка программы будет читать все цифры и знаки и выполнять вычисления ... Я не знаю Не знаю, с чего начать и как это можно сделать. Любая помощь какой-либо ссылке или smth, чтобы посмотреть, как начать делать такие выражения?C# чтение и вычисление нескольких значений из текстового поля

Главное, как читать, разделять и после вычислять значения из текстового поля.

Спасибо.

+0

проверьте это сообщение http://stackoverflow.com/questions/8656282/c-sharp-calculator-typing-by-pressing-buttons –

+1

http://en.wikipedia.org/wiki/Parsing Вам нужно разобрать свое выражение в токенах , затем примените orde r математики к нему. (2 + 3 + 7) * 4 => (5 + 7) * 4 => 12 * 4 – CSharpie

+0

Я написал небольшую библиотеку некоторое время назад, чтобы проанализировать и оценить арифметические выражения. https://github.com/patriksvensson/arithmetica – Patrik

ответ

1

С помощью метода Split вы можете решить это довольно легко. Попробуйте это:

private void button1_Click(object sender, EventArgs e) 
{ 
    string[] parts = textBox1.Text.Split('+'); 
    int intSum = 0; 
    foreach (string item in parts) 
    { 
    intSum = intSum + Convert.ToInt32(item); 
    } 
    textBox2.Text = intSum.ToString(); 
} 

Если вы хотели бы иметь более общий расчет, вы должны смотреть на этот пост: In C# is there an eval function?

Где этот фрагмент кода будет делать вещь:

public static double Evaluate(string expression) 
{ 
    System.Data.DataTable table = new System.Data.DataTable(); 
    table.Columns.Add("expression", string.Empty.GetType(), expression); 
    System.Data.DataRow row = table.NewRow(); 
    table.Rows.Add(row); 
    return double.Parse((string)row["expression"]); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    textBox2.Text = Evaluate(textBox1.Text).ToString(); 
} 
+0

Спасибо за ответ, на самом деле у меня был найден этот метод Evaluate. Он работает хорошо, но я думал, что мне нужно написать этот расчет по-разному для учебы. Спасибо в любом случае :) – Sangsom

Смежные вопросы