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

نام تاپیک: راهنمایی در مورد تبدیل عبارت پسوندی به میانوندی

  1. #1
    کاربر جدید آواتار m.@.@.i
    تاریخ عضویت
    دی 1388
    محل زندگی
    تهران
    پست
    3

    راهنمایی در مورد تبدیل عبارت پسوندی به میانوندی

    در مورد زیر کمی راهنمایی می خواستم:
    من برنامه تبدیل عبارت پسوندی به میانوندی را در C برای حالتی که عبارت ورودی ما شامل عدد و عملگر باشد نوشته ام مثلا: /+12*3+41
    این برنامه خروجی را به صورت حاصل عبارت نشان می دهد که در اینجا برابر 5 میشود.
    بدین صورت که در هر مرحله اعداد را در stack میریزد و با push و pop های متعدد این کار را انجام میدهد.
    حالا اگر بخواهم عبارت ورودی فقط شامل عملگر و کاراکتر باشد مثلا : /*AB+CA
    که جواب به صورت مقابل چاپ شود: A+B/C*A
    این کار را چطور انجام دهم .مثلا در ابتدا که A در stack ریخته می شود ، بعد B ، بعد که علامت + را میبیند A و B را با هم جمع میکند. حالا چطور عبارت A+B را دوباره به stack برگرداند

  2. #2

    نقل قول: کمی راهنمایی !!!!

    خیلی ساده میتونید از الگوریتم زیر استفاده کنید :

    فرض می کنیم رشته ای بصورت postfix (پسوندی) در اختیار داریم و میخواهیم آنرا به infix (میانوندی) تبدیل

    کنیم :

    روش کار:رشته پسوندی را از چپ به راست در نظر می گیریم ، با رسیدن به هر عملوند ، آن عملوند در پشته

    push میشود تا برسیم به یک عملگر ، وقتی که به یه عملگری رسیدیم دو تا عملوند از پشته pop کرده و آنرا

    بشکل infix با عملگر مورد نظر نوشته و دوباره در پشته push می کنیم :

    نکات مهم :

    1) در این حالت همیشه عملوند top پشته ، عملوند سمت راست خواهد بود .

    2) پشته اولیه ، باید پشته ای از رشته ها باشد .

    در این مثال :



    A , B
    A+B
    A+B,C,A
    A+B,C*A
    A+B/C*A ==>END


    موفق باشید .






  3. #3

    نقل قول: راهنمایی در مورد تبدیل عبارت پسوندی به میانوندی

    با سلام خدمت شما
    یکم کمک برای تبدیل عبارت زیر به عبارت میانوندی نیاز دارم ممنون میشم کمک کنید .

    +* ab/cd+-ks

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

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