Перестановка элементов квадратной вещественной матрицы - 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();
}
Объяснение кода листинга программы
Вот что делает этот код:
- Объявляет квадратную вещественную матрицу arr размером 3x3 и инициализирует ее значениями.
- Находит максимальное значение в матрице, сохраняя его в переменной max.
- Заменяет это максимальное значение на своё исходное положение в матрице.
- Выводит матрицу на экран. Вот список номеров и названий переменных, используемых в коде:
- arr - матрица
- n - размер матрицы
- max - массив для хранения максимальных значений
- i, j, k - индексы для обхода матрицы
- tmp - временная переменная
- getchar() - функция для приостановки выполнения программы до нажатия клавиши Обратите внимание, что в этом коде не используются стандартные функции для работы с матрицами, такие как bubble sort или swap. Вместо этого используются три вложенных цикла для поиска максимального значения и его замены.