Дана матрица M*N переставить столбцы матрицы по неубыванию значений элементов наименьших столбцов матрицы. Алгоритм: //подключаем библиотеки #include <iostream.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #define M 5 //количество элементов в столбце #define N 5 //количество элементов в строке int a[M][N]; //главная матрица int b[N]; //массив для хранения наименьших чисел каждого столбца int i, j, k; //переменные для операторов циклов int tmp; //временная переменная для хранения элементов столбцов главной матрицы main() //главная функция { clrscr(); //очистка экрана randomize(); //функция генерации чисел //генерируем главную матрицу for(i = 0; i < M; i++) for(j = 0; j < N; j++) a[i][j] = random(10); //печатаем главную матрицу printf("\n\nOld Values: "); for(i = 0; i < M; i++) { printf("\n"); for(j = 0; j < N; j++) printf("%3d", a[i][j]); } /*присваем массиву b первые элементы каждого столбца чтобы потом выбрать меньший*/ for(i = 0; i < N; i++) b[i] = a[0][i]; //в массив b вносим наименьшие элементы каждого столбца for(j = 0; j < N; j++) { for(i = 0; i < M; i++) if(a[i][j] < b[j]) b[j] = a[i][j]; } for(i = 0; i < N - 1; i++) { for(j = i + 1; j < N; j++) { if(b[j] < b[i]) { //сортируем массив b по возрастанию int tmp = b[i]; b[i] = b[j]; b[j] = tmp; for(k = 0; k < M; k++) { //меняем местами столбцы матрицы tmp = a[k][j]; a[k][j] = a[k][i]; a[k][i] = tmp; }//for }//if }//for }//for /*печатаем главную матрицу со столбцами выставленными по возрастанию наименьших их элементов*/ printf("\n\nNew Values: "); for(i = 0; i < M; i++) { printf("\n"); for(j = 0; j < N; j++) printf("%3d", a[i][j]); } getch(); //ожидаем нажатия клавиши }
Ключевые слова:
матрицы, сортировка, столбцы, перестановка
|
|||||||