как сделать так чтоб после сложение 5 + 5 при повторном нажатии = прибалвялось по 5 а не по 10
Подскажите в чем дело как сделать так чтоб после повторного нажатия на равно при сложении чисел 5 + 5 повторного нажатия выдало не 20 а 15, где ошибка как исправить? Мои методы:
public void math_action(char action)
{
if (this.user_action == ' ' || string.IsNullOrWhiteSpace(this.result_lab.Text))
{
return;
}
this.second_num = Convert.ToDouble(this.result_lab.Text);
if (this.dec && !lastButtonWasOperation)
{
Score(); // Вызываем функцию Score для выполнения предыдущей операции
this.result_lab2.Text = Convert.ToString(this.first_num);
}
else
{
this.first_num = Convert.ToDouble(this.result_lab.Text);
this.result_lab2.Text = Convert.ToString(this.first_num);
}
this.user_action = action;
switch (action)
{
case '+': this.result_lab2.Text += " + "; break;
case '-': this.result_lab2.Text += " - "; break;
case '*': this.result_lab2.Text += " * "; break;
case '/': this.result_lab2.Text += " / "; break;
case '%': this.result_lab2.Text += " % "; break;
}
this.again = true;
this.dec = true;
lastButtonWasOperation = true;
}
public void Score()
{
if (this.user_action == ' ' || string.IsNullOrWhiteSpace(this.result_lab.Text))
{
return;
}
double second = Convert.ToDouble(this.result_lab.Text);
double res = 0;
this.result_lab2.Text += Convert.ToString(second) + "=";
switch (this.user_action)
{
case '+': res = this.first_num + second; break;
case '-': res = this.first_num - second; break;
case '*': res = this.first_num * second; break;
case '%': res = this.first_num * (second / 100); break; // Изменено здесь
case '/':
if (second != 0)
{
res = this.first_num / second;
}
else
{
MessageBox.Show(this, "Действие запрещено, на 0 делить нельзя!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.result_lab2.Text = "";
}
break;
}
this.first_num = res; // Сохраняем результат как первое число для следующей операции
this.result_lab.Text = Convert.ToString(res);
private void button_sum_Click(object sender, EventArgs e)
{
if (user_action == ' ')
{
return;
}
this.dec = false;
this.again = true;
Score();
}
Ответы (1 шт):
Автор решения: ITBEGINER
→ Ссылка
Решил, добавив флаг для проверки и переписал логику в методе Score.