TatsuSheva Ответов: 2

Выход калькулятора C sharp


Здравствуйте я делаю калькулятор и мне нужно показать вывод калькулятора таким образом например: 1+1=2+2=4
Возможно ли это ?

if (operator == "+")
           {
               double a = 0;
               string[] chaine = textBox1.Text.Split('+');
               textBox1.Text += Environment.NewLine + "=" + Environment.NewLine + (double.Parse(chaine[0]) + double.Parse(chaine[1])).ToString(); //first choice of the operation

               for (int i = 0; i < chaine.Length; i++)
               {
                   a += double.Parse(chaine[i]);

               }

               textBox1.Text = a.ToString();//second choice of the operation


Что я уже пробовал:

То, что я могу сделать, это что-то вроде этого 1+1, и это дает результат 2

Richard MacCutchan

Да, в C#вы можете делать все, что захотите (в разумных пределах). Но, не видя часть вашего кода (не все), мы понятия не имеем, почему ваш вывод может быть неправильным.

TatsuSheva

Я отредактировал свой вопрос.

Richard MacCutchan

Я не могу понять, что должен делать этот код. Вам лучше было бы выбросить все это и начать все сначала. Начните с StringBuilder, и просто добавьте каждое входное значение, оператор, следующее значение, " = " и результат, когда вы проходите через каждую операцию. В тот момент, когда у вас есть результат, вы просто устанавливаете текст TextBox к содержанию StringBuilder Когда пользователь нажимает кнопку Очистить, вы просто повторно инициализируете StringBuilder и повторите весь процесс.

TatsuSheva

Как использовать StringBuilder ? Я никогда им не пользовался.

divya behera

можете ли вы подробнее описать свое выражение и результат ?

TatsuSheva

В выводе я хочу, чтобы это было отображено: 1+1=2+2=4 это означает, что операция продолжается, но то, что я могу сделать, это 1+1=2 я не могу продолжить операцию .

Richard MacCutchan

Как и со всеми элементами управления, вы начинаете с чтения документации.

2 Ответов

Рейтинг:
8

Afzaal Ahmad Zeeshan

Поскольку это не единичная операция, для ее выполнения компьютеру потребуется сложная программа. Есть два способа сделать это. Как правило, простые программы калькулятора разрабатываются там, где вы разрешаете только одно выражение, "a + b = ?Ваш метод больше похож на конвейерную передачу выходных данных в качестве входных данных в другое выражение.

Первый из способов-создать приложение калькулятора, которое разрешает предоставленные выражения (оно не начинает их разрешать). Этот метод включает в себя операцию push/pop стека для создания выражения для калькулятора. Это было бы рассмотрено в простом уроке структур данных. Для примера, пожалуйста, смотрите: Калькулятор на языке Си с использованием Stack-Stack Overflow[^], Обратная польская нотация - Википедия, свободная энциклопедия[^]. Распространенными примерами являются, (1 + 1) + 2 = ?.

Тогда есть другой способ сделать это. Это требует, чтобы вы разрешили одно выражение и когда пользователь пытается повторно использовать выходные данные (например,, (1 + 1 = 2) + 2 = ?) затем вы сохраняете предыдущий ответ и строите следующее выражение на основе этого результата. Это потребовало бы условия, чтобы определить, был ли предыдущий результат,

// Before operator check
public void operator_Click (object sender, EventArgs e) {
    if(resultAvailable) {
        // Change the values
        a = result;
    }
    op = operatorTxt.Text;
}

// In the resolution function
public void evaluate(object sender, EventArgs e) {
   // Evaluate the answer in result variable for further use.
}

Таким образом, Вы сможете обрабатывать выражения после разрешения предыдущих. Именно это и делается в современных мобильных калькуляторах.


Рейтинг:
12

divya behera

если(элемент textbox1.Текст.содержит("="))
{
strAfterEqual = текстовое поле textbox1.Текст.Сплит('=').Последние();
// передайте этот strAfterEqual вашему исходному методу и добавьте результат с помощью textBox1. Text
}


TatsuSheva

Я вложил это в свой метод ? внутри этого ?? if (оператор ==" +")
{...}

divya behera

Вам нужно поставить его перед вашей функцией так, чтобы, если он обнаружит оператор"=", он выполнял только последнюю часть, в противном случае выполнял полностью.