Строки верхней половины матрицы поменять местами со строками нижней половины - C (СИ)
Формулировка задачи:
Дан двумерный массив из четного числа строк. Строки верхней половины массива поменять местами со строками нижней половины
чет тип этого
#include <iostream> #include <iomanip> using namespace std; const int str = 5; const int stl = 6; int arr[str][stl]; int main (){ cout<<"Исходный массив :\n\n"; for (int i=0;i<str;i++) { for (int j=0;j<stl;j++) { arr[i][j] = rand() % 99 + 1; cout << setw(3) << arr[i][j]; } cout << "\n\n"; } cout << "Полученный массив:\n\n"; for (int i = 0; i < str; i++) { for (int j = 0; j < stl; j++) { if (j < stl / 2) { swap (arr[i][j], arr[i][stl - 1 - j]); } cout << setw(3) << arr[i][j]; } cout << "\n\n"; } cin.get(); }
Решение задачи: «Строки верхней половины матрицы поменять местами со строками нижней половины»
textual
Листинг программы
#include <stdio.h> #include <string.h> int main() { int n, m; scanf("%d%d", &n, &m); static int arr[128][128]; int y, x; for (y = 0; y < n; y++) for (x = 0; x < m; x++) scanf("%d", &arr[y][x]); void *arr_p = arr; int arr_size = n * 128 * sizeof (int); memcpy(arr_p + arr_size, arr_p, arr_size / 2); // 1 -> 3 memcpy(arr_p, arr_p + arr_size / 2, arr_size / 2); // 2 -> 1 memcpy(arr_p + arr_size / 2, arr_p + arr_size, arr_size / 2); // 3 -> 2 for (y = 0; y < n; y++) { for (x = 0; x < m; x++) printf("%d ", arr[y][x]); printf("\n"); } return 0; }
Объяснение кода листинга программы
- Программа считывает из стандартного ввода два целых числа n и m, которые представляют собой размеры матрицы.
- Программа считывает значения матрицы, используя два вложенных цикла.
- Программа выполняет операции обмена местами между строками верхней и нижней половины матрицы, используя функцию memcpy.
- Программа выводит значения матрицы на стандартный вывод, используя два вложенных цикла.
- Программа завершает свое выполнение и возвращает 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д