Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2018, 12:47   #1
Ramzan_95
Пользователь
 
Регистрация: 12.04.2018
Сообщений: 19
По умолчанию Калькулятор

Я написал калькулятор, он может принимать два числа, например 45 / 5 = 9; Как его изменить, что бы он мог принимать несколько чисел, как в Windows 7 или как в других. Например: 45 - 5 + 10 = 50;

Вот код:
Код:
    public partial class MainForm : Form
    {
        private double Number1 { get; set; }
        private double Number2 { get; set; }
        private char Sign { get; set; }

        public MainForm()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "1";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "2";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "3";
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "4";
        }

        private void button5_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "5";
        }

        private void button6_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "6";
        }

        private void button7_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "7";
        }

        private void button8_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "8";
        }

        private void button9_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "9";
        }

        private void button0_Click(object sender, EventArgs e)
        {
            textBoxInput.Text += "0";
        }

        private void buttonPlus_Click(object sender, EventArgs e)
        {
            Number1 = Convert.ToDouble(textBoxInput.Text);
            Sign = '+';
            textBoxInput.Text = "";
        }

        private void buttonMinus_Click(object sender, EventArgs e)
        {
            Number1 = Convert.ToDouble(textBoxInput.Text);
            Sign = '-';
            textBoxInput.Text = "";
        }

        private void buttonMultiply_Click(object sender, EventArgs e)
        {
            Number1 = Convert.ToDouble(textBoxInput.Text);
            Sign = '*';
            textBoxInput.Text = "";
        }

        private void buttonDivide_Click(object sender, EventArgs e)
        {
            Number1 = Convert.ToDouble(textBoxInput.Text);
            Sign = '/';
            textBoxInput.Text = "";
        }

        private void buttonResult_Click(object sender, EventArgs e)
        {
            switch (Sign)
            {
                case '+': Number2 = Number1 + Number2; break;
                case '-': Number2 = Number1 - Number2; break;
                case '*': Number2 = Number1 * Number2; break;
                case '/': Number2 = Number1 / Number2; break;
            }

            textBoxInput.Text = Number2.ToString();
            Sign = 'N';
        }
}
Ramzan_95 вне форума Ответить с цитированием
Старый 23.04.2018, 15:04   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

после выбора операции +/- и т.д показывайте результат, запоминайте операцию и ждите число. думаю Вам придется переписать Ваш код
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 23.04.2018 в 15:14.
Stanislav вне форума Ответить с цитированием
Старый 23.04.2018, 15:10   #3
Ramzan_95
Пользователь
 
Регистрация: 12.04.2018
Сообщений: 19
По умолчанию

Вы наверное не правильно поняли меня
Ramzan_95 вне форума Ответить с цитированием
Старый 23.04.2018, 15:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Ramzan_95 Посмотреть сообщение
Вы наверное не правильно поняли меня
а мне кажется, что правильно. И даже совет в тему написан.

вот смотрите.
ваш же пример.

Цитата:
Сообщение от Ramzan_95 Посмотреть сообщение
бы он мог принимать несколько чисел, как в Windows 7 или как в других. Например: 45 - 5 + 10 = 50
calc1.png
я ввёл 45, нажал кнопку "-", потом ввёл 5 и нажал кнопку "+"
видите, что произошло? калькулятор вычислил значение 45-5 (40) и вывел его. Если я теперь напишу 10 и нажму равно, то получу 50.
Вы же так хотели?

для этого Вам нужно
1) вынести в коде вычисление в отдельную процедуру
2) при всех нажатиях кнопок проверять Sign=="N" - если нет - то вызывать процедуру вычисления.

примерно так.

p.s. кстати, я бы на вашем месте избавился от однотипных действий. Ведь можно в процедуре получить значение нажатой кнопки.
например, ((Button)sender).Tag
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.04.2018, 17:09   #5
Ramzan_95
Пользователь
 
Регистрация: 12.04.2018
Сообщений: 19
По умолчанию

У вашего друга отредактированное сообщение, до этого не так было
Ramzan_95 вне форума Ответить с цитированием
Старый 23.04.2018, 17:15   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Ramzan_95 Посмотреть сообщение
отредактированное сообщение, до этого не так было
вполне допускаю.
Но это не так важно.

А то, что я сейчас вижу, вполне соответствует моим представлением о доработке вашего кода.
Теперь Вы знаете, что нужно делать и как.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.04.2018, 17:29   #7
Ramzan_95
Пользователь
 
Регистрация: 12.04.2018
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. кстати, я бы на вашем месте избавился от однотипных действий. Ведь можно в процедуре получить значение нажатой кнопки.
например, ((Button)sender).Tag
Спасибо за совет, не подумал про это, теперь можно здорово сократить код.
Ramzan_95 вне форума Ответить с цитированием
Старый 24.04.2018, 07:26   #8
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Ramzan_95 Посмотреть сообщение
У вашего друга отредактированное сообщение, до этого не так было
Слишком быстро Вы читаете не успел я мысль сформировать, спешил Вам ответить)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор на C++ Butterfly7380 Общие вопросы C/C++ 1 22.04.2014 22:47
Калькулятор на с++ Banner Помощь студентам 2 07.02.2011 11:42
калькулятор! Чика Общие вопросы Delphi 7 07.10.2010 18:05
Калькулятор Arcueid1691 Общие вопросы C/C++ 2 15.09.2010 18:39
калькулятор JK0 Помощь студентам 13 01.09.2010 15:47