0

ここではC#の初心者です。テキストボックスから文字列を取得し、次のアルゴリズムを適用していますが、オペランドと演算子の分割は機能しません。

    string cal = "225+699"; 
        char[] all= cal.ToCharArray();
        int i=0,j=0;
        while (all[i] != '+' || all[i] != '-' || all[i] != '/' || all[i] != 'x')
        {

            j++;

        } // first operator check 
        char op = all[j + 1]; // operator save
        char[] part1 = new char[j];

        for (i = 0; i <= j; i++)
        {
            part1[i] = all[i];
        }
        string inp = Convert.ToString(part1);
        float a = float.Parse(inp); // first operand
        int l=cal.Length-(j+1);
        char[] part2 = new char[l];
        int c = 0;
        for (i = j + 1; i <= cal.Length; i++)// starts after operator
        {
            part2[c] = all[i];
            c++;

        }

        string h = Convert.ToString(part2);
        float b = float.Parse(h); // other operand 
4

1 に答える 1

1

前提条件: 言語の基礎を学ぶ。たとえば、文字列に対してインデクサーを使用したり、配列の代わりにリストを使用したりすることができます。論理演算子がどのように機能するかについて学びます。whileたとえば、条件が常に真であるか、例外をスローします。ここにはネストされたループがないため、場違いに見えますが、ループに属しているように見えます。要するに、あなたは深すぎて速すぎます。

あなたが初心者で解析を学びたいと考えているなら...本に戻って理論を読み、逆ポーランド記法とは何か、そしてそれをどのように使用するかを調べてください

他のタスクを解決するために構文解析の問題を解決しようとしている場合は、 FLEEを見てください。構文解析を行うことができ、実用的な観点からはより有用である可能性があります (ただし、理論的な知識にはメリットがあり、そうすべきではありません)。解任)

于 2013-03-04T20:49:24.290 に答える