Отсортировать столбцы матрицы по убыванию элементов побочной диагонали - C (СИ)
Формулировка задачи:
Условие-- Сортировать колонки массива по убыванию элементов побочной диагонали.
Выдает вот такой результат
#include <stdio.h> #include <conio.h> #include <time.h> #include <stdlib.h> #include <vcl.h> void main() { const N0=100; int A[N0][N0]; int M; unsigned int i, j, k, N; do { clrscr(); printf(" N = "); scanf("%d",&N); }while (N>N0||N<1); Randomize(); for(i=0;i<N;i++) { for(j=0;j<N;j++) { A[i][j]=random(N0); printf("%d",A[i][j]); } printf("\n"); } printf("\n"); for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) if (A[i][N-i+1]<A[j][N-j+1]) { M=A[i][N-i+1]; A[i][N-i+1]=A[j][N-j+1]; A[j][N-j+1]=M; } for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%d",A[i][j]); printf("\n"); } return; }
Решение задачи: «Отсортировать столбцы матрицы по убыванию элементов побочной диагонали»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <time.h> #include <stdlib.h> int main(void) { const int N = 4; int a, f[N][N], i, j, baf, h, f1[N][N], min[4]; const int k[N][N] = { { 6, 1, 2, 6 }, { -2, -1, 4, 6 }, { 3, -11, 90, 8 }, { 5, 12, -15, 1 } }; system("cls"); printf("1. Zapovniti yak konstantu"); printf("\n2. Zapovniti vipadkovimy chislami"); printf("\n3. Zapovniti vrychnu"); printf("\nZrobit vubir:"); scanf("%i", &a); switch (a) { case 1: for (i = 0; i < N; i++) for (j = 0; j < N; j++) f[i][j] = k[i][j]; break; case 2: srand(time(NULL)); for (i = 0; i < N; i++) for (j = 0; j < N; j++) f[i][j] = rand() % 100 - 50; break; case 3: for (i = 0; i < N; i++) for (j = 0; j < N; j++) { printf("f[%i][%i]:", i, j); scanf("%i", &f[i][j]); } break; default: printf("\nNevirniy vubir"); getch(); return 1; break; } printf("Zadana matrica\n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf(" %4i", f[i][j]); } printf("\n\n"); } printf("\n"); for (i = 0; i < N; i++) /*Присвоюємо в одновимірний масив наші числа побічної діагоналі по порядку*/ { min[i] = f[i][N - i - 1]; } for (i = 0; i < N - 1; i++) /*Сортировка нового масиву із елементами в середені оголошення змінної min_e, можно винести в початок, але портірбно щоб їх значення присвоювалось циклі [i] (МЕТОД ВИБІРКОВОГО СОРТУВАННЯ)*/ { int min_e = i; for (j = i + 1; j < N; j++) if (min[j] > min[min_e]) min_e = j; baf = min[i]; min[i] = min[min_e]; min[min_e] = baf; } for (i = 0; i < N; i++) /*Порівняння побічної діагоналі масиву f із нашим відсортованим одновимірним масивом, якщо елементи співпадають присвоюємо відповідний рядок масиву f рядку масиву f1 по порядку, після всіх дій отримуємо правильний масив, відсортований по елементам побічної діагоналі, відповідними їм колонками*/ { for (h = 0; h < N; h++) if (min[i] == f[h][N - h - 1]) for (j = 0; j < N; j++) { f1[j][i] = f[j][N - h - 1]; } } printf("Sortyrovka kolonok za zmenshenyam pobichnoi diagonali\n"); printf("Matrica pislya sortirovku\n\n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf(" %4i", f1[i][j]); } printf("\n\n"); } getch(); getch(); return 0; }
Объяснение кода листинга программы
- В первой части кода определен размер матрицы N = 4 и инициализированы переменные a, f[N][N], i, j, baf, h, f1[N][N], min[4]. Также в этой части кода определена матрица k[N][N] размером 4x4, которую в дальнейшем будут использовать для различных операций.
- Во второй части кода происходит взаимодействие с пользователем. Сначала с помощью функции printf выводятся варианты выбора, а затем с помощью функции scanf считывается выбор пользователя и сохраняется в переменной a.
- В третьей части кода происходит сортировка матрицы f по убыванию элементов побочной диагонали. Сначала элементы побочной диагонали сохраняются в массиве min, затем происходит сортировка этого массива методом выборочного сортирования.
- В четвертой части кода происходит сравнение и перенос элементов из матрицы f в матрицу f1. Сначала происходит сравнение элементов побочной диагонали матрицы f и массива min, а затем при совпадении элементов происходит перенос соответствующих строк из матрицы f в матрицу f1.
- В пятой части кода выводится отсортированная матрица f1 с помощью функции printf, а затем с помощью функции getch происходит проверка на нажатие клавиши и завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д