Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите в чем дело

ITBR Ученик (20), на голосовании 6 месяцев назад
с кнопки в форме считается все как надо то есть нажимаю 1 потом + потом нажимаю другое число ивсе работает но если делаю это через кнопку if (e.KeyCode == Keys.Oemplus)
{
button_plus_Click(sender, e); или же вызываю метод math_action ('+') оно мне просто считает первое введеное число сам с самой место 1 сразу 2 и не дает вписать след число

}
вот мои методы
 public void math_action(char action) 
{
if (this.dec)
Score();
this.first_num = Convert.ToDouble(this.result_lab.Text); // Складываем первое число с вторым
this.user_action = action;
this.result_lab2.Text = Convert.ToString(this.first_num); //для вверхнего лабеля

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;
}

private void Score()
{
if (this.user_action == ' ')
{
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
{
this.result_lab.ForeColor = Color.Red;
this.result_lab2.ForeColor = Color.Red;
MessageBox.Show(this, "Действие запрещено, на 0 делить нельзя!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

this.result_lab2.Text = "";
}
break;
}
this.result_lab.Text = Convert.ToString(res);
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445813) 7 месяцев назад
>Подскажите в чем дело
Ну, дело в том, что здесь написана какая-то херня.

Либо ты делаешь нормальный калькулятор и тогда у тебя здесь должны быть регистры, как в обычном калькуляторе, и надо работать с ними.

Либо у тебя "детский" калькулятор, в котором пользователь вводит все выражение и надо найти в нем знак операции, принять части строки слева и справа за операнды и выполнить вычисления. Это очень простой код, не требующий вот этого всего что у тебя там.

Ты же не делаешь ни то, ни другое, а делаешь ты какую-то лютую чушь, в которой мысль автора не прослеживается чуть менее чем никак.

Сотри всю эту галиматью.
Подумай, что именно ты хочешь получить в итоге.
Если это нормальный калькулятор - изучи принципы его работы.
Раздели движок и презентацию методом выделения движка в отдельный класс.
Начни реализацию этого класса по-тихоньку. Маленькими шагами. На спеша. Реализуй для начала только сложение, например, остальные действия добавишь позже.
Дерзай.
ITBRУченик (20) 7 месяцев назад
Да дело в том что это курсовой проект и его сдавать скоро да и плюс я не гонюсь за прямо крутой реализацией а лишь хочу сделать не сложный калькулятор
Похожие вопросы