Переделать код для сортировки массива на код для сортировки двумерной матрицы - 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.
- Вывод отсортированной матрицы: после сортировки выводим значения матрицы на экран.
- Ввод: программа ожидает нажатия клавиши для завершения работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д