نمایش نتایج 1 تا 13 از 13

نام تاپیک: پروزه infix to post fix به صورت پیشرفته

  1. #1

    پروزه infix to post fix به صورت پیشرفته

    سلام دوستان
    من یه سوال داشتم و واقعا به راهنمایی شما دوستان احتیاج دارم
    من پروزه infix to postfix نوشتم و خدا رو شکر کامله
    حالا استاد اومده گفته همین پروزه رو به صورت پیشرفته میخوام
    یعنی اینکه اگه کاربر زده num +1*(var/e)
    بیاد یه جای دیگه ی برنامه به اون num , var , e مقدار بده و حاصل کل رو حساب کنه
    (اول برنامه هم که باید متوجه شده باشید میانوندی به پسوندی رو انجام بده که اون کامله)
    دوستان اگه سورسی چیزی ندارید حداقل فکری اگه دارید بگید تا من کدشو بزنم

  2. #2

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    یعنی هیچکی نمی تونه کمکم کنه!!!!

  3. #3

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    برای درک کد: http://www.codeproject.com/Articles/405361/Converting-Postfix-Expressions-to-Infix##


    //
    // class used to represent intermediate expressions on the stack.
    //
    public class Intermediate
    {
    public string expr; // subexpression string
    public string oper; // the operator used to create this expression
    public Intermediate(string expr, string oper)
    {
    this.expr = expr;
    this.oper = oper;
    }
    }
    //
    // PostfixToInfix
    //
    static string PostfixToInfix(string postfix)
    {
    // Assumption: the postfix expression to be processed is space-delimited.
    // Split the individual tokens into an array for processing.
    var postfixTokens = postfix.Split(' ');
    // Create stack for holding intermediate infix expressions
    var stack = new Stack<Intermediate>();
    foreach(string token in postfixTokens)
    {
    if (token == "+" || token == "-")
    {
    // Get the left and right operands from the stack.
    // Note that since + and - are lowest precedence operators,
    // we do not have to add any parentheses to the operands.
    var rightIntermediate = stack.Pop();
    var leftIntermediate = stack.Pop();
    // construct the new intermediate expression by combining the left and right
    // expressions using the operator (token).
    var newExpr = leftIntermediate.expr + token + rightIntermediate.expr;
    // Push the new intermediate expression on the stack
    stack.Push(new Intermediate(newExpr, token));
    }
    else if (token == "*" || token == "/")
    {
    string leftExpr, rightExpr;

    // Get the intermediate expressions from the stack.
    // If an intermediate expression was constructed using a lower precedent
    // operator (+ or -), we must place parentheses around it to ensure
    // the proper order of evaluation.

    var rightIntermediate = stack.Pop();
    if (rightIntermediate.oper == "+" || rightIntermediate.oper == "-")
    {
    rightExpr = "(" + rightIntermediate.expr + ")";
    }
    else
    {
    rightExpr = rightIntermediate.expr;
    }
    var leftIntermediate = stack.Pop();
    if (leftIntermediate.oper == "+" || leftIntermediate.oper == "-")
    {
    leftExpr = "(" + leftIntermediate.expr + ")";
    }
    else
    {
    leftExpr = leftIntermediate.expr;
    }
    // construct the new intermediate expression by combining the left and right
    // using the operator (token).
    var newExpr = leftExpr + token + rightExpr;
    // Push the new intermediate expression on the stack
    stack.Push(new Intermediate(newExpr, token));
    }
    else
    {
    // Must be a number. Push it on the stack.
    stack.Push(new Intermediate(token, ""));
    }
    }
    // The loop above leaves the final expression on the top of the stack.
    return stack.Peek().expr;
    }


  4. #4

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    دوست عزیز من برنامه ام واسه میانوندی به پیش وندی هستش
    اون قسمت تبدیل درست کار میکنه
    فقط میخوام که محاسبات هم انجام بده
    num*2+(t/f+8)

    مثلا این
    میخوام که به جای num بزارم 3.یعنی مساوی 3 بعد جواب رو بده

  5. #5

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    سلام دوست عزیز
    کار مشکلی نیست شما توی رشته ای که میگیری عملوند ها داری و اعداد و حروف که میشه متغیرهاتون
    با استفاده از ی پشته میتونی متغیرهارو جدا کنی و به ازای هر متغیر مثلا تکست باکسی و لیبلی رو add کنی به فرمت که کاربر بتونه از این طریق مقادیر رو وارد کنه و جایگزینی و محاسبه ی عبارت بازم با پشته ها
    امیدوارم توضیحم مفید باشه
    موفق باشی

  6. #6

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    واسه ادد کردن لیبل یا تکس باکس ...منظورتون اینه که همون لحظه توی برنامه ایجاد شه؟

  7. #7

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    نقل قول نوشته شده توسط mafaman2003 مشاهده تاپیک
    در تاپیک زیر توضیح دادم. به کمک استک باید اینکار رو انجام بدی. توجه کن که اعداد در پشته قرار میگیرن نه نام متغیر. البته خروجی یک رشته infix هست منتها شما میتونی بر حسب عملوند عمل جمع،تفریق و... رو انجام بدی و حاصل رو در پشته قرار بدید. در آخر هم به جای رشته infix جواب عددی دریافت میکنید.
    تبدیل Postfix به Infix
    دوست عزیز این راه کار به درد من نمیخوره...چون واسه من مثله مثالی که زدم چند تا عملوند با هم میشن یه متغیر ...ولی اینجا این طور نیست

  8. #8

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    نقل قول نوشته شده توسط mousa1992 مشاهده تاپیک
    سلام دوست عزیز
    کار مشکلی نیست شما توی رشته ای که میگیری عملوند ها داری و اعداد و حروف که میشه متغیرهاتون
    با استفاده از ی پشته میتونی متغیرهارو جدا کنی و به ازای هر متغیر مثلا تکست باکسی و لیبلی رو add کنی به فرمت که کاربر بتونه از این طریق مقادیر رو وارد کنه و جایگزینی و محاسبه ی عبارت بازم با پشته ها
    امیدوارم توضیحم مفید باشه
    موفق باشی
    همه مشکل من اینه که نمیتونم متغیر ها رو از هم جدا کنم
    یکی به من کمک کنهه

  9. #9

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    http://upload.ustmb.ir/do.php?filena...to-postfix.rar

    این فقط میانوندی رو به پسوندی تبدیل میکنه
    واسه بقیه هنوز کاری نکردم روش
    ولی هیچ ایده ای هم ندارم

  10. #10

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    چی شد کسی نمیتونه کمک کنه؟

  11. #11
    کاربر دائمی آواتار s3rv3r
    تاریخ عضویت
    آذر 1389
    محل زندگی
    Cyber
    پست
    243

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    با این الگوریتمی که پیاده کردید نبایدم بتونید که متغیرهارو جدا کنید. چون فقط و فقط روی یه عددی کار میکنه برای همین اگه متغییر چند کاراکتری باشه شدیدا به مشکل میخورید.
    بشین الگوریتمو تغییر بده تا وقتی چندتا عدد کنار هم بود به عنوان یه عملوند بشناسه و بتونی بریزی تو پشته اینطوری میتونی متغیرر که چند کاراکتر هستش رو تشخیص بدی.
    برنامتون هم کامل نیست.
    کمی هم با ملایمت صحبت کنید همه از روی خیرخواهی جوابتون رو میدن بدهکار که نیستن عزیز

  12. #12

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    اینجا کامل توضیح دادم.
    با اون چیزی که شما نوشتید متفاوته. برای پشته هم از کلاس Stack استفاده کردم که در دات نت موجود هست.

  13. #13

    نقل قول: پروزه infix to post fix به صورت پیشرفته

    ببخشید من اصلا قصد جسارت نداشتم...سوتفاهم شده....

تاپیک های مشابه

  1. پاسخ: 6
    آخرین پست: پنج شنبه 05 مرداد 1391, 10:25 صبح
  2. ثبت اطلاعات در دیتابیس به صورت پیشرفته
    نوشته شده توسط sam166 در بخش ASP.NET Web Forms
    پاسخ: 18
    آخرین پست: یک شنبه 08 فروردین 1389, 11:56 صبح
  3. پاسخ: 2
    آخرین پست: سه شنبه 19 آبان 1388, 14:38 عصر
  4. ارسال دستی مقادیر به صورت POST
    نوشته شده توسط tabib_m در بخش PHP
    پاسخ: 21
    آخرین پست: شنبه 19 فروردین 1385, 21:03 عصر
  5. ارسال تعداد متغیر پارامتر به صورت post
    نوشته شده توسط sima10 در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: یک شنبه 09 مرداد 1384, 09:09 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •