Условие задачи
Написать функцию, меняющую местами максимальный и минимальный элементы массива A[m][n]. Использовать функцию для матрицы B[4][5], задаваемую с клавиатуры. Распечатать исходную матрицу, а слева — преобразованную.
Решение задачи на языке Си
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91  | 
						#include <stdio.h> #include <stdlib.h> #include <conio.h> // функция, которая меняет местами максимальный и минимальный элементы в массиве void swapMaxMin(int** A, int m, int n) {     // в начале примем, что max и min элемент - это A[0][0]     int maxI = 0, maxJ = 0, minI = 0, minJ = 0;     // перебираем все элементы цикла и ищем максимальный и минимальный элементы     for (int i = 0; i < m; i++)         for (int j = 0; j < n; j++)         {             if (A[maxI][maxJ] < A[i][j])             {                 maxI = i;                 maxJ = j;             }             if (A[minI][minJ] > A[i][j])             {                 minI = i;                 minJ = j;             }         }     // меняем их местами     int tmp = A[maxI][maxJ];     A[maxI][maxJ] = A[minI][minJ];     A[minI][minJ] = tmp; } int main() {     // тут будут размеры матрицы     int m, n;     // читаем m     printf("m = ");     scanf_s("%d", &m);     // читаем n     printf("n = ");     scanf_s("%d", &n);     // указатели на два массива. originalB - исходный массив, swappedB - массив с переставленными max и min элементами     int** originalB;     int** swappedB;     // выделяем память под массивы     originalB = (int**)malloc(m*sizeof(int*));     swappedB = (int**)malloc(m*sizeof(int*));     for (int i = 0; i < m; i++)     {         originalB[i] = (int*)malloc(n*sizeof(int));         swappedB[i] = (int*)malloc(n*sizeof(int));     }     // читаем массив из консоли     for (int i = 0; i < m; i++)         for (int j = 0; j < n; j++)         {             printf("B[%d][%d] = ", i, j);             scanf_s("%d", &originalB[i][j]); // читаем в originalB             swappedB[i][j] = originalB[i][j]; // и копируем это значение в swappedB         }     // меняем местами max и min в swappedB     swapMaxMin(swappedB, m, n);     // выводим оба массива на экран. новый - слева, исходный - справа     for (int i = 0; i < m; i++)     {         for (int j = 0; j < n; j++)             printf("%4d", swappedB[i][j]);         printf("           "); // интервал между двумя матрицами         for (int j = 0; j < n; j++)             printf("%4d", originalB[i][j]);         printf("\n");     }     // освобождаем память из под массивов     for (int i = 0; i < m; i++)     {         free(originalB[i]);         free(swappedB[i]);     }     free(originalB);     free(swappedB);     // читаем символ с консоли, чтобы она не закрылась сразу после выполнения программы     _getch();     return 0; }  | 
					
Демонстрация работы программы
Поделиться в соц. сетях:
