View Full Version : حرفه ای: تبدیل یک تابع از نوع رشته ای به ریاضی
wolome
سه شنبه 20 مهر 1389, 23:48 عصر
کسی میدونه که چطوری میشه یک تابع از نوع رشته ای رو به ریاضی تبدیل کرد مثلا 2x+4 را در یک textbox وارد کنی و بعد خود برنامه مقدار x رو درون یک textbox دیگه بگیره و y رو محاسبه کنه.
group45
چهارشنبه 21 مهر 1389, 01:50 صبح
سلام
دوست عزیز مثل اینکه شما از prefix,postfix,infix جیزی نمیدونید.بهتون توصیه میکنم اول این مفاهیم رو متوجه بشید بعد.........
ASKaffash
چهارشنبه 21 مهر 1389, 10:03 صبح
سلام
این سورس را ببین :
http://www.barnamenevis.org/forum/showthread.php?t=163394
wolome
چهارشنبه 21 مهر 1389, 15:35 عصر
یه روش به غیر از استفاده ازپشته بگید
و الا این رو نوشتم
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace postcalc
{
public partial class Form1 : Form
{
Stack stack = new Stack();
Stack revstack = new Stack();
string lastnum;
char[] ramy;
bool empty = true;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
ramy = textBox1.Text.ToCharArray();
foreach (char c in ramy)
{
if (char.IsDigit(c))
lastnum = lastnum + c.ToString();
else
{
stack.Push(lastnum);
if (empty == true)
{
revstack.Push(c);
empty = false;
}
else
{
switch (c)
{
case '+':
while (revstack.Peek().ToString() == "*" || revstack.Peek().ToString() == "/" ||
revstack.Peek().ToString() == "+" || revstack.Peek().ToString() == "-")
stack.Push(revstack.Pop());
revstack.Push(c);
break;
case '-':
while (revstack.Peek().ToString() == "*" || revstack.Peek().ToString() == "/" ||
revstack.Peek().ToString() == "+" || revstack.Peek().ToString() == "-")
stack.Push(revstack.Pop());
revstack.Push(c);
break;
case '*':
while (revstack.Peek().ToString() == "*" || revstack.Peek().ToString() == "/")
stack.Push(revstack.Pop());
revstack.Push(c);
break;
case '/':
while (revstack.Peek().ToString() == "*" || revstack.Peek().ToString() == "/")
stack.Push(revstack.Pop());
revstack.Push(c);
break;
}
}
}
}
stack.Push(lastnum);
while (revstack.Peek().ToString() == "+" ||
revstack.Peek().ToString() == "-" ||
revstack.Peek().ToString() == "*" ||
revstack.Peek().ToString() == "/")
stack.Push(revstack.Pop());
while (stack.Peek().ToString() != "")
revstack.Push(stack.Pop());
while (revstack.Peek().ToString() != "")
textBox2.Text = textBox2.Text + revstack.Pop().ToString();
}
}
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.