示例#1
0
        //*************************************************************************************************************
        //Загружает в объект класса DataGridView MTTape состояние объекта машины Тьюринга
        private void MTLoad(MT mt)
        {
            try
            {
                //Выставляем количество строк на 2, количество столбцов длина ленты машины + 20
                this.MTTape.ColumnCount = mt.ReturnTape().Count + 20;
                 for (int i = 0; i < mt.ReturnTape().Count + 20; i++)
                    this.MTTape.Columns[i].Width = 35;                
                this.MTTape.RowCount = 2;

                //Загружаем состояние ленты машины Тьюринга в 1ую строку MTTape
                this.MTTape.Rows[0].SetValues(mt.ReturnTape().ToArray<string>());

                //Устанавливаем головку машины Тьюринга на ленте(позиция на ленте + состояние машины)
                List<string> MTHead = new List<string>();
                 for (int i = 0; i < mt.ReturnTape().Count + 20; i++)
                    MTHead.Add(" ");
                MTHead[mt.ReturnCell()] = mt.ReturnState();
                this.MTTape.Rows[1].SetValues(MTHead.ToArray<string>());
                 for (int i = 0; i < mt.ReturnTape().Count + 20; i++)
                     this.MTTape.Rows[1].Cells[i].Style.BackColor = System.Drawing.Color.White;                                                                                        
                this.MTTape.Rows[1].Cells[mt.ReturnCell()].Style.BackColor = System.Drawing.Color.Red;                                                                                  
            }

            //Если слово слишком большое выбрасываем сообщение с ошибкой и обнуляем контролы
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message, "Ошибка!");
                this.InputWord.Text = "Введите слово в алфавите {0,1}, произвольной длины...";
                this.InputWord.Enabled = true;
                this.ClearMT.Enabled = false;
                this.MTTape.Enabled = false;
                this.MTTape.ColumnCount = 0;
                this.MTTape.RowCount = 0;
                this.MTNextStep.Enabled = false;                
            }
        }
示例#2
0
        //*************************************************************************************************************
        //Обработчик нажатия на кнопку Запустить
        private void StartMT_Click(object sender, EventArgs e)
        {
            //Создаем объект класса машины Тьюринга, помещая на ленту введеное слово в алфавите {0,1}
            mt = new MT(this.InputWord.Text);

            //Расставляем контролы
            this.InputWord.Enabled = false;
            this.StartMT.Enabled = false;
            this.MTTape.Enabled = true;
            this.MTNextStep.Enabled = true;

            //Загружаем в MTTape объект машины Тьюринга
            MTLoad(mt);
        }