Написать функцию для обмена строк двумерного массива и с ее помощью отсортировать массив - 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; }
Объяснение кода листинга программы
- Объявляется функция
swap_rows
, которая меняет строки двумерного массива. - В функции
main
считывается количество строк и столбцов массива. - Выделяется память под массив с помощью оператора
new
. - С помощью цикла заполняется массив случайными значениями от 0 до 49.
- С помощью цикла массив сортируется методом пузырька, используя функцию
swap_rows
. - Выводится отсортированный массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д