Переделать код для сортировки массива на код для сортировки двумерной матрицы - 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;
}
//---------------------------------------------------------------------------

Объяснение кода листинга программы

Данный код реализует алгоритм сортировки пузырьком для двумерной матрицы. Список действий:

  1. Ввод матрицы: с помощью двух вложенных циклов заполняем матрицу случайными значениями от 0 до 8.
  2. Вызов функции сортировки: вызываем функцию sort(), передавая в нее матрицу.
  3. Сортировка матрицы: внутри функции sort() используется два вложенных цикла. Первый цикл перебирает строки матрицы, а второй - столбцы. Внутри второго цикла проверяется условие: если текущий элемент больше следующего, то меняем их местами и устанавливаем флаг chk в true.
  4. Вывод отсортированной матрицы: после сортировки выводим значения матрицы на экран.
  5. Ввод: программа ожидает нажатия клавиши для завершения работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы