operation history

This commit is contained in:
timerix 2023-11-24 14:07:23 +06:00
parent cbb7965a93
commit 4724b616ce

View File

@ -22,7 +22,7 @@ public partial class MainWindow : Window
readonly Func<double, double, double> _initialOperation = (_, firstN) => firstN; readonly Func<double, double, double> _initialOperation = (_, firstN) => firstN;
private Func<double, double, double> _currentOperation; private Func<double, double, double> _currentOperation;
private void NewOperation(Func<double, double, double> operation, string operationText) private void NewOperation(Func<double, double, double> operation, Func<string> operationText)
{ {
// operation replacement // operation replacement
if (_currentNumberB.Length == 0) if (_currentNumberB.Length == 0)
@ -33,7 +33,7 @@ public partial class MainWindow : Window
Output.Text = _prevNumber.ToString(CultureInfo.InvariantCulture); Output.Text = _prevNumber.ToString(CultureInfo.InvariantCulture);
_currentNumberB.Clear(); _currentNumberB.Clear();
} }
Input.Text = _prevNumber.ToString(CultureInfo.InvariantCulture) + " " + operationText + " "; Input.Text += operationText();
_currentOperation = operation; _currentOperation = operation;
} }
@ -56,25 +56,25 @@ public partial class MainWindow : Window
switch (text) switch (text)
{ {
case "+": case "+":
NewOperation((a, b) => a + b, text); NewOperation((a, b) => a + b, () => text);
break; break;
case "-": case "-":
NewOperation((a, b) => a - b, text); NewOperation((a, b) => a - b, () => text);
break; break;
case "*": case "*":
NewOperation((a, b) => a * b, text); NewOperation((a, b) => a * b, () => text);
break; break;
case "/": case "/":
NewOperation((a, b) => a / b, text); NewOperation((a, b) => a / b, () => text);
break; break;
case "^": case "^":
NewOperation(Math.Pow, text); NewOperation(Math.Pow, () => text);
break; break;
case "=": case "=":
NewOperation((_, newNumber) => newNumber, ""); NewOperation((_, newNumber) => newNumber, () => $"={_prevNumber}\n");
break; break;
default: default:
throw new Exception("incorrect button text: " + text); throw new Exception("incorrect button text: ");
} }
} }