نمایش نتایج: از شماره 1 تا 2 از مجموع 2
Like Tree1نفر پسندیدند
  • 1 ارسال توسط NIIT

موضوع: Postfix_Prefix_Console

  1. #1
    مدیر بازنشسته
    تاریخ عضویت
    2011 June
    محل سکونت
    گرگان
    ارسال ها
    1,170
    تشکر
    62
    تشکر شده 1,587 بار در 809 پست
    نوشته های وبلاگ
    49


    آيا اين پست براي شما سودمند بود؟ بله | خیر

    Postfix_Prefix_Console


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;

    namespace PoshteClass
    {
    class Program
    {
    static void Main(string[] args)
    {
    string infix, postfix = "";
    Console.WriteLine("Enter an Infix expression :");
    infix = Console.ReadLine();
    converToPostfix(infix, postfix);
    Console.Read();
    }
    //-----------------------------------------
    static void converToPostfix(string infix, string postfix)
    {
    string symbol, topSymbol;
    Stack oprStack = new Stack();
    postfix = "";
    for (int p = 0; p < infix.Length; p++)
    {
    symbol = infix.Substring(p, 1);
    if (isNumeric(symbol))
    postfix += symbol;
    else if (symbol == "(")
    oprStack.Push(symbol);
    else if (symbol == ")")
    {
    topSymbol = (string)oprStack.Pop();
    while (topSymbol != "(")
    {
    postfix += topSymbol;
    topSymbol = (string)oprStack.Pop();
    }
    }
    else
    {
    if (oprStack.Count == 0 || (!pred((string)oprStack.Peek(), symbol)))
    oprStack.Push(symbol);
    else
    {
    topSymbol = (string)oprStack.Pop();
    while (pred(topSymbol, symbol))
    {
    postfix += topSymbol;
    if (oprStack.Count == 0)
    break;
    topSymbol = (string)oprStack.Pop();
    }
    oprStack.Push(symbol);
    }
    }
    }
    while (oprStack.Count > 0)
    {
    topSymbol = (string)oprStack.Pop();
    postfix += topSymbol;
    }
    Console.WriteLine("postfix expression is : " + postfix);
    }
    //-----------------------------------------------------------
    static bool isNumeric(string s)
    {
    if (s.CompareTo("0") >= 0 && s.CompareTo("9") <= 0)
    return true;
    return false;
    }

    static bool pred(string op1, string op2)
    {
    int p1, p2;
    string opString = "(+-*/%";
    int[] isp = { 0, 12, 12, 13, 13, 13 };
    p1 = opString.IndexOf(op1);

    p2 = opString.IndexOf(op2);

    if (isp[p1] >= isp[p2])
    return true;
    return false;
    }
    }
    }

    فکر نمیکنم نیاز به توضیح باشه، بچه هایی که ساختمون داده دارن خودشون با این مبحث آشنایی دارن
    حالا باز اگه سوالی بود در خدمتم، ولی سعی کنین از مدیران بپرسین ، راستشو بخواین من خودم console زیاد کار نکردم فقط یه برنامه هایی برای آشنایی دارم میخونم ، گفتم شاید به دردتون بخوره
    بااحترام

    آرامش محصول تفکر نیست! آرامش هنر نیندیشیدن به انبوه مسائلیست که ارزش فکر کردن ندارد...

  2. #2
    مدیر بازنشسته
    تاریخ عضویت
    2011 June
    محل سکونت
    گرگان
    ارسال ها
    1,170
    تشکر
    62
    تشکر شده 1,587 بار در 809 پست
    نوشته های وبلاگ
    49


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    کد مربوط به infix در ساختمان داه:

    کلاس:
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Infix
    {
    class Stacke
    {
    int size = 100;
    object[] item;
    int top;
    public Stacke()
    {
    top = -1;
    item=new object [size];

    }
    public bool IsFull()//don't have
    {
    if (top == size - 1)
    return true;
    else
    return false;
    }
    public bool IsEmpty()//do have
    {
    if (top == -1)
    return true;
    else
    return false;
    }
    public bool Push(object n)
    {
    if (IsFull())
    return false;
    else
    {
    item[++top] = n;
    return true;
    }

    }
    public object Pop()
    {
    if (IsEmpty())
    return -1;
    else
    return item [top--];
    }
    public object TestTop()
    {
    if (IsEmpty())
    return -1;
    else
    return item[top];
    }

    }
    }


    فراخونی:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace Infix
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void btn_Change_Click(object sender, EventArgs e)
    {
    Stacke ExampleStack = new Stacke();
    object topStack = null;
    object Capacity = null;
    string STRING = txt_Infix.Text;
    string posfix = "";
    bool NUMBER = true;
    for (int i = 0; i < STRING.Length; i++)
    {
    switch (STRING[i])
    {
    case '+':
    while (NUMBER)
    {
    topStack = ExampleStack.TestTop();
    if (ExampleStack.IsEmpty())
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    else if ((char)topStack == '*')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '/')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '-')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '+')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '(')
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    }
    break;
    case '-':
    while (NUMBER)
    {
    topStack = ExampleStack.TestTop();
    if (ExampleStack.IsEmpty())
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    else if ((char)topStack == '*')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '/')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '-')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '+')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '(')
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    }
    break;
    case '/':
    while (NUMBER)
    {
    topStack = ExampleStack.TestTop();
    if (ExampleStack.IsEmpty())
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    else if ((char)topStack == '*')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '/')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '-')
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    else if ((char)topStack == '+')
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    else if ((char)topStack == '(')
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    }
    break;
    case '*':
    while (NUMBER)
    {
    topStack = ExampleStack.TestTop();
    if (ExampleStack.IsEmpty())
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    else if ((char)topStack == '*')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '/')
    {
    Capacity = ExampleStack.Pop();
    posfix += Capacity;
    }
    else if ((char)topStack == '-')
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    else if ((char)topStack == '+')
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    else if ((char)topStack == '(')
    {
    ExampleStack.Push(STRING[i]);
    break;
    }
    }
    break;
    case '(':
    ExampleStack.Push(STRING[i]);
    break;
    case ')':
    while (NUMBER)
    {
    topStack = ExampleStack.TestTop();
    if ((char)topStack == '(')
    {
    ExampleStack.Pop();
    break;
    }
    else
    {
    posfix += ExampleStack.Pop();
    }
    }
    break;
    default:
    posfix += STRING[i];
    break;
    }
    }
    while (NUMBER)
    {
    if (ExampleStack.IsEmpty())
    break;
    else
    posfix += ExampleStack.Pop();
    }
    txt_Postfix.Text = posfix.ToString();
    }
    }
    }



    Hossein این نویسه را میپسندد.
    آرامش محصول تفکر نیست! آرامش هنر نیندیشیدن به انبوه مسائلیست که ارزش فکر کردن ندارد...

 

 

کاربران برچسب خورده در این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

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


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 05:42 PM بر حسب GMT +4 می باشد.