В матрице А размера m*n сдвинуть строки вверх на одну и поставить первую строку на место последней - C (СИ)
Формулировка задачи:
Написать и протестировать функцию для решения следующей задачи.
В матрице А размера m*n сдвинуть строки вверх на одну и поставить первую строку на место последней.
Решение задачи: «В матрице А размера m*n сдвинуть строки вверх на одну и поставить первую строку на место последней»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define ROWS 5 #define COLUMNS 4 int main(void) { int matr[ROWS][COLUMNS] = { { 1, 1, 1, 1 }, { 2, 2, 2, 2 }, { 3, 3, 3, 3 }, { 4, 4, 4, 4 }, { 5, 5, 5, 5 } }, tmp[COLUMNS], i, j; printf("Before:\n"); for ( i = 0; i < ROWS; ++i ) { for ( j = 0; j < COLUMNS; ++j ) printf("%d ", matr[i][j]); printf("\n"); } memcpy(tmp, matr[0], COLUMNS * sizeof(int)); for ( i = 1; i < ROWS; ++i ) memcpy(matr[i-1], matr[i], COLUMNS * sizeof(int)); memcpy(matr[ROWS-1], tmp, COLUMNS * sizeof(int)); printf("After:\n"); for ( i = 0; i < ROWS; ++i ) { for ( j = 0; j < COLUMNS; ++j ) printf("%d ", matr[i][j]); printf("\n"); } return 0; }
Объяснение кода листинга программы
- Подключаются необходимые библиотеки для работы с файлами и строками
- Определяются размеры матрицы (количество строк и столбцов)
- Создается матрица типа int с размерами ROWS на COLUMNS и заполняется тестовыми значениями от 1 до 5
- Выводится исходная матрица на экран
- Создается временный массив tmp размером COLUMNS, в который копируются значения из первой строки матрицы
- С помощью цикла и функции memcpy из библиотеки C, значения каждой строки матрицы, начиная со второй, заменяются значениями следующей строки
- В последнюю строку матрицы копируются значения из временного массива tmp
- Выводится измененная матрица на экран
- Программа возвращает 0, заканчивая свое выполнение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д