Переделать код для сортировки массива на код для сортировки двумерной матрицы - C (СИ)
Формулировка задачи:
возникла проблема, не могу переделать код для сортировки массива на код для сортировки двумерной матрицы. вот исходный код
пыталась его переделать на
но безуспешно.
Помогите пожалуйста разобраться
void sort(int A[],int n) {int k,i,j; for (i=1;i<n;i++) {int v=A[i]; for(k=0;k<i && A[k]<v;k++); for(int j=i-1;j>=k;j--) A[j+1]=A[j]; A[k]=v;} } #include <stdio.h> #include <math.h> #include <conio.h> # define n 6 int main() { int a[n]; int q,min,nom,s,per,vtr,o; printf("Vvedite massiv iz 6 4isel"); for (q=0;q<n;q++) scanf("%d",&a[q]); int d=sizeof(a)/sizeof(int); sort(a,d); printf("\n Nash massiv"); for(q=0;q<n;q++) printf("%d",a[q]); getch(); }
void sort(int A[20][20],int n) {int k,i,j; for(i=0;i<n;i++) for (j=1;j<n;j++) {int v=A[i][j]; for(k=0;k<j && A[i][k]<v;k++); for(int q=j-1;j>=k;q--) A[i][q+1]=A[i][q]; A[i][k]=v;} } #include <stdio.h> #include <math.h> #include <conio.h> int main() { int a[20][20]; int i,j,n,o,str,w,; printf("Vvedite n"); scanf("%d",&n); printf("Vvedite matrix"); for (i=0;i<n;i++)//q for(j=0;j<n;j++)//s {scanf("%d",&a[i][j]);} int d=sizeof(a)/sizeof(int); sort(a,d); printf(" \n matriza \n"); for (i=0;i<n;i++) {for(j=0;j<n;j++) printf("%d \t",a[i][j]); printf("\n");} getch(); }
Решение задачи: «Переделать код для сортировки массива на код для сортировки двумерной матрицы»
textual
Листинг программы
//--------------------------------------------------------------------------- #include <vcl.h> #include <iostream.h> #include <conio.h> #include <stdlib.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused void sort ( int ); void sort ( int mas [20][20] ) { int i,j, tmp; bool chk = true; while ( chk ) { chk = false; for ( i = 0; i < 20; i++ ) { for ( j = 0; j < 20; j ++) { if ( j == 20-1 && i == 20-1 ) break; if ( i != 20-1 ) { if ( mas [i][j] < mas [i+1][j] ) { tmp = mas [i][j]; mas [i][j] = mas [i+1][j]; mas [i+1][j] = tmp; chk = true; } } } } } } int main(int argc, char* argv[]) { int i,j, mas [20][20]; for ( i = 0; i < 20; i++ ) { for ( j = 0; j < 20; j++ ) { mas [i][j] = rand () % 9; } } sort ( mas ); for ( i = 0; i < 20; i++ ) { for ( j = 0; j< 20; j ++ ) { cout << mas [i][j] << " "; } cout << endl; } getch (); return 0; } //---------------------------------------------------------------------------
Объяснение кода листинга программы
Данный код реализует алгоритм сортировки пузырьком для двумерной матрицы. Список действий:
- Ввод матрицы: с помощью двух вложенных циклов заполняем матрицу случайными значениями от 0 до 8.
- Вызов функции сортировки: вызываем функцию sort(), передавая в нее матрицу.
- Сортировка матрицы: внутри функции sort() используется два вложенных цикла. Первый цикл перебирает строки матрицы, а второй - столбцы. Внутри второго цикла проверяется условие: если текущий элемент больше следующего, то меняем их местами и устанавливаем флаг chk в true.
- Вывод отсортированной матрицы: после сортировки выводим значения матрицы на экран.
- Ввод: программа ожидает нажатия клавиши для завершения работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д