Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- #include <stdlib.h>
- void inputMatrix(int** matrix, unsigned int x, unsigned int y) {
- for (int i = 0; x > i; i++) { // строки
- for (int j = 0; y > j; j++) { // столбцы
- printf("Введите matrix[%d][%d]: ", i, j);
- scanf("%d", &matrix[i][j]);
- }
- }
- }
- void printMatrix(int** matrix, unsigned int x, unsigned int y) {
- for (int i = 0; x > i; i++) {
- for (int j = 0; y > j; j++) {
- printf("%d ", matrix[i][j]);
- }
- printf("\n");
- }
- }
- void checkMatrix(int** matrix, unsigned int x, unsigned int y) {
- for (int i = 0; x > i; i++) {
- // Если числа в столбце отличаются - переменная flag останется 0
- // иначе, будет равна 1
- int flag = 0;
- for (int j = 0; y - 1 > j; j++) {
- for (int k = j + 1; y > k; k++) {
- if (matrix[i][j] == matrix[i][k]) {
- flag = 1;
- break;
- }
- }
- // Выходим из цикла по горизонтали
- if (flag == 1) {
- break;
- }
- }
- // Если не все числа отличаются,
- // значит мы должны найти наименьший и наибольший
- // и поменять их значения
- if (flag == 1) {
- unsigned int indexMin = 0;
- unsigned int indexMax = 0;
- for (int j = 1; y > j; j++) {
- // Если число больше предыдущего наибольшего
- // то мы запоминаем индекс этого числа
- if (matrix[i][j] > matrix[i][indexMax]) {
- indexMax = j;
- }
- // тоже самое, но с наименьшим
- if (matrix[i][indexMin] > matrix[i][j]) {
- indexMin = j;
- }
- }
- // Меняем местами
- int tempInt = matrix[i][indexMin];
- matrix[i][indexMin] = matrix[i][indexMax];
- matrix[i][indexMax] = tempInt;
- }
- }
- }
- int main() {
- unsigned int N, M;
- printf("Введите M (x): ");
- scanf("%d", &M);
- printf("Введите N (y): ");
- scanf("%d", &N);
- int** matrix = (int **)malloc(N *sizeof(int *));
- for(int i = 0; i < N; i++) {
- matrix[i] = (int *)malloc(M*sizeof(int));
- }
- // Ввод значений
- inputMatrix(matrix, N, M);
- // Вывод текущий матрицы
- printf("Текущая матрица:\n");
- printMatrix(matrix, N, M);
- // Проверка матрицы
- checkMatrix(matrix, N, M);
- // Вывод новой матрицы
- printf("Получилась матрица:\n");
- printMatrix(matrix, N, M);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement