Строки верхней половины матрицы поменять местами со строками нижней половины - 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;
}

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

  1. Программа считывает из стандартного ввода два целых числа n и m, которые представляют собой размеры матрицы.
  2. Программа считывает значения матрицы, используя два вложенных цикла.
  3. Программа выполняет операции обмена местами между строками верхней и нижней половины матрицы, используя функцию memcpy.
  4. Программа выводит значения матрицы на стандартный вывод, используя два вложенных цикла.
  5. Программа завершает свое выполнение и возвращает 0.

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


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

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

14   голосов , оценка 4 из 5
Похожие ответы