Циклический сдвиг элементов матрицы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Осуществить циклический сдвиг элементов столбцов матрицы на m элементов вправо. Подскажите как реализовать. Заранее спасибо

Решение задачи: «Циклический сдвиг элементов матрицы»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 7
  4. #define M 9
  5. int main()
  6. {
  7.     int A[N][M], i, j, q, m, temp = 1;
  8.     puts("Enter the number of shift:");
  9.     while(1 != scanf("%d", &m)){
  10.         getchar();
  11.         puts("Error!Try again.");
  12.     }
  13.     if(m >= M)
  14.         m -= M;
  15.     for(j = 0; j < M; j++)
  16.         for(i = 0; i < N; i++)
  17.             A[i][j] = temp++;
  18.     for(i = 0; i < N; i++, putchar('\n'))
  19.         for(j = 0; j < M; j++)
  20.             printf("%3d", A[i][j]);
  21.     for(i = 0; i < N; i++)
  22.         for(q = 0; q < m; q++){
  23.             temp = A[i][M - 1];
  24.             for(j = M - 1; j > 0; j--)
  25.                 A[i][j] = A[i][j - 1];
  26.             A[i][0] = temp;
  27.         }
  28.     putchar('\n');
  29.     for(i = 0; i < N; i++, putchar('\n'))
  30.         for(j = 0; j < M; j++)
  31.             printf("%3d", A[i][j]);
  32.     return 0;
  33. }

Объяснение кода листинга программы

  1. Объявление переменных:
    • A - двумерный массив размером N на M для хранения элементов;
    • i, j, q, m - индексы для обращения к элементам матрицы;
    • temp - временная переменная для хранения значений;
    • puts, scanf, getchar, printf - функции ввода/вывода для работы с пользователем и вывода результатов.
  2. Запрос у пользователя количества сдвига элементов матрицы.
  3. Проверка корректности введенного значения: пока не будет введено целое число, выводить сообщение об ошибке и просить ввести значение заново.
  4. Ограничение введенного значения: если количество сдвига больше, чем размер матрицы по второму измерению, уменьшить его до ближайшего меньшего значения.
  5. Инициализация всех элементов матрицы значением temp.
  6. Вывод значений всех элементов матрицы в формате 3d.
  7. Сдвиг элементов матрицы вправо на количество позиций, равное m.
  8. Вывод значений всех элементов матрицы в формате 3d.
  9. Возврат значения 0 для успешного завершения программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы