//************************************************************************************************************* //Загружает в объект класса 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; } }
//************************************************************************************************************* //Обработчик нажатия на кнопку Запустить 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); }