برای مشاهده مفیدترین ارسال در این موضوع اینجا کلیک کنید

نمایش نتایج: از شماره 1 تا 1 از مجموع 1
  1. #1
    مهشید فلاح
    تاریخ عضویت
    2012 January
    سن
    31
    ارسال ها
    294
    تشکر
    1,374
    تشکر شده 863 بار در 337 پست
    نوشته های وبلاگ
    10


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

    پروژه infix to postfix پیشرفته

    سلام
    همون طور که از عنوان پست معلومه این پروژه infix to postfix به صورت پیشرفته هستش
    واین قابلیت محاسبه متغیبر های چند کاراکتری و محاسبه infix to postfix را دارد

    از اونجایی که خودم همه سایت ها رو گشتم یه پروژه مشابه رو پیدا کنم گفتم بزارم بچه های دانشگاه استفاده کنن( اکثر سایت ها با گرفتم مبلغی این پروژه رو میدن )

    فرم یک

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


    namespace WindowsFormsApplication9
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    static string infix = "";
    static string postfix = "";
    private void label6_Click(object sender, EventArgs e)
    {
    Close();


    }
    static string[] variable(string infx) //inja moteghayera likhte mishe tu string
    {


    string[] variable = new string[infx.Length];
    int num = 0;
    string Operator = "+-/*()";
    for (int i = 0; i < infx.Length; i++)
    {
    bool check = false;


    while (i < infx.Length && !Operator.Contains(infx[i]))
    {
    variable[num] += infx[i];
    check = true;
    i++;
    }
    if (check)
    num++;
    }


    return variable;
    }
    //--------------------------------------------------------------------------------------------------------
    static string[] amalgar(string infx1) //hame amalgar haye tuye infix tush rikhte mishe ,be tartibe
    {
    string[] operator1 = new string[infx1.Length];
    int num = 0;
    string Operator = "+-*/";
    for (int i = 0; i < infx1.Length; i++)
    {
    bool check = false;


    while (i < infx1.Length && Operator.Contains(infx1[i]))
    {
    operator1[num] += infx1[i];
    check = true;
    i++;
    }
    if (check)
    num++;
    }


    return operator1;
    }
    //-------------------------------------------------------------------------------------------------------
    static string infixtopostfix(string infix, ref string[] Compute) //tabei ke be postfix tabdil mikone,inja felankhoruji az noe void e,injuri ma mitunestam vaghti baraye bare dovom az tabe estefade konam javab o bebinam ke okeye ya na,badan khoruji string mishe
    {


    cStack stack = new cStack(infix.Length);
    Compute = new string[infix.Length];
    int num = 0;
    postfix = "";
    for (int i = 0; i < infix.Length; i++)
    {


    if (infix[i] == ' ')
    {
    continue;
    }
    if (infix[i] != '/' && infix[i] != '*' && infix[i] != '+' && infix[i] != '-' && infix[i] != '(' && infix[i] != ')' && infix[i] != '^')
    {


    postfix += infix[i];
    Compute[num] += infix[i];
    }
    else
    {
    num++;
    if (infix[i] == '+' || infix[i] == '-')
    {
    if (stack.top == -1)
    {
    stack.push(infix[i]);
    }
    else
    if (stack.topOfStack() != '(')
    {
    char ch = '*';
    if (infix[i] == '+') ch = '-';
    if (infix[i] == '-') ch = '+';


    while (stack.topOfStack() == '*' || stack.topOfStack() == '/' || stack.topOfStack() == ch || stack.topOfStack() == infix[i])
    {
    string temp = stack.pop().ToString();
    postfix += temp;
    Compute[num] += temp;
    num++;
    if (stack.top == -1) break;
    }


    stack.push(infix[i]);


    }
    else
    stack.push(infix[i]);


    }
    if (infix[i] == '/' || infix[i] == '*')
    {
    if (stack.topOfStack() == '-' || stack.topOfStack() == '+')
    {
    stack.push(infix[i]);
    }
    else
    {
    char ch = '+';
    if (infix[i] == '/') ch = '*';
    if (infix[i] == '*') ch = '/';


    while (stack.topOfStack() == ch || stack.topOfStack() == infix[i])
    {
    string temp = stack.pop().ToString();
    postfix += temp;
    Compute[num] += temp;
    num++;
    if (stack.top == -1) break;
    }


    stack.push(infix[i]);
    }
    }
    else if (infix[i] == '(')
    {
    stack.push(infix[i]);
    }
    else
    {
    if (infix[i] == ')')
    {
    while (
    stack.topOfStack() != '(')
    {
    string temp = stack.pop().ToString();
    postfix += temp;
    Compute[num] += temp;
    num++;
    }
    stack.pop();
    }
    }




    }


    }
    //******************************************************


    while (stack.top != -1)
    {
    string temp = stack.pop().ToString();
    num++;
    postfix += temp;
    Compute[num] += temp;
    }
    return postfix;
    }

    static string computation(string[] pst)
    {

    cStack stacks = new cStack(pst.Length);


    double op1 = 0;
    double op2 = 0;


    for (int i = 0; i < pst.Length; i++)
    {
    if (pst[i] == null) break;
    if (pst[i] != "*" && pst[i] != "+" && pst[i] != "/" && pst[i] != "-")
    {
    stacks.push(pst[i]);
    }
    else
    {
    if (stacks.top > 0)
    {


    op2 = Convert.ToDouble(stacks.pop());
    op1 = Convert.ToDouble(stacks.pop());
    }
    if (pst[i] == "+")
    {
    stacks.push(op1 + op2);
    }
    if (pst[i] == "-")
    {
    stacks.push(op1 - op2);
    }
    if (pst[i] == "*")
    {
    stacks.push(op1 * op2);
    }
    if (pst[i] == "/")
    {
    stacks.push(op1 / op2);
    }
    }


    }

    string m = Convert.ToString(stacks.pop());
    return m;



    }
    static bool number(string num)
    {
    try
    {


    Convert.ToDouble(num);
    }
    catch { return false; }
    return true;
    }
    private void Form1_Load(object sender, EventArgs e)
    {


    }
    private void label2_Click(object sender, EventArgs e)
    {
    infix = textBox1.Text;
    string[] Compute = new string[infix.Length];
    if (textBox3.Text == "")
    {
    textBox2.Text = infixtopostfix(infix, ref Compute);
    groupBox1.Visible = true;


    }
    string[] A = variable(infix);
    bool Flag = false;
    for (int i = 0; i < A.Length; i++)
    {
    if (A[i] == null)
    break;
    if (!number(A[i]))
    {
    Flag = true;
    }
    }
    if (textBox3.Text != "" || !Flag)
    {


    string[] A2 = amalgar(infix);
    string[] Back = textBox3.Text.Split(' ');
    string infx23 = "";
    int i = 0;
    double m = 0; int num = 0;
    for (int k = 0; k < infix.Length; k++)
    {


    if (A[k] == null || A[k] == " ")
    break;
    if (!number(A[k]))
    {


    m = Convert.ToDouble(Back[i]);
    i++;
    infx23 += m;


    infx23 += A2[num];


    num++;
    }
    else
    {
    infx23 += A[k];
    infx23 += A2[num];


    num++;
    }


    }
    textBox2.Text = infixtopostfix(infx23, ref Compute);
    textBox4.Text = computation(Compute);
    groupBox2.Visible = true;
    }
    }




    private void label1_Click(object sender, EventArgs e)
    {
    mahshid form = new mahshid();
    form.Show();

    }


    private void groupBox1_Enter(object sender, EventArgs e)
    {


    }


    private void textBox1_TextChanged(object sender, EventArgs e)
    {


    }


    private void label10_Click(object sender, EventArgs e)
    {
    Form2 m = new Form2();
    m.Show();
    }
    string Op = "/*+-";
    private void label11_Click(object sender, EventArgs e)
    {
    string infix = textBox1.Text;
    bool Error = false;
    if (infix.Length < 3) Error = true;
    for (int i = 0; i < infix.Length - 1; i++)
    {
    if (Op.Contains(infix[i]) && Op.Contains(infix[i + 1]))
    {


    Error = true;
    }
    }




    if (Error)
    MessageBox.Show("Syntax Error!!! Check Infix String");
    else
    label2.Enabled = true;
    }


    }
    }




    فرم دو

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    namespace WindowsFormsApplication9
    {
    public partial class Form2 : Form
    {
    public Form2()
    {
    InitializeComponent();
    }
    Button[] btn = new Button[5];
    static int help = -1;
    static int top = -1;
    // cStack p = new cStack();
    poshteh p = new poshteh();










    private void Form2_Load(object sender, EventArgs e)
    {


    }


    private void button1_Click(object sender, EventArgs e)
    {
    if (help < 4)
    {
    help++;
    top++;


    btn[0] = button5;
    btn[1] = button6;
    btn[2] = button7;
    btn[3] = button8;
    btn[4] = button9;


    btn[help].Text = textBox1.Text;
    textBox1.Text = "";




    if (help == 0)
    timer1.Enabled = true;


    if (help == 1)
    timer2.Enabled = true;


    if (help == 2)
    timer3.Enabled = true;


    if (help == 3)
    timer4.Enabled = true;


    if (help == 4)
    timer5.Enabled = true;
    }
    }


    private void timer1_Tick(object sender, EventArgs e)
    {


    while (btn[0].Left <= panel1.Left)
    {
    p.push(textBox1.Text);
    btn[0].Left += 1;
    Thread.Sleep(3);

    timer1.Enabled = false;
    label3.Text = Convert.ToString(help);
    }


    }


    private void timer2_Tick(object sender, EventArgs e)
    {
    while (btn[1].Left <= panel1.Left)
    {
    p.push(textBox1.Text);
    btn[1].Left += 1;
    Thread.Sleep(3);
    timer2.Enabled = false;
    label3.Text = Convert.ToString(help);
    }
    }


    private void timer3_Tick(object sender, EventArgs e)
    {
    while (btn[2].Left <= panel1.Left)
    {
    p.push(textBox1.Text);
    btn[2].Left += 1;
    Thread.Sleep(3);
    timer3.Enabled = false;
    label3.Text = Convert.ToString(help);
    }
    }


    private void timer4_Tick(object sender, EventArgs e)
    {
    while (btn[3].Left <= panel1.Left)
    {
    p.push(textBox1.Text);
    btn[3].Left += 1;
    Thread.Sleep(3);
    timer4.Enabled = false;
    label3.Text = Convert.ToString(help);
    }
    }


    private void timer5_Tick(object sender, EventArgs e)
    {
    while (btn[4].Left <= panel1.Left)
    {
    p.push(textBox1.Text);
    btn[4].Left += 1;
    Thread.Sleep(3);
    timer5.Enabled = false;
    label3.Text = Convert.ToString(help);
    }
    }


    private void button2_Click(object sender, EventArgs e)
    {


    top--;


    btn[0] = button5;
    btn[1] = button6;
    btn[2] = button7;
    btn[3] = button8;
    btn[4] = button9;




    if (help == 0)
    timer6.Enabled = true;


    if (help == 1)
    timer7.Enabled = true;


    if (help == 2)
    timer7.Enabled = true;


    if (help == 3)
    timer8.Enabled = true;


    if (help == 4)
    timer9.Enabled = true;
    }


    private void button3_Click(object sender, EventArgs e)
    {
    if (top == -1)
    {
    p.IsEmpty();
    MessageBox.Show("پشته خالی است");
    }
    else
    MessageBox.Show("پشته خالی نیست");


    }


    private void button4_Click(object sender, EventArgs e)
    {
    if (top == 4)
    {
    p.IsFull();
    MessageBox.Show("پشته پر است");
    }
    else
    MessageBox.Show("پشته پر نشده است");


    }


    private void timer6_Tick(object sender, EventArgs e)
    {
    while (btn[help].Left >= panel2.Right)
    {
    p.pop();
    btn[help].Left -= 1;
    Thread.Sleep(3);
    timer6.Enabled = false;
    label3.Text = Convert.ToString(help - 1);
    }
    help--;
    }


    private void timer7_Tick(object sender, EventArgs e)
    {
    while (btn[help].Left >= panel2.Right)
    {
    p.pop();
    btn[help].Left -= 1;
    Thread.Sleep(3);
    timer7.Enabled = false;
    label3.Text = Convert.ToString(help - 1);
    }
    help--;
    }


    private void timer8_Tick(object sender, EventArgs e)
    {
    while (btn[help].Left >= panel2.Right)
    {
    p.pop();
    btn[help].Left -= 1;
    Thread.Sleep(3);
    timer8.Enabled = false;
    label3.Text = Convert.ToString(help - 1);
    }
    help--;
    }


    private void timer9_Tick(object sender, EventArgs e)
    {
    while (btn[help].Left >= panel2.Right)
    {
    p.pop();
    btn[help].Left -= 1;
    Thread.Sleep(3);
    timer9.Enabled = false;
    label3.Text = Convert.ToString(help - 1);
    }
    help--;
    }


    private void timer10_Tick(object sender, EventArgs e)
    {
    while (btn[help].Left >= panel2.Right)
    {
    p.pop();
    btn[help].Left -= 1;
    Thread.Sleep(3);
    timer10.Enabled = false;
    label3.Text = Convert.ToString(help - 1);
    }
    help--;
    }


    private void label2_Click(object sender, EventArgs e)
    {
    Close();
    }
    }
    }




    کلاس poshteh


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


    namespace WindowsFormsApplication9
    {
    class poshteh
    {
    public int size = 100, count = 0;
    private string[] item;
    private int top;


    public poshteh()
    {
    item = new string[size];
    top = -1;
    }


    //////////////////////////////////////////////////////////////////////
    public bool IsFull()
    {
    if (top == size - 1)
    return true;
    else
    return false;
    }
    //////////////////////////////////////////////////////////////////////
    public bool IsEmpty()
    {
    if (top == -1)
    return true;
    else
    return false;
    }
    //////////////////////////////////////////////////////////////////////
    public bool push(object data)
    {
    if (IsFull())
    return false;


    item[++top] = (string)data;
    count++;
    return true;
    }
    //////////////////////////////////////////////////////////////////////
    public object pop()
    {
    if (IsEmpty())
    return '-';
    count--;
    return (item[top--]);


    }


    ////////////////////////////////////////////////////////////////////
    public string toptest()
    {
    if (IsEmpty())
    return "z";
    return (item[top]);
    }
    }
    }




    کلاس cStack


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


    namespace WindowsFormsApplication9
    {
    public class cStack
    {
    private object[] items;
    int count = 0;
    public int top, Size = 1000;


    public cStack(int size)
    {
    top = -1;
    Size = size;
    items = new object[Size];


    }
    public cStack()
    {
    top = -1;




    }
    public char topOfStack()
    {


    if (top != -1)
    return Convert.ToChar(items[top]);
    else
    return ' ';
    }
    public object pop()
    {
    if (IsEmpty())
    return '$';
    else
    {

    return Convert.ToString(items[top--]);
    }
    }
    public bool IsEmpty()
    {
    if (top == -1)
    return true;
    else
    return false;
    }


    public void push(object ch)
    {
    if (top == Size - 1)
    // return false;
    Console.Write("poshteh por ast");
    else
    {
    top++;
    items[top] = ch;
    }


    }
    }
    }




    موضوعات مشابه:
    فایل های پیوست شده
    ویرایش توسط Mahshid : 11th February 2013 در ساعت 09:14 PM
    امام جواد علیه السلام :
    ثَلاثٌ مَن کُنَّ فِیهِ لَم یَندَم: تَرکُ العَجَلة ، وَ المَشوِرَة ، وَ التَّوَکُلُ عَلَی اللهِ عِندَ العَزمِ؛
    سه چیز است که هر ** آن را مراعات کند ، پشمیان نگردد : 1 - اجتناب از عجله ، 2 - مشورت کردن ، 3 - و توکل بر خدا در هنگام تصمیم گیری .





 

 

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

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

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

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

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


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