В целочисленном двумерном массиве нужно поменять первую и последнюю строку
Код:
int main() {
setlocale(LC_ALL, "Russian");
int arr[4][3];
int temp1[4];
int temp2[4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
std::cin >> arr[i][j];
}
}
for (int i = 0; i < 4; i++) {
temp1[i] = arr[0][i];
temp2[i] = arr[3][i];
arr[0][i] = temp2[i];
arr[3][i] = temp1[i];
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
if (j == 2) {
std::cout << arr[i][j];
}
else {
std::cout << arr[i][j] << ' ';
}
}
std::cout << std::endl;
}
return 0;
}
Почему не выводится один элемент массива?
Ввод:
1 2 3
4 5 6
7 8 9
10 11 12
Вывод:
10 11 12
6422280 5 6
7 8 9
1 2 3
Почему вместо '4' выводится '6422280'
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Все просто. У вас сколько столбцов? Три. А сколько вы пытаетесь обменивать?
for (int i = 0; i < 4; i++) {
Четыре. Вот и делаете ерунду - меняете ячейку из второй строки с ячейкой за пределами массива...
Но зачем вы вообще через какие-то массивы это делаете? Вот так гораздо проще:
for (int i = 0; i < 3; i++)
{
int t = arr[0][i];
arr[0][i] = arr[3][i];
arr[3][i] = t;
}
Можно и еще проще, раз у вас С++:
for (int i = 0; i < 3; i++)
swap(arr[0][i],arr[3][i]);