میاد در مورد postfixها و prefixها در محیط application نمونه کدهایی در اختیارتون میذاره:
کلاس CStack :
کد:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace charachter
{
class ClassStack
{
int Size = 100;
object[] Item;
int MyTop;
public ClassStack()
{
MyTop = -1;
Item = new object[Size];
}
public bool IsFull()
{
if (MyTop == Size - 1)
return true;
else
return false;
}
public bool IsEmpty()
{
if (MyTop == -1)
return true;
else
return false;
}
public bool Push(object n)
{
if (IsFull())
return false;
else
{
Item[++MyTop] = n;
return true;
}
}
public object Pop()
{
if (IsEmpty())
return -1;
else
return Item[MyTop--];
}
public object Test_Top()
{
if (IsEmpty())
return -1;
else
return Item[MyTop];
}
}
}
فراخونی در فرم رو نمایش میده:
کد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace charachter
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_ShowPostfix_Click(object sender, EventArgs e)
{
ClassStack SampleStack1 = new ClassStack();
object MyTop1 = null;
object MyTop_PP1 = null;
string str1 = txt_EnterString.Text;
string CapacityPostfix1 = "";
bool Num1 = true;
for (int i = 0; i < str1.Length; i++)
{
switch (str1[i])
{
case '+':
while (Num1)
{
MyTop1 = SampleStack1.Test_Top();
if (SampleStack1.IsEmpty())
{
SampleStack1.Push(str1[i]);
break;
}
else if ((char)MyTop1 == '/')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '*')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '+')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '-')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
}
break;
case '-':
while (Num1)
{
MyTop1 = SampleStack1.Test_Top();
if (SampleStack1.IsEmpty())
{
SampleStack1.Push(str1[i]);
break;
}
else if ((char)MyTop1 == '+')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '-')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '/')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '*')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
}
break;
case '/':
while (Num1)
{
MyTop1 = SampleStack1.Test_Top();
if (SampleStack1.IsEmpty())
{
SampleStack1.Push(str1[i]);
break;
}
else if ((char)MyTop1 == '*')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '/')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '-')
{
SampleStack1.Push(str1[i]);
break;
}
else if ((char)MyTop1 == '+')
{
SampleStack1.Push(str1[i]);
break;
}
}
break;
case '*':
while (Num1)
{
MyTop1 = SampleStack1.Test_Top();
if (SampleStack1.IsEmpty())
{
SampleStack1.Push(str1[i]);
break;
}
else if ((char)MyTop1 == '-')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '/')
{
MyTop_PP1 = SampleStack1.Pop();
CapacityPostfix1 += MyTop_PP1;
}
else if ((char)MyTop1 == '*')
{
SampleStack1.Push(str1[i]);
break;
}
else if ((char)MyTop1 == '+')
{
SampleStack1.Push(str1[i]);
break;
}
}
break;
default:
CapacityPostfix1 += str1[i];
break;
}
}
while (Num1)
{
if (SampleStack1.IsEmpty())
break;
else
CapacityPostfix1 += SampleStack1.Pop();
}
txt_ShowResultPostfix.Text = CapacityPostfix1.ToString();
}
//============================================================================================================
private void btn_ShowPrefix_Click(object sender, EventArgs e)
{
ClassStack SampleStack2 = new ClassStack();
object MyTop2 = null;
object MyTop_PP2 = null;
string str2 = txt_EnterString.Text;
string CapacityPostfix2 = "";
bool Num2 = true;
for (int i = (str2.Length-1); i >=0; i--)
{
switch (str2[i])
{
case '+':
while (Num2)
{
MyTop2 = SampleStack2.Test_Top();
if (SampleStack2.IsEmpty())
{
SampleStack2.Push(str2[i]);
break;
}
else if ((char)MyTop2 == '*')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '/')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '-')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '+')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
}
break;
case '-':
while (Num2)
{
MyTop2 = SampleStack2.Test_Top();
if (SampleStack2.IsEmpty())
{
SampleStack2.Push(str2[i]);
break;
}
else if ((char)MyTop2 == '*')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '/')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '-')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '+')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
}
break;
case '/':
while (Num2)
{
MyTop2 = SampleStack2.Test_Top();
if (SampleStack2.IsEmpty())
{
SampleStack2.Push(str2[i]);
break;
}
else if ((char)MyTop2 == '+')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '/')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '-')
{
SampleStack2.Push(str2[i]);
break;
}
else if ((char)MyTop2 == '*')
{
SampleStack2.Push(str2[i]);
break;
}
}
break;
case '*':
while (Num2)
{
MyTop2 = SampleStack2.Test_Top();
if (SampleStack2.IsEmpty())
{
SampleStack2.Push(str2[i]);
break;
}
else if ((char)MyTop2 == '*')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '-')
{
MyTop_PP2 = SampleStack2.Pop();
CapacityPostfix2 += MyTop_PP2;
}
else if ((char)MyTop2 == '/')
{
SampleStack2.Push(str2[i]);
break;
}
else if ((char)MyTop2 == '+')
{
SampleStack2.Push(str2[i]);
break;
}
}
break;
default:
CapacityPostfix2 += str2[i];
break;
}
}
while (Num2)
{
if (SampleStack2.IsEmpty())
break;
else
CapacityPostfix2 += SampleStack2.Pop();
}
txt_ShowResultPrefix.Text = CapacityPostfix2.ToString();
}
}
}
جایی ابهام بود، بفرمایین
بااحترام
علاقه مندی ها (Bookmarks)