Перестановка элементов квадратной вещественной матрицы - C (СИ)

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

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

Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине — в позиции (2, 2), следующий по величине — в позиции (3, 3) и т.д., заполнив таким образом всю главную диагональ.

Решение задачи: «Перестановка элементов квадратной вещественной матрицы»

textual
Листинг программы
int main(int argc, char * argv[])
{
  float arr[3][3] = { 
                                                        {0.1, 1.1, 10.1},
                                                        {1.2, 2.2, 20.2},
                                                        {2.3, 3.3, 30.3}    
                                                    };
 
  int n = sizeof (arr) / sizeof (arr[0]);
    float max[n];
    
    int i = 0, j = 0, k = 0;
    float tmp = 0;
    
    //find max n elements
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < n; ++j)
        {
            for (k = 0; k < n; ++k)
            {
                if (arr[j][k] > max[i]) 
                {
                    if (i == 0) 
                    {
                      max[0] = arr[j][k];
                    }
                    else if (i > 0 && arr[j][k] < max[i - 1])
                    {
                        max[i] = arr[j][k];
                    }
                    else 
                    {
                        continue;
                    }
                }
            }
        }
    }
    
    //replace 
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < n; ++j)
        {
            for (k = 0; k < n; ++k)
            {
                if (arr[j][k] == max[i]) 
                {
                     arr[j][k] = arr[i][i];
                     arr[i][i] = max[i];
                }
            }
        }
    }
    
    for (i = 0; i < n; ++i)
    {
        printf("\n");
        for (j = 0; j < n; ++j)
        {
            printf("%.3f ", arr[i][j]);
        }
    }
  getchar();
}

Объяснение кода листинга программы

Вот что делает этот код:

  1. Объявляет квадратную вещественную матрицу arr размером 3x3 и инициализирует ее значениями.
  2. Находит максимальное значение в матрице, сохраняя его в переменной max.
  3. Заменяет это максимальное значение на своё исходное положение в матрице.
  4. Выводит матрицу на экран. Вот список номеров и названий переменных, используемых в коде:
  5. arr - матрица
  6. n - размер матрицы
  7. max - массив для хранения максимальных значений
  8. i, j, k - индексы для обхода матрицы
  9. tmp - временная переменная
  10. getchar() - функция для приостановки выполнения программы до нажатия клавиши Обратите внимание, что в этом коде не используются стандартные функции для работы с матрицами, такие как bubble sort или swap. Вместо этого используются три вложенных цикла для поиска максимального значения и его замены.

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы