v30sharp
دوشنبه 05 اردیبهشت 1390, 07:53 صبح
سلام دوستان یک مشکل دلرم میخوام یه برنامه بنویسم یه یه عبارن پسوندی رو محاسبه کنه و جوابشو بده و تعداد pop$ push رو نشود بده که چدن تا پاپ و پوش انجام داده اما نمیدونم از کجا بلید شروع کنم اگه امکانش هست راهنمایی کنید
به زبان سی شارپ میخوام بنویسم اگه کدی نصفه کدی مقاله ای د برنامه دبدید ممنون میشم
تا حالا برنامه زیاد نوشتم اما این نوعش و نه
مرسی دوستان منتظره یاری تون هستم. :قلب::متفکر::تشویق:
ali.rezaei7
دوشنبه 05 اردیبهشت 1390, 16:10 عصر
سلام؛ تابعی که نوشتم عبارت Postfix رو از یک String Array می خواند و نتیجه محاسبه رو برمی گردونه.
private double PostfixCalculation(string[] Expression)
{
string[] Operator = { "*", "/", "+", "-" };
double pop1, pop2;
Stack<double> stack = new Stack<double>();
foreach (string ex in Expression)
{
if (!Operator .Contains(ex))
{
stack.Push(double.Parse(ex));//Is an operand (1,2,3,....)
}
else//Is an operator(+,-,/,*)
{
switch (ex)
{
case "/":
pop2 = stack.Pop();
pop1 = stack.Pop(); ;
stack.Push(pop1 / pop2);
break;
case "*":
pop2 = stack.Pop();
pop1 = stack.Pop(); ;
stack.Push(pop1 * pop2);
break;
case "+":
pop2 = stack.Pop();
pop1 = stack.Pop(); ;
stack.Push(pop1 + pop2);
break;
case "-":
pop2 = stack.Pop();
pop1 = stack.Pop(); ;
stack.Push(pop1 - pop2);
break;
}
}
}
return stack.Pop();
}
هر کدام از عملگر ها و عملوندها باید در خانه های جداگانه، در آرایه ذخیره شوند. به عنوان نمونه عبارت 2 1 3 - * 14 / که Postfix شده 2*(1-3)/14 است را بصورت زیر به تابع ارسال می کنیم:
string[] ex = { "2", "1", "3", "-", "*", "14", "/"};
double res = PostfixCalculation(ex);
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.