Циклический сдвиг элементов матрицы - C (СИ)
Формулировка задачи:
Осуществить циклический сдвиг элементов столбцов матрицы на m элементов вправо.
Подскажите как реализовать.
Заранее спасибо
Решение задачи: «Циклический сдвиг элементов матрицы»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #define N 7
- #define M 9
- int main()
- {
- int A[N][M], i, j, q, m, temp = 1;
- puts("Enter the number of shift:");
- while(1 != scanf("%d", &m)){
- getchar();
- puts("Error!Try again.");
- }
- if(m >= M)
- m -= M;
- for(j = 0; j < M; j++)
- for(i = 0; i < N; i++)
- A[i][j] = temp++;
- for(i = 0; i < N; i++, putchar('\n'))
- for(j = 0; j < M; j++)
- printf("%3d", A[i][j]);
- for(i = 0; i < N; i++)
- for(q = 0; q < m; q++){
- temp = A[i][M - 1];
- for(j = M - 1; j > 0; j--)
- A[i][j] = A[i][j - 1];
- A[i][0] = temp;
- }
- putchar('\n');
- for(i = 0; i < N; i++, putchar('\n'))
- for(j = 0; j < M; j++)
- printf("%3d", A[i][j]);
- return 0;
- }
Объяснение кода листинга программы
- Объявление переменных:
A
- двумерный массив размеромN
наM
для хранения элементов;i
,j
,q
,m
- индексы для обращения к элементам матрицы;temp
- временная переменная для хранения значений;puts
,scanf
,getchar
,printf
- функции ввода/вывода для работы с пользователем и вывода результатов.
- Запрос у пользователя количества сдвига элементов матрицы.
- Проверка корректности введенного значения: пока не будет введено целое число, выводить сообщение об ошибке и просить ввести значение заново.
- Ограничение введенного значения: если количество сдвига больше, чем размер матрицы по второму измерению, уменьшить его до ближайшего меньшего значения.
- Инициализация всех элементов матрицы значением
temp
. - Вывод значений всех элементов матрицы в формате
3d
. - Сдвиг элементов матрицы вправо на количество позиций, равное
m
. - Вывод значений всех элементов матрицы в формате
3d
. - Возврат значения
0
для успешного завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д