Что такое r и x в алгоритме протоколирования упрощённого калькулятора?

89
12 февраля 2021, 05:00

Пытаюсь разобраться в алгоритме протоколирования (в ListBox) и подсчёта калькулятора, но не понимаю одну вещь. По идее у нас есть r-первое число, вводимое пользователем, и x-второе число вводимое пользователем. Но почему в примере, который я приведу, мы нигде не поясняем программе что такое r? В том смысле, что x = double.Parse(t0.Text); у нас есть, а r = double.Parse(t0.Text); нет нигде, хотя r-первое вводимое число. Как тогда она понимает, что r-это первое введённое пользователем число? Также, как Вы видите в конце функции, мы добавляем в ListBox x, но при первом нажатии пользователя на кнопку какой-либо вычислительной операции, второго операнда (x, как я понимаю) ещё нет, но тем не менее он выводится в ListBox исправно, хоть пока и без знака операции. Ниже приведено всё, что нужно калькулятору для счёта и протоколирования, ранее в коде про r и x речи не было.

Вот сама функция:

        double r = 0;
        double x = 0;
        char op = ' ';
        void calculate()
        {
            x = double.Parse(t0.Text);  
            t0.Clear();
            switch (op)
            {
                case '+':
                    r = x + r;
                    break;
                case '-':
                    r = r - x;
                    break;
                case '/':
                    r = r / x;
                    break;
                case '*':
                    r = r * x;
                    break;
                default:
                    r = x;
                    break;
            }
            l0.Items.Add(op.ToString());
            l0.Items.Add(x);
        }

А вот ещё код кнопки, меняющий знак введённого числа, и тут тоже фигурирует x, а не r: (хотя можно сменить знак у первого введённого числа, которое по идее=r)

void b17_Click(object sender, EventArgs e) //КНОПКА СМЕНЫ ЗНАКА
        {
            double x = double.Parse(t0.Text);
            x = x * (-1);
            t0.Text = " ";
            t0.Text = x.ToString();
        }
Answer 1

r - это регистр калькулятора. По сути, просто переменная.

Действие (двухместная операция) производится над регистром и числом.

Операция ввода (без арифметической операции) же назначает регистру введённое значение

default:
       r = x;

меняющий знак введённого числа - это одноместная операция, тут второй операнд не нужен

READ ALSO
Получить записи из группы Facebook

Получить записи из группы Facebook

Хочу получить новые или (если проще) все записи из группы фейсбукаСоздателям группы являюсь я

130
Как вычислить разницу между датами в UTC?

Как вычислить разницу между датами в UTC?

Хочу найти разницу между двумя датами в днях

90
Как обновить ACF Image c помощь update_field?

Как обновить ACF Image c помощь update_field?

Я использую Advanced Custom Fields плагин в Wordpress

89
Инсталлятор для проекта

Инсталлятор для проекта

Возник такой вопрос - у меня есть проект на yii2, проект достаточно объемный

102