Задача: В массиве С(6,6) поменять местами элементы симметрично относительно главной диагонали. Почему у меня ничего не меняется местами?
#include <iostream>
int main()
{
using namespace std;
setlocale(0, "");
int const n = 6;
int i, k;
int C[n][n];
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++)
{
C[i][j] = { rand() % 10 };
}
}
cout << " Массив до изменений" << endl;
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
cout << C[i][j];
}
cout << endl;
}
for (int i = 0; i <n; i++){
for (int j = 0; j <n; j++){
int temp = C[i][j];
C[i][j] = C[j][i];
C[j][i] = temp;
}
}
cout << " Массив после изменений" << endl;
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
cout << C[i][j];
}
cout << endl;
}
system ("pause");
return 0;
}
Потому что элементы меняются местами дважды, и, таким образом, массив восстанавливает свое состояние
Чтобы избежать этого, нужно цикл обмена выполнять только для половины ячеек (и диагональ саму можно исключить)
for (int j = i + 1; j < n; j++){
Сборка персонального компьютера от Artline: умный выбор для современных пользователей