0

C# でチューリング マシンを実装しようとしています。単語をチャート配列に変換し、配列を操作します。

      public TuringMachine(String word) {
            word = " " + word + " ";
            tapeArray = word.ToCharArray();  
        }

番号1で終わる行/文字列/単語を検出する必要があります。したがって、入力する1010100101と、これが得られます

>1 
>Word ends in 1

しかし、入力する10101010と、 が得られIndexOutOfRangeExceptionます。

ここに完全なコード:

public class TuringMachine {
        char[] tapeArray;
        int N;
        char a0 = ' ';
        int i = 1;

       public TuringMachine(String word) {
            word = " " + word + " ";
            tapeArray = word.ToCharArray();
            N = tapeArray.Length;
            State1();
        }

        public void State1() {
            if (tapeArray[i] == '1') {
                tapeArray[i] = '1';
                i = i + 1;
                State1();
            }
            if(tapeArray[i] == '0') {
                tapeArray[i] = '0';
                i = i + 1;
                State1();
            }
            if (tapeArray[i] == a0) {
                tapeArray[i] = a0;
                i = i - 1;
                State2();
            }
        }

        public void State2() {
            if (tapeArray[i] == '1') {
                tapeArray[i] = a0;
                i = i - 1;
                State3();
            }
            if (tapeArray[i] == '0') {
                tapeArray[i] = a0;
                i = i - 1;
                State4();
            }
        }

        public void State3() {
            if (tapeArray[i] == '1') {
                tapeArray[i] = a0;
                i = i - 1;
                State3();
            }
            if (tapeArray[i] == '0') {
                tapeArray[i] = a0;
                i = i - 1;
                State3();
            }
            if (tapeArray[i] == a0) {
                tapeArray[i] = '1';
            }
        }

        public void State4() {
            if (tapeArray[i] == '1') {
                tapeArray[i] = a0;
                i = i - 1;
                State4();
            }
            if (tapeArray[i] == '0') {
                tapeArray[i] = a0;
                i = i - 1;
                State4();
            }
            if (tapeArray[i] == a0) {
                tapeArray[i] = '0';
                i = 1;
            }
        }
    }

誰かがなぜ私が得たのか説明できますかIndexOutOfRangeException?

下手な英語でごめんなさい

4

0 に答える 0