C/C++

C++Дана целочисленная матрица размера mn. Найти матрицу, получающуюся перестановкой столбцов

Дана целочисленная матрица размера mn. Найти матрицу, получающуюся перестановкой столбцов (первого с последним, второго с предпоследним и т.д.).
как организовать? вектор vector int или динамика new?
Mahirz
Mahirz
21 700
Лучший ответ
#include <iostream>
using namespace std;
int main() {
int matrix[3][5] = {
{12,47,15,63,98},
{25,74,10,85,37},
{55,60,27,19,43}
};
for (auto& row : matrix) {
for (auto x : row) cout << x << ' ';
puts("");
}
puts("");
for (auto i = 0U; i < size(matrix); ++i) {
for (auto j = 0U, k = size(matrix[0]) - 1; j < k; ++j, --k) {
swap(matrix[i][j], matrix[i][k]);
}
}
for (auto& row : matrix) {
for (auto x : row) cout << x << ' ';
puts("");
}
system("pause > nul");
}
Влад Аксёнов
Влад Аксёнов
74 513
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<unistd.h>
#define m 3
#define n 4
#define N 10
int main()
{
int **arr;//указатель на двумерный массив
//создаём динамически место для
//строк массива в ОЗУ (в куче):
arr=(int**)malloc(m*sizeof(int*));
if(!arr) exit(1);//если не ошибка, то выход

//создаём динамически место для
//столбцов массива в ОЗУ (в куче):
for(int i = 0; i < m; i++)
{
arr[i]=(int*)malloc(n*sizeof(int));
if(!arr[i]) exit(1);//если ошибка, то выход
}
srand(time(NULL));//задать генератор
printf("Start array:\n");
//генерация значений
//элементов массива:
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
arr[i][j]=rand()%(N+1);
printf(" [%d][%d]=%d",i,j,arr[i][j]);
}
printf("\n");
}

//перестановка столбцов массива:
for(int i = 0; i < m; i++)
for(int j = 0; j < n/2; j++)
{
int temp=arr[i][j];
arr[i][j]=arr[i][n-j-1];
arr[i][n-j-1]=temp;
}
//вывод результатов перестановки:
printf("\nResult array:\n");
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
printf(" [%d][%d]=%d",i,j,arr[i][j]);
}
printf("\n");
}

//освобождаем ОЗУ от строк массива:
for(int i = 0; i < m; i++)
free(arr[i]);

//освобождаем ОЗУ от столбцов массива:
free(arr);

//сброс буфера вывода для паузы:
fflush(stdout);

//пауза:
sleep(5);
return 0;
}
Игорь Бугвин
Игорь Бугвин
37 945
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE/2;j++)
{
temp = arr[i][j];
arr[i][j]= arr[i][SIZE-j-1];
arr[i][SIZE-j-1]=temp;

}

}
Кирилл Иванов
Кирилл Иванов
1 900