Оптимизировать код за счет сокращения количества условных операторов - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Прошу помощь в сокращение размера кода, если конечно это возможно. Z, R, Fi - берутся из листа Excel. R = 60, Z = 68, Fi = 36. В dataGridView1 так же загружены данные с листа Excel.
for (int ugol = 0; ugol < Fi; ugol++)
                {
                    if (ugol == 0)
                    {
                        // для угла Fi = 0
                        Double[,] angle0 = new double[Z, R * 2 + 1];
                        for (int i = 1; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle0[i - 1, j] = Convert.ToDouble(dataGridView1.Rows[i].Cells[j].Value.ToString());
                            }
                        }
                    }
                    else if (ugol == 1)
                    {
                        // для угла Fi = 10
                        Double[,] angle10 = new double[Z + 1, R * 2 + 1];
                        for (int i = 0; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle10[i, j] = Convert.ToDouble(dataGridView1.Rows[i + Z + 4].Cells[j].Value.ToString());
                            }
                        }
                    }
                    else if (ugol == 2)
                    {
                        // для угла Fi = 20
                        Double[,] angle20 = new double[Z + 1, R * 2 + 1];
                        for (int i = 0; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle20[i, j] = Convert.ToDouble(dataGridView1.Rows[i + ugol * (Z + 4) - (ugol - 1)].Cells[j].Value.ToString());
                            }
                        }
                    }
                    else if (ugol == 3)
                    {
                        // для угла Fi = 30
                        Double[,] angle30 = new double[Z + 1, R * 2 + 1];
                        for (int i = 0; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle30[i, j] = Convert.ToDouble(dataGridView1.Rows[i + ugol * (Z + 4) - (ugol - 1)].Cells[j].Value.ToString());
                            }
                        }
                    }
                    else if (ugol == 4)
                    {
                        // для угла Fi = 40
                        Double[,] angle40 = new double[Z + 1, R * 2 + 1];
                        for (int i = 0; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle40[i, j] = Convert.ToDouble(dataGridView1.Rows[i + ugol * (Z + 4) - (ugol - 1)].Cells[j].Value.ToString());
                            }
                        }
                    }
                    else if (ugol == 5)
                    {
                        // для угла Fi = 50
                        Double[,] angle50 = new double[Z + 1, R * 2 + 1];
                        for (int i = 0; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle50[i, j] = Convert.ToDouble(dataGridView1.Rows[i + ugol * (Z + 4) - (ugol - 1)].Cells[j].Value.ToString());
                            }
                        }
                    }
                    else if (ugol == 6)
                    {
                        // для угла Fi = 60
                        Double[,] angle60 = new double[Z + 1, R * 2 + 1];
                        for (int i = 0; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle60[i, j] = Convert.ToDouble(dataGridView1.Rows[i + ugol * (Z + 4) - (ugol - 1)].Cells[j].Value.ToString());
                            }
                        }
                    }
                    else if (ugol == 7)
                    {
                        // для угла Fi = 70
                        Double[,] angle70 = new double[Z + 1, R * 2 + 1];
                        for (int i = 0; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle70[i, j] = Convert.ToDouble(dataGridView1.Rows[i + ugol * (Z + 4) - (ugol - 1)].Cells[j].Value.ToString());
                            }
                        }
                    }
..... /* весь код не влез. весь код предоставлен в прикрепленном файле.*/
                   /* и так до */
                    else //if (ugol == 35)
                    {
                        // для угла Fi = 350
                        Double[,] angle350 = new double[Z + 1, R * 2 + 1];
                        for (int i = 0; i <= Z; i++)
                        {
                            for (int j = 0; j <= R * 2; j++)
                            {
                                angle350[i, j] = Convert.ToDouble(dataGridView1.Rows[i + ugol * (Z + 4) - (ugol - 1)].Cells[j].Value.ToString());
                            }
                        }
                    }
                }
                }

Решение задачи: «Оптимизировать код за счет сокращения количества условных операторов»

textual
Листинг программы
        private static void GetValues(int Fi, int Z, int R)
        {
            Dictionary<int, double[,]> angles = new Dictionary<int, double[,]>();
            for (int ugol = 0; ugol < Fi; ugol++)
            {
                var size = ugol == 0 ? Z : Z + 1;
                double[,] angle = new double[size, R * 2 + 1];
                for (int i = 1; i <= Z; i++)
                {
                    for (int j = 0; j <= R * 2; j++)
                    {
                        angle[i - 1, j] = Convert.ToDouble(dataGridView1.Rows[i].Cells[j].Value.ToString());
                    }
                }
                angles.Add(ugol * 10, angle);
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5