예제 #1
0
 public FormMain()
 {
     InitializeComponent();
     //Инициализируем переходы и ленту
     dgvStates = DGV.StatesStart(dgvStates, alphabet, 4);
     dgvStates = DGV.StatesFormat(dgvStates);
     dgvRibbon = DGV.RibbonStart(dgvRibbon, alphabet, 500, 2);
     dgvRibbon = DGV.RibbonFormat(dgvRibbon);
 }
예제 #2
0
        public static DataGridView openDefault(DataGridView dgv1, string path, string defaultAlphabet)
        {
            try
            {
                StreamReader sr = new StreamReader(@path);
                try
                {
                    //длина и ширина
                    int a = 0;
                    int b = 0;
                    //Считываем длину и ширину
                    a = Convert.ToInt32(sr.ReadLine());
                    b = Convert.ToInt32(sr.ReadLine());
                    //Cоздаём новые размеры
                    dgv1.Rows.Clear();
                    dgv1.Rows.Add(a);
                    dgv1.ColumnCount = b;

                    string newAlphabet = "";
                    for (int i = 0; i < a; i++)
                    {
                        string[] mas = sr.ReadLine().Split(';');
                        for (int j = 0; j < b; j++)
                        {
                            //переписываем в dgv
                            dgv1.Rows[i].Cells[j].Value = mas[j];
                            //Если не нулевая ячейка, то считываем алфавит
                            if (j == 0 && i != 0)
                            {
                                newAlphabet += mas[j];
                            }
                        }
                    }
                    dgv1 = DGV.StatesFormat(dgv1);

                    return(dgv1);
                }
                catch
                {
                    MessageBox.Show("Проблемы считывания стандартного алгоритма");
                    dgv1 = DGV.StatesStart(dgv1, defaultAlphabet, 4);
                    return(dgv1);
                }
                finally
                {
                    sr.Close();
                }
            }
            catch
            {
                MessageBox.Show("Стандартный алгоритм не найден");
                dgv1 = DGV.StatesStart(dgv1, defaultAlphabet, 4);
                return(dgv1);
            }
        }
예제 #3
0
        private void новыйToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //очищаем dgv
            dgvStates.Rows.Clear();
            //Алфавит берём дефолтный
            alphabet = defaultAlphabet;

            //Запускаем нашу dgv
            dgvStates = DGV.StatesStart(dgvStates, alphabet, 4);
            dgvStates = DGV.StatesFormat(dgvStates);
        }
예제 #4
0
        public static DataGridView open(DataGridView dgv1, string defaultAlphabet)
        {
            //Файловый диалог
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "Algorithm of Turing machines|*.tma";
            ofd.Title  = "Открыть алгоритм";

            //Открываем и ждём нажатия кнопки
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                //Открываем поток с нашим файлом
                StreamReader sr = new StreamReader(ofd.FileName);
                //ошибка считывания либо синтаксиса
                bool ex = false;
                //длина и ширина
                int a = 0;
                int b = 0;
                try
                {
                    //Считываем длину и ширину(пытаемся)
                    a = Convert.ToInt32(sr.ReadLine());
                    b = Convert.ToInt32(sr.ReadLine());
                    //Создаём новые размеры
                    dgv1.Rows.Clear();
                    dgv1.Rows.Add(a);
                    dgv1.ColumnCount = b;
                    //заводим переменную для нового алфавита, который будет считан
                    string newAlphabet = "";

                    for (int i = 0; i < a; i++)
                    {
                        //Считываем в массив строк
                        string[] mas = sr.ReadLine().Split(';');
                        //Если количество ; и столбцов не совпало хотя бы раз, то ex и уходим
                        if (mas.Length != b + 1)
                        {
                            ex = true;
                            MessageBox.Show("Неверный формат файла");
                            break;
                        }

                        for (int j = 0; j < b; j++)
                        {
                            //переписываем в dgv
                            dgv1.Rows[i].Cells[j].Value = mas[j];
                            //Если не нулевая ячейка, то считываем алфавит
                            if (j == 0 && i != 0)
                            {
                                newAlphabet += mas[j];
                            }

                            if (ex)
                            {
                                break;
                            }
                        }
                        if (ex)
                        {
                            break;
                        }
                    }

                    if (ex)
                    {
                        dgv1 = DGV.StatesStart(dgv1, defaultAlphabet, 4);
                        dgv1 = DGV.StatesFormat(dgv1);
                    }
                    else
                    {
                        dgv1 = DGV.StatesFormat(dgv1);
                        return(dgv1);
                    }
                }
                //Если вылетели по ошибке, то загружаем новый алгоритм
                catch
                {
                    MessageBox.Show("Неверный формат файла");
                    ex   = true;
                    dgv1 = DGV.StatesStart(dgv1, defaultAlphabet, 4);
                    dgv1 = DGV.StatesFormat(dgv1);
                    return(dgv1);
                }
                //В любом случае нужно закрыть поток
                finally
                { sr.Close(); }
            }
            return(dgv1);
        }