我在这里的第一篇文章。 我编写了一个运行良好的RPN计算器。我在C#中用WinForms写了
现在我必须添加分数支持。所以分数的输入看起来像(3,4)(5,8)+结果应该是(11,8)
我不知道应该选择哪种方法来添加这些分数。我应该阅读它,拆分它,并将其存储在堆栈中吗?我可以将它直接保存为堆栈中的对象吗?
这是我的代码:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
public partial class Form1 : Form
{
//Variablen
Stack<double> stack1 = new Stack<double>();
double zahl1 = 0.0;
double zahl2 = 0.0;
public Form1()
{
InitializeComponent();
}
//Alle Button Events
#region Buttonevents
private void buttonEnter_Click(object sender, EventArgs e)
{
{
try
{
if (textbox1.Text != "")
stack1.Push(double.Parse(textbox1.Text));
}
catch (FormatException)
{
MessageBox.Show("Ungültige Eingabe. Nur Zahlen eingeben", "Eingabefehler");
}
textbox1.Clear();
}
}
private void buttonDelete_Click(object sender, EventArgs e)
{
stack1.Clear();
textbox1.Clear();
}
private void buttonAdd_Click(object sender, EventArgs e)
{
berechnung(1);
}
private void buttonSub_Click(object sender, EventArgs e)
{
berechnung(2);
}
private void buttonMult_Click(object sender, EventArgs e)
{
berechnung(3);
}
private void buttonDiv_Click(object sender, EventArgs e)
{
berechnung(4);
}
private void textbox1_Enter(object sender, EventArgs e)
{
textbox1.Clear();
}
# endregion
//Methode zur Berechnung
public void berechnung(int n)
{
try
{
if (textbox1.Text != "")
stack1.Push(double.Parse(textbox1.Text));
}
catch (FormatException)
{
MessageBox.Show("Ungültige Eingabe. Nur Zahlen eingeben", "Eingabefehler");
}
if (stack1.Count > 1)
{
zahl2 = stack1.Pop();
zahl1 = stack1.Pop();
switch (n)
{
case 1: stack1.Push(zahl1 + zahl2); break;
case 2: stack1.Push(zahl1 - zahl2); break;
case 3: stack1.Push(zahl1 * zahl2); break;
case 4: stack1.Push(zahl1 / zahl2); break;
}
textbox1.Text = stack1.Peek().ToString();
}
else
{
MessageBox.Show("Operation nicht möglich.\nStack enthält zu wenig Elemtente", "Eingabefehler");
}
}
private void infoToolStripMenuItem_Click(object sender, EventArgs e)
{
}
}