Задать вопрос
@JunikZoo

Зачем условие «if (j == TB_1.ColumnCount-k-1)» Проверять для каждого «j»?

Выполнил задание "Преобразовать матрицу, заменив aij элемент на среднее арифметическое среди элементов, расположенных в i-ой строке и имеющих номер столбца >= j". Вот как выполнил:
int[,] m = new int[TB_3.RowCount,TB_3.ColumnCount];
            for (int i = 0; i < TB_3.RowCount; i++)
            {
                for (int j = 0; j < TB_3.ColumnCount; j++)
                {
                    m[i, j] = Convert.ToInt32(TB_3[j, i].Value);
                    
                }
            }
            for (int i = 0; i < TB_3.RowCount; i++)
            {
                for (int k = 0; k < TB_3.ColumnCount; k++)
                {
                    double s = 0;
                    for (int j = 0; j < TB_3.ColumnCount-k; j++)
                    {
                        s += m[i, k + j];
                        if (j == TB_3.ColumnCount-k-1)
                        {
                            double sum = s / (j + 1);
                            TB_2[k, i].Value = sum;
}

TB_3-исходная матрица, TB_2-преобразованная.
Преподаватель сказал :"расчет нового значения элемента выполнен неправильно (имеется 2 ошибки)
- кроме того, зачем условие "if (j == TB_1.ColumnCount-k-1)" Проверять для каждого "j". Ведь известно, что оно выполнится только один раз. Подумайте, как совсем от него избавиться."
Помогите пожалуйста.
  • Вопрос задан
  • 63 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
@JunikZoo Автор вопроса
int[,] m = new int[TB_3.RowCount,TB_3.ColumnCount];
            for (int i = 0; i < TB_3.RowCount; i++)
            {
                for (int j = 0; j < TB_3.ColumnCount; j++)
                {
                    m[i, j] = Convert.ToInt32(TB_3[j, i].Value);
                    
                }
            } 
            for (int i = 0; i < TB_3.RowCount; i++)
            {
                for (int k = 0; k < TB_3.ColumnCount; k++)
                {

                    double s = 0;
                    
                    for (int j = 0; j < TB_3.ColumnCount-k; j++)
                    {
                        
                        s += m[i, k + j];
                       }
                        
                            double sum = s / (j + 1);
                            TB_2[k, i].Value = sum;
                        
                    }
                }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы