Показать сообщение отдельно
Старый 25.12.2006, 18:22   #9
UniXoiD
AnyKey`щик
 
Регистрация: 22.12.2006
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Re: График и ввод функции

Да не, нужен алгоритм разложения на паскале... Хотя и на яве у меня он уже есть, но я яву знаю на нуле
 
public class f
{
    Stack m_forStack;
    Stack m_intStack;
    Stack m_tryStack;
    Stack m_caseStack;
    String m_aString;
    Stack m_newStack;
    Stack m_ifStack;
    e m_doe;
    byte m_byteaB[] = {
        0, 8, 8, 5, 5, 3, 2, 10, 0, 1, 
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
        0, 0, 0, 1, 1, 1, 1
    };
    public f(String s)
    {
        m_tryStack = new Stack();
        m_forStack = new Stack();
        m_newStack = new Stack();
        m_caseStack = new Stack();
        m_intStack = new Stack();
        m_ifStack = new Stack();
        m_doe = (new e())._dee(e.m_ce);
        m_aString = new String(s);
        _avV();
        _dovV();
        _ifvV();
    }
    public void _ifvV()
    {
        m_newStack.setSize(0);
        m_ifStack.setSize(0);
        m_tryStack.setSize(0);
        m_caseStack.setSize(0);
        if(m_aString == "empty")
            return;
        for(int i = 0; i < m_forStack.size(); i++)
            if(Integer.parseInt(m_forStack.elementAt(i).toString()) == 0)
            {
                m_newStack.addElement(m_forStack.elementAt(i));
                m_ifStack.addElement(m_intStack.elementAt(i));
            } else
            if(m_tryStack.size() < 1)
            {
                m_tryStack.addElement(m_forStack.elementAt(i));
                m_caseStack.addElement(m_intStack.elementAt(i));
            } else
            if(Integer.parseInt(m_forStack.elementAt(i).toString()) == 7)
            {
                m_tryStack.addElement(m_forStack.elementAt(i));
                m_caseStack.addElement(m_intStack.elementAt(i));
            } else
            if(Integer.parseInt(m_forStack.elementAt(i).toString()) == 8)
            {
                for(; _forvI() != 7; m_ifStack.addElement(m_caseStack.pop()))
                    m_newStack.addElement(m_tryStack.pop());
                m_tryStack.pop();
                m_caseStack.pop();
            } else
            if(_forvI() >= 0)
            {
                if(m_byteaB[_forvI()] <= m_byteaB[Integer.parseInt(m_forStack.elementAt(i).toString())])
                {
                    while(m_byteaB[_forvI()] <= m_byteaB[Integer.parseInt(m_forStack.elementAt(i).toString())]) 
                    {
                        m_newStack.addElement(m_tryStack.pop());
                        m_ifStack.addElement(m_caseStack.pop());
                        if(m_tryStack.size() < 1)
                            break;
                    }
                    m_tryStack.addElement(m_forStack.elementAt(i));
                    m_caseStack.addElement(m_intStack.elementAt(i));
                } else
                {
                    m_tryStack.addElement(m_forStack.elementAt(i));
                    m_caseStack.addElement(m_intStack.elementAt(i));
                }
            } else
            {
                m_tryStack.addElement(m_forStack.elementAt(i));
                m_caseStack.addElement(m_intStack.elementAt(i));
            }
        for(; m_tryStack.size() > 0; m_ifStack.addElement(m_caseStack.pop()))
            m_newStack.addElement(m_tryStack.pop());
    }
    public void _dovV()
    {
        String s = new String("");
        m_forStack.setSize(0);
        m_intStack.setSize(0);
        if(m_aString == "empty")
            return;
        int j = m_aString.length();
        if(j < 1)
            return;
        boolean flag = false;
        boolean flag1 = false;
        for(int i = 0; i < j; i++)
        {
            if(flag1)
            {
                if(_forCZ(m_aString.charAt(i)))
                {
                    s = s + m_aString.charAt(i);
                    continue;
                }
                flag1 = false;
                if(s.equals("sin"))
                {
                    m_forStack.addElement(new Integer(9));
                    m_intStack.addElement(new e());
                }
                if(s.equals("cos"))
                {
                    m_forStack.addElement(new Integer(10));
                    m_intStack.addElement(new e());
                }
                if(s.equals("lg"))
                {
                    m_forStack.addElement(new Integer(11));
                    m_intStack.addElement(new e());
                }
                if(s.equals("log2"))
                {
                    m_forStack.addElement(new Integer(12));
                    m_intStack.addElement(new e());
                }
                if(s.equals("tg"))
                {
                    m_forStack.addElement(new Integer(13));
                    m_intStack.addElement(new e());
                }
                if(s.equals("arctg"))
                {
                    m_forStack.addElement(new Integer(14));
                    m_intStack.addElement(new e());
                }
                if(s.equals("arccos"))
                {
                    m_forStack.addElement(new Integer(15));
                    m_intStack.addElement(new e());
                }
                if(s.equals("arcsin"))
                {
                    m_forStack.addElement(new Integer(16));
                    m_intStack.addElement(new e());
                }
                if(s.equals("sqrt"))
                {
                    m_forStack.addElement(new Integer(19));
                    m_intStack.addElement(new e());
                }
                if(s.equals("pi"))
                {
                    m_forStack.addElement(new Integer(20));
                    m_intStack.addElement(new e());
                }
                if(s.equals("x"))
                {
                    m_forStack.addElement(new Integer(21));
                    m_intStack.addElement(new e());
                }
                if(s.equals("e"))
                {
                    m_forStack.addElement(new Integer(22));
                    m_intStack.addElement(new e());
                }
                if(s.equals("abs"))
                {
                    m_forStack.addElement(new Integer(23));
                    m_intStack.addElement(new e());
                }
                if(s.equals("ln"))
                {
                    m_forStack.addElement(new Integer(24));
                    m_intStack.addElement(new e());
                }
                if(s.equals("log"))
                {
                    m_forStack.addElement(new Integer(25));
                    m_intStack.addElement(new e());
                }
                if(s.equals("ctg"))
                {
                    m_forStack.addElement(new Integer(26));
                    m_intStack.addElement(new e());
                }
            }
            if(flag)
            {
                if(_ifCZ(m_aString.charAt(i)) || m_aString.charAt(i) == '.')
                {
                    s = s + m_aString.charAt(i);
                    continue;
                }
                flag = false;
                int k = s.indexOf('.');
                if(k > -1)
                {
                    m_forStack.addElement(new Integer(0));
                    m_intStack.addElement(new e(Integer.parseInt(s.substring(0, k)), -(m_aString.length() - k - 1)));
                } else
                {
                    m_forStack.addElement(new Integer(0));
                    m_intStack.addElement(new e(Integer.parseInt(s)));
                }
            }
            if(m_aString.charAt(i) != ' ' && m_aString.charAt(i) != ',')
            {
                if(_doCZ(m_aString.charAt(i)))
                {
                    m_forStack.addElement(new Integer(6));
                    m_intStack.addElement(new e());
                }
                if(_aCZ(m_aString.charAt(i)))
                {
                    if(m_aString.charAt(i) == '+')
                    {
                        m_forStack.addElement(new Integer(1));
                        m_intStack.addElement(new e());
                    }
                    if(m_aString.charAt(i) == '-')
                    {
                        m_forStack.addElement(new Integer(2));
                        m_intStack.addElement(new e());
                    }
                    if(m_aString.charAt(i) == '*')
                    {
                        m_forStack.addElement(new Integer(3));
                        m_intStack.addElement(new e());
                    }
                    if(m_aString.charAt(i) == '/')
                    {
                        m_forStack.addElement(new Integer(4));
                        m_intStack.addElement(new e());
                    }
                    if(m_aString.charAt(i) == '^')
                    {
                        m_forStack.addElement(new Integer(5));
                        m_intStack.addElement(new e());
                    }
                } else
                if(m_aString.charAt(i) == '(')
                {
                    m_forStack.addElement(new Integer(7));
                    m_intStack.addElement(new e());
                } else
                {
                    if(m_aString.charAt(i) == ')')
                    {
                        m_forStack.addElement(new Integer(8));
                        m_intStack.addElement(new e());
                    }
                    if(_ifCZ(m_aString.charAt(i)))
                    {
                        flag = true;
                        s = "" + m_aString.charAt(i);
                    } else
                    if(_forCZ(m_aString.charAt(i)))
                    {
                        flag1 = true;
                        s = "" + m_aString.charAt(i);
                    } else
                    {
                    }
                }
            }
        }
    }
    private int _forvI()
    {
        if(m_tryStack.size() < 1)
            return -1;
        else
            return Integer.parseInt(m_tryStack.peek().toString());
    }
    public void _avV()
    {
        String s = new String("");
        int k = m_aString.length();
        if(k < 1)
        {
            m_aString = "empty";
            return;
        }
        for(int i = 0; i < k; i++)
        {
            if(m_aString.charAt(i) != ' ')
                s = s + m_aString.charAt(i);
        }
        m_aString = ' ' + m_aString + ' ';
        for(int j = 0; j < k; j++)
        {
            if(m_aString.charAt(j) == '-' && m_aString.charAt(j - 1) != ')' && !_ifCZ(m_aString.charAt(j - 1)))
                m_aString = m_aString.substring(0, j) + '_' + m_aString.substring(j + 1);
        }
    }
    public boolean _ifCZ(char c)
    {
        return c >= '0' && c <= '9';
    }
    public e _aee(e e1)
    {
        e e2 = new e(0L);
        e e3 = new e();
        e e6 = new e();
        e e8 = new e();
        m_tryStack.setSize(0);
        m_caseStack.setSize(0);
        if(m_aString == "empty")
            return new e(0L);
        for(int k5 = 0; k5 < m_newStack.size(); k5++)
        {
            int l5 = ((Integer)m_newStack.elementAt(k5)).intValue();
            if(l5 == 0)
            {
                m_tryStack.addElement(m_newStack.elementAt(k5));
                m_caseStack.addElement(m_ifStack.elementAt(k5));
            } else
            if(l5 == 1)
            {
                e e9 = ((e)m_caseStack.pop())._elseee((e)m_caseStack.pop());
                int i = 0;
                m_tryStack.addElement(new Integer(i));
                m_caseStack.addElement(e9);
            } else
            if(l5 == 2)
            {
                e e10 = ((e)m_caseStack.pop())._voidee((e)m_caseStack.pop())._ave();
                int j = 0;
                m_tryStack.addElement(new Integer(j));
                m_caseStack.addElement(e10);
            } else
            if(l5 == 3)
            {
                e e11 = ((e)m_caseStack.pop())._bee((e)m_caseStack.pop());
                int k = 0;
                m_tryStack.addElement(new Integer(k));
                m_caseStack.addElement(e11);
            } else
            if(l5 == 4)
            {
                e e4 = (e)m_caseStack.pop();
                if(e4._ceZ(e.m_casee))
                {
                    e2 = new e(0x7fffffffffffffffL, 0x7fffffffffffffffL);
                    return e2;
                }
                e e12 = ((e)m_caseStack.pop())._gotoee(e4);
                int l = 0;
                m_tryStack.addElement(new Integer(l));
                m_caseStack.addElement(e12);
            } else
            if(l5 == 5)
            {
                e e5 = (e)m_caseStack.pop();
                e e7 = (e)m_caseStack.pop();
                if(e7._nulleZ(e.m_casee))
                {
                    if(e5.m_elseJ < 0L)
                    {
                        e2 = new e(0x7fffffffffffffffL, 0x7fffffffffffffffL);
                        return e2;
                    }
                }
                e e13 = e._ifeDFe(e7, e5);
                int i1 = 0;
                m_tryStack.addElement(new Integer(i1));
                m_caseStack.addElement(e13);
            } else
            if(l5 == 6)
            {
                e e14 = ((e)m_caseStack.pop())._ave();
                int j1 = 0;
                m_tryStack.addElement(new Integer(j1));
                m_caseStack.addElement(e14);
            } else
            if(l5 == 9)
            {
                e e15 = e._ifee((e)m_caseStack.pop());
                int k1 = 0;
                m_tryStack.addElement(new Integer(k1));
                m_caseStack.addElement(e15);
            } else
            if(l5 == 10)
            {
                e e16 = e._fee((e)m_caseStack.pop());
                int l1 = 0;
                m_tryStack.addElement(new Integer(l1));
                m_caseStack.addElement(e16);
            } else
            if(l5 == 11)
            {
                e e17 = e._longee((e)m_caseStack.pop());
                int i2 = 0;
                m_tryStack.addElement(new Integer(i2));
                m_caseStack.addElement(e17);
            } else
            if(l5 == 12)
            {
                e e18 = e._dee((e)m_caseStack.pop());
                int j2 = 0;
                m_tryStack.addElement(new Integer(j2));
                m_caseStack.addElement(e18);
            } else
            if(l5 == 13)
            {
                e e19 = e._newee((e)m_caseStack.pop());
                int k2 = 0;
                m_tryStack.addElement(new Integer(k2));
                m_caseStack.addElement(e19);
            } else
            if(l5 == 14)
            {
                e e20 = e._doee((e)m_caseStack.pop());
                int l2 = 0;
                m_tryStack.addElement(new Integer(l2));
                m_caseStack.addElement(e20);
            } else
            if(l5 == 15)
            {
                e e21 = e._eee((e)m_caseStack.pop());
                int i3 = 0;
                m_tryStack.addElement(new Integer(i3));
                m_caseStack.addElement(e21);
            } else
            if(l5 == 16)
            {
                e e22 = e._iee((e)m_caseStack.pop());
                int j3 = 0;
                m_tryStack.addElement(new Integer(j3));
                m_caseStack.addElement(e22);
            } else
            if(l5 != 17 && l5 != 18)
                if(l5 == 19)
                {
                    e e23 = e._charee((e)m_caseStack.pop());
                    int k3 = 0;
                    m_tryStack.addElement(new Integer(k3));
                    m_caseStack.addElement(e23);
                } else
                if(l5 == 20)
                {
                    e e24 = e.m_be;
                    int l3 = 0;
                    m_tryStack.addElement(new Integer(l3));
                    m_caseStack.addElement(e24);
                } else
                if(l5 == 21)
                {
                    e e25 = e1;
                    int i4 = 0;
                    m_tryStack.addElement(new Integer(i4));
                    m_caseStack.addElement(e25);
                } else
                if(l5 == 22)
                {
                    e e26 = e.m_ce;
                    int j4 = 0;
                    m_tryStack.addElement(new Integer(j4));
                    m_caseStack.addElement(e26);
                } else
                if(l5 == 23)
                {
                    e e27 = e._foree((e)m_caseStack.pop());
                    int k4 = 0;
                    m_tryStack.addElement(new Integer(k4));
                    m_caseStack.addElement(e27);
                } else
                if(l5 == 24)
                {
                    e e28 = e._dee((e)m_caseStack.pop())._gotoee(m_doe);
                    int l4 = 0;
                    m_tryStack.addElement(new Integer(l4));
                    m_caseStack.addElement(e28);
                } else
                if(l5 == 25)
                {
                    e e29 = e._dee((e)m_caseStack.pop())._gotoee(e._dee((e)m_caseStack.pop()));
                    int i5 = 0;
                    m_tryStack.addElement(new Integer(i5));
                    m_caseStack.addElement(e29);
                } else
                if(l5 == 26)
                {
                    e e30 = e.m_ife._gotoee(e._newee((e)m_caseStack.pop()));
                    int j5 = 0;
                    m_tryStack.addElement(new Integer(j5));
                    m_caseStack.addElement(e30);
                } else
                {
                }
        }
        e2 = (e)m_caseStack.pop();
        return e2;
    }
    public boolean _aCZ(char c)
    {
        return c == '+' || c == '-' || c == '*' || c == '/' || c == '^';
    }
    public boolean _forCZ(char c)
    {
        return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
    }
    public boolean _doCZ(char c)
    {
        return c == '_';
    }
}
(Offline)
 
Ответить с цитированием