سلام من این برنامه رو نوشتم فقط تست اینکه تعداد پرانتزها درسته یا نه و ورود اعداد یا عبارت بیشتر از یکی رقم مثلا(65*91) باید درسته بشه خیلی ممنون میشم تا شب بهم خبر بدین
stacklibrary;
namespace postfix
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
char[] postfix;
char[] prefix;
object topsymbol = "";
int size;
int len;
int d = 0;
//***********************************************************************
int oprate(int a, int b, char symbol)
{
if (symbol == '-')
d = a - b;
if (symbol == '+')
d = a + b;
if (symbol == '*')
d = a * b;
if (symbol == '/')
d = a / b;
if (symbol == '^')
d =Convert.ToInt32 (Math .Pow(a, b));
return d;
}
//***********************************************************************
bool isoperand(char symbol)
{
if ((symbol >= 'a' && symbol<= 'z') ||( symbol >= 'A' && symbol<= 'Z')||(symbol>='0' && symbol<='9'))
return true;
return false;
}
//************************************************************************
bool isoperator(char symbol)
{
if ( symbol == '+' || symbol == '-' || symbol == '/' || symbol == '*')
return true;
return false;
}
//*************************************************************************
bool pred(char op1, char op2)
{
int i, p1=0, p2=0;
char[] op ={ '(', '+', '-', '*', '/', '\0' };
int[] iop ={ 0, 10, 10, 20, 20, 20 };
for (i = 0; op[i] != '\0'; i++)
if (op[i] == op1)
{
p1 = i;
break;
}
for (i = 0; op[i] != '\0'; i++)
if (op[i] == op2)
{
p2 = i;
break;
}
if (iop[p1] > iop[p2])
return true;
return false;
}
//*************************************************************************
void convert(char[] infix, char[] postfix,out int size)
{
stack s = new stack();
char symbol;
object topsymbol="";
int j=0;
bool underflow;
for (int i = 0; i < len; i++)
{
symbol = infix[i];
if (symbol == '(')
s.push(symbol);
else if (isoperand(symbol))
postfix[j++] = symbol;
else if (symbol == ')')
{
topsymbol = s.pop();
while (Convert.ToChar( topsymbol) != '(')
{
postfix[j++] = Convert.ToChar (topsymbol);
topsymbol = s.pop();
}
}
else
{
s.topandtest(ref topsymbol, out underflow);
if (s.isempty() || pred(symbol,Convert.ToChar( topsymbol)))
s.push(symbol);
else
{
s.popandtest(ref topsymbol, out underflow);
while (!pred(symbol,Convert.ToChar( topsymbol)) && !underflow)
{
postfix[j++] =Convert.ToChar ( topsymbol);
s.topandtest(ref topsymbol, out underflow);
}
s.push(symbol);
}
}
}
while(!s.isempty ())
postfix[j++]=Convert.ToChar( s.pop());
size = j;
}
//*************************************************************************
private void btnconvert_Click(object sender, EventArgs e)
{
len = txtinfix.Text.Length;
char[] infixe = new char[len];
postfix = new char[len];
txtinfix .Text .CopyTo(0,infixe,0,len);
convert(infixe, postfix, out size);
txtposfix.Text = "";
for (int i = 0; i < size; i++)
txtposfix.Text += postfix[i].ToString();
}
//*************************************************************************
private void btnmohasebeh_Click(object sender, EventArgs e)
{
stack s = new stack();
char symbol;
int op1, op2;
for (int i = 0; i < size; i++)
{
symbol=postfix[i];
if (isoperand(symbol))
s.push( symbol-'0');
else
{
op2=Convert.ToInt32( s.pop());
op1 = Convert.ToInt32(s.pop());
int v=oprate(op1,op2,symbol);
s.push(v);
}
}
int result=Convert.ToInt32( s.pop());
txtmohasebeh.Text = d.ToString();
}
//******************************************************
private void btnprefix_Click(object sender, EventArgs e)
{
len = txtinfix.Text.Length;
char[] infixe = new char[len];
prefix = new char[len];
txtinfix.Text.CopyTo(0, infixe, 0, len);
convert1(infixe, prefix, out size);
txtprefix.Text = "";
for (int m = 0; m < size; m++)
txtprefix.Text += prefix[m].ToString();
}
//**********************************************************
void convert1(char[] infix, char[] prefix, out int size)
{
int j = 0;
stack s1 = new stack();
stack s2 = new stack();
char symbol;
for (int i = len - 1; i >= 0; i--)
{
symbol = infix[i];
if (symbol == ')' )
s1.push(symbol);
if (isoperand(symbol))
s2.push(symbol);
else if (isoperator(symbol ))
{
while(s1.isempty() && pred (Convert.ToChar(s1.top()) , symbol))
s2.push(s1.pop());
s1.push(symbol);
}
else if (symbol == '(')
{
topsymbol = s1.pop();
while (Convert.ToChar(topsymbol) != ')')
{
s2.push(topsymbol);
topsymbol = s1.pop();
}
}
}
while (! s1.isempty())
s2.push(s1.pop());
while (!s2.isempty())
prefix[j++] = Convert.ToChar(s2.pop());
size = j;
}
}
}
//****************************************************
اینم کلاسم
namespace stackLibrary
{
public class stack
{
private const int size = 100;
private object[] items = new object[size];
private int topindex;
public stack()
{
topindex = -1;
}
//***************************insert***********
public void push(object x)
{
items[++topindex] = x;
}
//***************************delete***********
public object pop()
{
object x = items[topindex--];
return x;
}
//***************************retrive**********
public object top()
{
return items[topindex];
}
//***************************present**********
public void show(object[] a, out int len)
{
for (int i = 0; i <= topindex; i++)
{
a[i] = items[i];
}
len = topindex;
}
//***************************empty************
public bool isempty()
{
if (topindex == -1)
return true;
return false;
}
//***************************test&delete*******
public void popandtest(ref object x, out bool underflow)
{
if (isempty() == true)
underflow = true;
else
{
underflow = false;
x = items[topindex--];
}
}
//***************************test&retrive*******
public void topandtest(ref object x, out bool underflow)
{
if (topindex == -1)
underflow = true;
else
{
underflow = false;
x = items[topindex];
}
}
//***************************test&insert********
public void pushandtest(ref object x, out bool overflow)
{
if (topindex == size - 1)
overflow = true;
else
{
items[++topindex] = x;
overflow = false;
}
}
//***************************end************
}
}
دریافت عبارت میانوندی به پسوندی وپیشوندی ومحاسبه ان
در اين بخش ميتوانيد در مباحث مربوط به زبان هاي برنامه نويسي تحت دات نت به بحث بپردازيد
مدیران انجمن: abbas.m.k, athlon64x2, شوراي نظارت
بازگشت به “Dot Net Programming”
پرش به
- بخشهاي داخلي
- ↲ اخبار و قوانين سايت
- ↲ سوالات، پيشنهادات و انتقادات
- ↲ مرکز جوامع مجازي - CentralClubs Network
- ↲ سرويس ميزباني وب - CentralClubs Hosting
- ↲ مجله الکترونيکي مرکز انجمنهاي تخصصي
- بخش تلفن همراه
- ↲ نرم افزار تلفن همراه
- ↲ Symbian App
- ↲ Android App
- ↲ Windown Phone App
- ↲ iOS App
- ↲ JAVA Mobile App
- ↲ بازيهاي تلفن همراه
- ↲ Symbian Games
- ↲ Android Games
- ↲ iOS Games
- ↲ Windows Phone Games
- ↲ JAVA Mobile Games
- ↲ گوشيهاي تلفن همراه
- ↲ Sony
- ↲ Samsung
- ↲ GLX
- ↲ Dimo
- ↲ Huawei
- ↲ Motorola
- ↲ Nokia
- ↲ گوشيهاي متفرقه
- ↲ سرگرميهاي تلفن همراه
- ↲ خدمات و سرويسهاي مخابراتي
- ↲ تازه ها و اخبار تلفن همراه
- ↲ مطالب كاربردي تلفن همراه
- ↲ متفرقه در مورد تلفن همراه
- ↲ سوالات و اشکالات تلفن همراه
- بخش كامپيوتر
- ↲ نرم افزار كامپيوتر
- ↲ گرافيک و طراحي کامپيوتري
- ↲ طراحي صفحات اينترنتي
- ↲ سوالات و اشکالات نرم افزاري
- ↲ برنامه نويسي
- ↲ C Base Programming
- ↲ Dot Net Programming
- ↲ Web Programming
- ↲ Other Programming
- ↲ Software Engineering
- ↲ Java Programming
- ↲ Database Programming
- ↲ سخت افزار كامپيوتر
- ↲ امنيت و شبكه
- ↲ امنيت
- ↲ شبکه
- ↲ تازه ها و اخبار دنياي کامپيوتر
- ↲ مطالب كاربردي كامپيوتر
- ↲ متفرقه در مورد کامپيوتر
- بخش هوا فضا
- ↲ نيروي هوايي ايران
- ↲ متفرقه درباره نیروی هوایی
- ↲ نیروی هوایی و سازندگی
- ↲ حماسه و حماسه آفرینان نيروي هوايي
- ↲ تیزپروازان در بند
- ↲ شهدا و جانباختگان نیروی هوایی
- ↲ عملیاتهاي نيروي هوايي
- ↲ دستاوردها و اخبار نيروي هوايي
- ↲ تاریخچه نیروی هوایی در ایران
- ↲ هوانيروز ايران
- ↲ حماسه و حماسه آفرينان هوانيروز
- ↲ شهدا و جانباختگان هوانيروز
- ↲ دستاوردها و اخبار هوانيروز
- ↲ هواپيماها
- ↲ هواپيماهاي نظامي
- ↲ هواپيماهاي غير نظامي
- ↲ هواپيماهاي بدون سرنشين
- ↲ بالگردها
- ↲ بالگردهاي نظامي
- ↲ بالگردهاي غير نظامي
- ↲ بالگردهاي بدون سرنشين
- ↲ اخبار بالگردها
- ↲ تسليحات هوايي
- ↲ موشكهاي هوا به هوا
- ↲ موشكهاي هوا به زمين
- ↲ موشکهاي دريايي
- ↲ موشکهاي زمين به هوا
- ↲ موشکهاي زمين به زمين
- ↲ ديگر مباحث هوانوردي
- ↲ الکترونيک هواپيمايي
- ↲ موتورهاي هوايي
- ↲ شبيه سازهاي پرواز
- ↲ گالري تصاوير هوافضا
- ↲ تصاوير هواپيماهاي جنگنده
- ↲ کليپهاي هوايي
- ↲ تصاوير هواپيماهاي بمب افکن
- ↲ تصاوير هواپيماهاي ترابري
- ↲ تصاوير هواپيماهاي مسافربري
- ↲ تصاوير هواپيماهاي شناسايي
- ↲ تصاوير بالگردهاي نظامي
- ↲ تصاوير بالگردهاي غير نظامي
- ↲ تصاوير نمايشگاههاي هوايي
- ↲ تصاوير متفرقه هوايي
- ↲ انجمن نجوم
- ↲ منظومه شمسي
- ↲ كيهانشناسي
- ↲ گالري تصاوير نجوم
- ↲ اخبار نجوم
- ↲ اخبار هوافضا و هوانوردي
- ↲ مدرسه هوانوردي
- ↲ كتابخانهي هوا فضا
- ↲ متفرقه در مورد هوا فضا
- بخش جنگ افزار
- ↲ ادوات زميني
- ↲ ادوات زرهي
- ↲ تجهيزات انفرادي
- ↲ تسليحات سنگين و توپخانهاي
- ↲ خودروهاي نظامي
- ↲ تسليحات ضد زره
- ↲ ادوات دريايي
- ↲ ناوهاي هواپيمابر
- ↲ ناوشکنها
- ↲ رزم ناوها
- ↲ ناوچهها
- ↲ زيردرياييها
- ↲ تجهيزات و تسليحات دريايي
- ↲ ساير ادوات دريايي
- ↲ گالري تجهيزات و ادوات دريايي
- ↲ اخبار ادوات دريايي
- ↲ اخبار نظامي
- ↲ گالري نظامي
- ↲ متفرقه در مورد جنگ افزار
- بخش دفاع مقدس
- ↲ حماسه دفاع مقدس
- ↲ تخريب و خنثي سازي
- بخش خودرو و وسايل نقليه
- ↲ مباحث فنی و تخصصی خودرو
- ↲ معرفي خودرو
- ↲ تازهها و اخبار خودرويي
- ↲ گالري خودرو
- ↲ متفرقه وسايل نقليه
- بخش پزشکي
- ↲ پزشكي و درمان
- ↲ پزشکي
- ↲ سوال پزشکي
- ↲ بهداشت
- ↲ بهداشت عمومي
- ↲ بهداشت مواد غذايي
- ↲ لوازم آرايشي و بهداشتي
- ↲ متفرقه در مورد پزشکي
- ↲ روانشناسي و روان پزشكي
- بخش فرهنگ، تمدن و هنر
- ↲ فرهنگي هنري
- ↲ شعر و ادبيات
- ↲ فيلم و سينما
- ↲ هنرهاي نمايشي
- ↲ فرهنگ هنرهاي نمايشي
- ↲ موسيقي
- ↲ عكس و نقاشي
- ↲ تاريخ، فرهنگ و تمدن
- ↲ تاريخ ايران
- ↲ تاريخ جهان
- ↲ فلسفه
- ↲ زبانهاي خارجي
- ↲ زبان انگليسي
- ↲ زبان اسپانيايي
- ↲ هنر آشپزي
- بخش علم، فناوري و آموزش
- ↲ انجمن علم و فناوري
- ↲ انجمن آموزش
- ↲ کتاب و فرهنگ مطالعه
- ↲ دانش عمومی
- ↲ کنکور و دانشگاه
- ↲ جامعه شناسي
- ↲ خانواده
- ↲ متفرقه جامعه شناسي
- ↲ حقوق و قضا
- ↲ علوم
- ↲ فيزيک
- ↲ شيمي
- ↲ رياضي
- ↲ متالورژي
- ↲ پليمر
- ↲ علوم کشاورزي
- ↲ گياهان زراعي و باغي
- ↲ گياهان دارويي
- ↲ طبیعت و محیط زیست
- ↲ زيست شناسي
- ↲ عمران
- ↲ بتن و سازههاي بتني
- ↲ معماري و شهرسازي
- ↲ سبکها و مشاهير معماري
- ↲ شهرسازي
- ↲ معماري داخلي
- ↲ معماري منظر
- بخش الکترونيک و رباتیک
- ↲ مفاهیم اولیه و پایه در الکترونیک
- ↲ نرم افزارهای کمکی الکترونیک
- ↲ مدارهای مجتمع
- ↲ سوالات و پرسشهای مفاهیم پایه
- ↲ مدارات ساده و آسان
- ↲ مدارهای آنالوگ و دیجیتال
- ↲ شبیه ساز و طراحی مدار
- ↲ مدارات صوتی
- ↲ مدارات، منابع تغذیه سویچینگ و اینورتوری
- ↲ مدارات مخابراتی
- ↲ میکروکنترلرهای AVR
- ↲ آموزش و مثالها AVR
- ↲ طرح آماده و کامل شده AVR
- ↲ میکروکنترلرهای ARM
- ↲ سایر میکروکنترولرها و پردازندهها
- ↲ سایر میکروکنترلرها
- ↲ مدار مجتمع برنامه پذیر FPGA
- ↲ رباتیک
- ↲ اخبار و مصاحبه ها در رباتیک
- ↲ آموزش و مقالات رباتیک
- ↲ پروژهها تکمیل شده رباتیک
- ↲ مدارها و مکانیک در رباتیک
- ↲ رباتهای پرنده
- ↲ برق و الکترونیک عمومی
- ↲ تعمیر لوازم برقی
- ↲ اخبار برق و الکترونیک
- بخش بازيهاي رايانهاي
- ↲ بازيهاي رايانهاي
- ↲ كنسولهاي بازي
- ↲ PSP
- ↲ اخبار بازيها
- بخش تجاري اقتصادي
- ↲ بخش اقتصادی و مالی
- ↲ تجارت آنلاين
- ↲ بورس
- ↲ تحلیل و سیگنال روز
- ↲ کار آفرینی
- بخشهاي متفرقه
- ↲ بخش ويژه
- ↲ ساير گفتگوها
- ↲ صندلي داغ
- ↲ اخبار و حوادث
- ↲ انجمن ورزش
- ↲ آکواريوم و ماهيهاي زينتي
- ↲ معرفي سايتها و وبلاگها