Сдвинуть строки циклическим сдвигом вправо так, чтобы на последнем месте был максимальный по модулю элемент - C (СИ)
Формулировка задачи:
в матрице сдвинуть строки циклическим сдвигом вправо так, что бы на последнем месте был максимальный по модулю элемент.
Решение задачи: «Сдвинуть строки циклическим сдвигом вправо так, чтобы на последнем месте был максимальный по модулю элемент»
textual
Листинг программы
#include <stdio.h> #include <locale.h> #include <stdlib.h> #include <math.h> void main(){ setlocale(LC_ALL,"rus"); int **array_a; int line, column; int i_max = 0, j_max = 0; int buf; printf("Введите размер матрицы: "); scanf("%d%d", &line, &column); array_a = (int**)malloc(sizeof(int)*line); for(int i = 0; i < line; i++) array_a[i] = (int*)malloc(sizeof(int)*column); printf("Заполните матрицу: \n"); for(int i = 0; i < line; i++){ for(int j = 0; j < column; j++){ scanf("%d", &array_a[i][j]); } } for(int i = 0; i < line; i++){ for(int j = 0; j < column; j++){ if(abs(array_a[i][j]) > abs(array_a[i_max][j_max])){ i_max = i; j_max = j; }else if(abs(array_a[i][j]) == abs(array_a[i_max][j_max]) && j > j_max){ i_max = i; j_max = j; } } } for(int k = 0; k < column - j_max - 1; k++){ for(int i = 0; i < line; i++){ buf = array_a[i][column-1]; for(int j = column - 1; j >= 0; j--){ array_a[i][j] = array_a[i][j-1]; } array_a[i][0] = buf; } } for(int i = 0; i < line; i++){ for(int j = 0; j < column; j++){ printf("%d ", array_a[i][j]); } printf("\n"); } }
Объяснение кода листинга программы
- Ввод размера матрицы;
- Выделение памяти под матрицу;
- Заполнение матрицы;
- Поиск максимального элемента по модулю;
- Сдвиг всех элементов вправо на одну позицию;
- Перемещение максимального элемента на последнее место;
- Вывод результата.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д