I'm trying to double each number in 2D arrays. For example the values in array1
would become {2,4,6}{4,8,12}{6,12,18}
. The problem is that my code doubles the only the first number. Can someone give me some direction on what to do?
#include <iostream>
#include <iomanip>
using namespace std;
const int N = 3;
int doubleValues(int arr[][N])
{
for (int i = 0; i < N; i++)
{
arr[i][N] *= 2;
for (int j = 0; j < N; j++)
{
arr[N][j] *= 2;
return arr[i][j];
}
}
}
void showArray(int arr[][N])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
cout << setw(4) << arr[i][j] << " ";
}
cout << endl;
}
}
int main()
{
int array1 [N][N] = {
{ 1, 2, 3 } ,
{ 2, 4, 6 } ,
{ 3, 6, 9 }
};
int array2 [N][N] = {
{ 3, 4, 5 } ,
{ 6, 8, 10 } ,
{ 9, 12, 15 }
};
cout << "The values for array1 doubled are: \n";
doubleValues(array1);
showArray(array1);
cout << "The values for array2 double are: \n";
doubleValues(array2);
showArray(array2);
system("pause");
}
You have a
return arr[i][j]
in the inner loop of yourdoubleValues
function. After doubling the first element, your function returns without doing any more work.The solution is to remove this
return
statement. (And changedoubleValues
to avoid
function, because it doesn't need to return a value.)Also, your
doubleValues
function seems to be modifying the wrong elements anyway. Both your accesses toarr[i][N]
andarr[N][j]
access elements out of bounds of your declared array size. You should probably be modifyingarr[i][j]
within your loop.