Сортировать строки матрицы по возрастанию их минимумов - C (СИ)
Формулировка задачи:
Написать программу, которая позволяет в каждой строке квадратной матрицы искать минимум и сортировать эти строки по возрастанию этих характеристик.
Решение задачи: «Сортировать строки матрицы по возрастанию их минимумов»
textual
Листинг программы
#include <stdio.h> int main(void) { const x=5; // Количество столбцов const y=10; // Количество строк long arrM1[100][100]; long arrM2[100][100]; long arrExtr[100], arrOrder[100], arrInUse[100], lngLastExtr; int i, j; // Инициализация матрицы for(j = 0; j <= x - 1; j++) { arrExtr[j] = 2147483647; for(i = 0; i <= y - 1; i++) { arrM1[i][j] = (int)random()/1000000; if (j == 3) arrM1[i][j] = arrM1[i][0]; //printf("arrM1[%d][%d]%d\n", i, j, arrM1[i][j]); } } // Поиск минимумов for(j = 0; j <= x - 1; j++) { for(i = 0; i <= y - 1; i++) { if(arrExtr[j] > arrM1[i][j]) arrExtr[j] = arrM1[i][j]; } //printf("!!!arrExtr[%d] = %d\n", j, arrExtr[j]); } // Определение порядка столбцов for(j = 0; j <= x - 1; j++) { lngLastExtr = 2147483647; for(i = 0; i <= x - 1; i++) { if(lngLastExtr > arrExtr[i] && arrInUse[i] != 1) { arrOrder[j] = i; lngLastExtr = arrExtr[arrOrder[j]]; } } arrInUse[arrOrder[j]] = 1; //printf("arrOrder[%d] = %d, arrInUse[%d] = %d\n", j, arrOrder[j], arrOrder[j], arrInUse[arrOrder[j]]); } // Сортировка столбцов for(j = 0; j <= x - 1; j++) { for(i = 0; i <= y - 1; i++) { arrM2[i][j] = arrM1[i][arrOrder[j]]; } } // Вывод результат printf("\nИСХОДНАЯ МАТРИЦА\n"); for(i = 0; i <= y - 1; i++) { for(j = 0; j <= x - 1; j++) { printf("%d ", arrM1[i][j]); } printf("\n"); } printf("\nПРЕОБРАЗОВАННАЯЯ МАТРИЦА\n"); for(i = 0; i <= y - 1; i++) { for(j = 0; j <= x - 1; j++) { printf("%d ", arrM2[i][j]); } printf("\n"); } return 0; }
Объяснение кода листинга программы
Код представлен на языке C и выполняет сортировку строк матрицы по возрастанию их минимумов. Вот список действий, которые выполняются в коде:
- Инициализация матрицы. Вектор arrExtr инициализируется значением 2147483647, которое больше любого возможного значения в матрице. Для каждого элемента матрицы arrM1 выбирается случайное значение от 0 до 1000000. Если выбранный элемент находится в третьем столбце, он заменяется на значение из первого столбца (arrM1[i][0]).
- Поиск минимумов. Для каждого столбца матрицы arrExtr ищется минимальное значение. Если текущее значение в столбце меньше значения в arrExtr, оно заменяет значение в arrExtr.
- Определение порядка столбцов. Для каждого столбца матрицы ищется последнее минимальное значение в столбце, и если оно меньше значения в arrExtr и arrInUse не равно 1, оно становится новым значением в arrOrder и arrInUse устанавливается в 1.
- Сортировка столбцов. Для каждого столбца матрицы arrM1 выбирается значение из соответствующего столбца arrOrder.
- Вывод результата. И исходная матрица arrM1, и преобразованная матрица arrM2 выводятся на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д