private void matrixLoopCalculation()
        {
            int start, end, step;
            start = Convert.ToInt16(GetStartPoint());
            end = Convert.ToInt16(GetEndPoint());
            step = Convert.ToInt16(GetStep());
            double partOfVolume = Convert.ToDouble(GetVolume());

            for (int i = start; i <= end; i = i + step)
            {
                cells = new NandMRectangleCells(FreeClass.body);
                cells.SetAccuracy(Convert.ToInt16(GetAccuracy()));
                cells.SetCellsV(FreeClass.body.GetV() * Convert.ToDouble(textBox3.Text.Replace('.', ',')) / 100);
                cells.SetColumnsNumber(i); cells.SetRowsNumber(i);
                cells.Calculation();
                //рисуем ячейки
                if (!cells.isAvailable())
                {
                    DialogResult dialogResult = MessageBox.Show("Не удалось решить структуру при определённых условиях." +
                        " запустить следующий набор данных?",
                     "Предупреждение", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes) { continue; }
                    else if (dialogResult == DialogResult.No) { return; }
                }

                textResultsCellsRectangelNaM(resultBox);
                resultBox.Text += Environment.NewLine;
            }
        }
        private void calculateButton_Click(object sender, EventArgs e)
        {
            if (FreeClass.body == null) {
                MessageBox.Show("Тело не было задано. Невозможно произвести вычисления");
                return;
            }

            if (singleBuildRadioButton.Checked)
            {
                cells = new NandMRectangleCells(FreeClass.body);
                cells.SetAccuracy(Convert.ToInt16(textBox4.Text));
                cells.SetCellsV(FreeClass.body.GetV() * Convert.ToDouble(textBox3.Text.Replace('.', ',')) / 100);
                if (TwoInNRadioButton.Checked)
                {
                    double buff = Convert.ToInt16(textBox1.Text);
                    if (buff % 2 == 0)
                    {
                        buff = Math.Sqrt(Math.Pow(2, buff));
                        cells.SetColumnsNumber(Convert.ToInt16(buff));
                        cells.SetRowsNumber(Convert.ToInt16(buff));
                    }
                    else
                    {
                        buff = Math.Sqrt(Math.Pow(2, buff - 1));
                        cells.SetColumnsNumber(Convert.ToInt16(buff) * 2);
                        cells.SetRowsNumber(Convert.ToInt16(buff));
                    }
                }
                else if (SquareMatrixRadioButton.Checked)
                {
                    cells.SetColumnsNumber(Convert.ToInt16(textBox1.Text));
                    cells.SetRowsNumber(Convert.ToInt16(textBox1.Text));
                }
                else
                {
                    cells.SetColumnsNumber(Convert.ToInt16(textBox1.Text));
                    cells.SetRowsNumber(Convert.ToInt16(textBox2.Text));
                }

                cells.Calculation();

                if (!cells.isAvailable()) { MessageBox.Show("Решение не было найдено"); return; }

                resultBox.Clear();
                resultBox.Text += "Обьём цельного тела" + FreeClass.body.GetV(); resultBox.Text += Environment.NewLine;
                textResultsCellsRectangelNaM(resultBox);

            }
            else if (loopBuildRadioButton.Checked)
            {
                resultBox.Clear();
                resultBox.Text += "Обьём цельного тела" + FreeClass.body.GetV(); resultBox.Text += Environment.NewLine;
                if (SquareMatrixRadioButton.Checked)
                {
                    matrixLoopCalculation();
                }
                else if (TwoInNRadioButton.Checked)
                {
                    int start, end, step;
                    start = Convert.ToInt16(GetStartPoint());
                    end = Convert.ToInt16(GetEndPoint());
                    step = Convert.ToInt16(GetStep());
                    double partOfVolume = Convert.ToDouble(GetVolume());

                    for (int i = start, j = 1; i <= end; i = i + step, j++)
                    {
                        cells = new NandMRectangleCells(FreeClass.body);
                        cells.SetAccuracy(Convert.ToInt16(GetAccuracy()));
                        cells.SetCellsV(FreeClass.body.GetV() * partOfVolume / 100);

                        if (i % 2 == 0)
                        {
                            double buff = Math.Sqrt(Math.Pow(2, i));
                            cells.SetColumnsNumber(Convert.ToInt16(buff));
                            cells.SetRowsNumber(Convert.ToInt16(buff));
                        }
                        else
                        {
                            double buff = Math.Sqrt(Math.Pow(2, i - 1));
                            cells.SetColumnsNumber(Convert.ToInt16(buff) * 2);
                            cells.SetRowsNumber(Convert.ToInt16(buff));
                        }

                        cells.Calculation();
                        if (!cells.isAvailable())
                        {
                            DialogResult dialogResult = MessageBox.Show("Не удалось решить структуру при определённых условиях." +
                                " запустить следующий набор данных?",
                             "Предупреждение", MessageBoxButtons.YesNo);
                            if (dialogResult == DialogResult.Yes) { continue; }
                            else if (dialogResult == DialogResult.No) { return; }
                        }

                        textResultsCellsRectangelNaM(resultBox);

                    }

                }
                else
                {
                    int start1, start2, end, step;
                    start1 = Convert.ToInt16(GetStartPoint());
                    start2 = Convert.ToInt16(GetEndPoint());
                    end = Convert.ToInt16(GetMiddlePoint());
                    step = Convert.ToInt16(GetStep());
                    double partOfVolume = Convert.ToDouble(GetVolume());

                    //withoutIterationResearch();

                    for (int i = start1, j = 1; i <= end; i = i + step, j++, start2 = start2 + step)
                    {
                        cells = new NandMRectangleCells(FreeClass.body);

                        cells.SetAccuracy(Convert.ToInt16(GetAccuracy()));
                        cells.SetCellsV(FreeClass.body.GetV() * partOfVolume / 100);

                        cells.SetColumnsNumber(i); cells.SetRowsNumber(start2);

                        cells.Calculation();
                        if (!cells.isAvailable())
                        {
                            DialogResult dialogResult = MessageBox.Show("Не удалось решить структуру при определённых условиях." +
                                " запустить следующий набор данных?",
                             "Предупреждение", MessageBoxButtons.YesNo);
                            if (dialogResult == DialogResult.Yes) { continue; }
                            else if (dialogResult == DialogResult.No) { return; }
                        }

                        textResultsCellsRectangelNaM(resultBox);
                    }

                }
            }
        }