wolome
یک شنبه 25 مهر 1389, 23:20 عصر
برنامه ای که یک تابع رو مثل 3x+4-x^2 رو از ورودی بگیره و نمودارش رو رسم کنه برای تشخیص تابع این روهم نوشتم ولی کامل نیست لطفا کمکم کنید.
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();
}
}
}
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();
}
}
}