Написать функцию для обмена строк двумерного массива и с ее помощью отсортировать массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

нужно написать функцию для обмена строк двумерного массива и с ее помощью отсортировать массив по элементам третьего столбца. я написала программу без функций....что-то не получается пока с ними работать((
#include <stdio.h>
#include <stdlib.h>
void main()
{
    int mas[25][25], i, j, k, l, n, m;
    printf ("\nvvedite kolichestvo strok\n");
    scanf ("%d", &n);
    printf ("vvedite kolichestvo stolbcov\n");
    scanf ("%d", &m);
    for (i=0; i<n; i++)
    {
        printf ("\n");
        for (j=0; j<m; j++)
        {
            mas[i][j]=0+rand()%50;
            printf ("%2d ", mas[i][j]);
        }
    }
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
            if (mas[i][2]>mas[j][2])
            {
                for (k=0; k<m; k++)
                {
                    l=mas[i][k];
                    mas[i][k]=mas[j][k];
                    mas[j][k]=l;
                }
            }
        }
    }
    printf ("\n\nrezul'tat:\n");
    for (i=0; i<n; i++)
    {
        printf ("\n");
        for (j=0; j<m; j++) printf ("%2d ", mas[i][j]);
    }
    getch();
}
помогите кто-нибудь разобраться)))

Решение задачи: «Написать функцию для обмена строк двумерного массива и с ее помощью отсортировать массив»

textual
Листинг программы
//Функция обмена строк
void swap_rows(int **arr, int row_size, int f, int s) { // f и s - номера строк которые меняем. row_size - кол-во столбцов
    int tmp;
    for(int i=0; i<row_size; i++) {
        tmp = arr[f][i];
        arr[f][i] = arr[s][i];
        arr[s][i] = tmp;
    }
}
 
int main() {
    int **mas, n, m;
    
    printf ("\nvvedite kolichestvo strok\n");
    scanf ("%d", &n);
    printf ("vvedite kolichestvo stolbcov\n");
    scanf ("%d", &m);
    if(n < 1) n = 1;
    if(m < 3) m = 3;
 
    //Выделяем память под массив
    mas = new int*[n];
    for(int i=0; i<n; i++) mas[i] = new int[m];
    
    for (int i=0; i<n; i++) {
        printf ("\n");
        for (int j=0; j<m; j++) {
            mas[i][j]=0+rand()%50;
            printf ("%2d ", mas[i][j]);
        }
    }
    
    //сортируем массив при помощи функции обмена строк swap_rows
    for (int i=1; i<n; i++) {
        if(mas[i][2] < mas[i-1][2]) {
            swap_rows(mas,m,i,i-1);
            i = 0;
        }
    }
 
    printf("\n");
    
    //выводим результат
    for (int i=0; i<n; i++) {
        printf ("\n");
        for (int j=0; j<m; j++) {
            printf ("%2d ", mas[i][j]);
        }
    }
    getch();
    return 0;
}

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

  1. Объявляется функция swap_rows, которая меняет строки двумерного массива.
  2. В функции main считывается количество строк и столбцов массива.
  3. Выделяется память под массив с помощью оператора new.
  4. С помощью цикла заполняется массив случайными значениями от 0 до 49.
  5. С помощью цикла массив сортируется методом пузырька, используя функцию swap_rows.
  6. Выводится отсортированный массив.

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


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

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

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