Программа на с++,меняющая строки матрицы местами
Хочу сделать программу,которая меняет строки местами(первую со второй,третью с четвертой и тд),если кол-во строк четно.Но у меня получается какая-то фигня и в ответе вместо второго числа 0 выводится
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "russian");
srand((time(0)));
int n;
int k;
cout << "введите размер массива: ";
cin >> n;
int** A = new int* [n];
for (int i = 0; i < n; i++)
{
A[i] = new int[n];
for (int j = 0; j < n; j++) {
A[i][j] = rand() % 100;
cout << A[i][j] << " ";
}
cout << endl;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
A[i] = new int[n];
if (n % 2 == 0)
k = A[i][j];
A[i][j] = A[i + 1][j];
A[i + 1][j] = k;
cout << A[i][j] << " ";
cout << A[i+1][j] << " ";
cout << endl;
}
cout << endl;
}
delete[] A;
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Раз уж такое везение, что именно строки - этого будет достаточно:
for (int i = 0; i < n-1; i+=2)
{
int * tmp = A[i];
A[i] = A[i+1];
A[i+1] = tmp;
}
Да, и вы не всю память освободили...
Вот тут - https://ideone.com/dMHZrC - полный код, посмотрите...