Задача: В массиве С(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++){
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники