#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
const int n = 3;
int arr[n][n];
int i = 0;
while (i < n)
{
i++;
int j = 0;
while (j < n)
{
j++;
cout << "arr[" << i << "][" << j << "]=";
cin >> arr[i][j];
}
}
cout << "\nYour matrix:\n";
while (i < n)
{
i++;
int j = 0;
while (j < n)
{
j++;
cout << setw(3) << arr[i][j];
}
cout << endl;
}
cout << "\nNew matrix: \n";
while (i < n)
{
i++;
int j = 0;
while (j < n)
{
j++;
if (arr[i][j] < 0)
{
arr[i][j] = 0;
}
else
{
arr[i][j] = 1;
}
cout << setw(3) << arr[i][j];
}
cout << endl;
}
system("pause");
return 0;
}
Очевидная проблема - проверки на выход за пределы массивов происходит до инкремента индекса элемента массива, а не после:
constexpr ::std::size_t const rows_count{3};
constexpr ::std::size_t const cols_count{rows_count};
int arr[rows_count][cols_count]{};
for(::std::size_t row_index{}; row_index < rows_count; ++row_index)
{
for(::std::size_t col_index{}; col_index < cols_count; ++col_index)
{
::std::cout << "arr[" << row_index << "][" << col_index << "]=";
::std::cin >> arr[row_index][col_index];
}
}
Я просто исправил ваши ошибки:
constexpr unsigned n = 3;
int arr[n][n];
unsigned i = 0, j = 0;
while ( i < n)
{
while (j < n)
{
cout << "arr[" << i << "][" << j << "]=";
cin >> arr[i][j];
++j;
}
++i;
j = 0;
}
cout << "\nYour matrix:\n";
i = 0;
j = 0;
while (i < n)
{
while (j < n)
{
cout << setw(3) << arr[i][j];
++j;
}
cout << endl;
++i;
j = 0;
}
cout << "\nNew matrix: \n";
i = 0;
j = 0;
while (i < n)
{
while (j < n)
{
if (arr[i][j] < 0)
{
arr[i][j] = 0;
}
else
{
arr[i][j] = 1;
}
cout << setw(3) << arr[i][j];
++j;
}
cout << endl;
++i;
j = 0;
}
каждый раз вы доолжны обходить массив с первого элемента, а для этого каждый раз индексы должны быть нулевыми...
Продвижение своими сайтами как стратегия роста и независимости