Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- /*
- Поменять местами максимальный и минимальный элементы матрицы
- А (8х12). Если в массиве максимальное или минимальное значение встречается
- неоднократно, данный массив признается некорректным
- */
- int main(void)
- {
- int arrVer, arrHor;
- printf("arrVer> ");
- scanf("%d", &arrVer);
- printf("arrHor>");
- scanf("%d", &arrHor);
- int **arr = (int **)malloc(arrVer * sizeof(int *));
- for(int i = 0; i < arrVer; i++)
- arr[i] = (int *)malloc(arrHor * sizeof(int));
- for (int i = 0; i < arrVer; i++)
- for (int j = 0; j < arrHor; j++)
- {
- printf("arr[%d][%d] = ", i, j);
- scanf("%d", &arr[i][j]);
- }
- int *maxP = &arr[0][0], //Указатель на максимальный элемент массива
- *minP = &arr[0][0]; //Указатель на минимальный элемент массива
- int maxAmount = 0, //Количество максимальных элементов
- minAmount = 0; //Количество минимальных элементов
- for (int i = 0; i < arrVer; i++)
- for (int j = 0; j < arrHor; j++)
- {
- if (arr[i][j] < *minP)
- {
- minP = &arr[i][j];
- minAmount = 1;
- continue;
- }
- if (arr[i][j] > *maxP)
- {
- maxP = &arr[i][j];
- maxAmount = 1;
- continue;
- }
- if (arr[i][j] == *minP)
- minAmount++;
- if (arr[i][j] == *maxP)
- maxAmount++;
- }
- if (maxAmount > 1 || minAmount > 1)
- {
- printf("Array incorrect");
- return 0;
- }
- //Сишный костыль, меняем максимальный и минимальный элемент.
- //swap низя =(
- int buff;
- buff = *minP;
- *minP = *maxP;
- *maxP = buff;
- for (int i = 0; i < arrVer; i++)
- {
- for (int j = 0; j < arrHor; j++)
- printf("%3d ", arr[i][j]);
- printf("\n");
- }
- //Освобождаем память динамического массива
- for(int i = 0; i < arrVer; i++)
- free(arr[i]);
- free(arr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment