Re: 2d array element change
On 01.12.2013 02:27, axcytz@gmail.com wrote:
I have 2d array (10x12), and they have 0 and 1s in them. I want to count
the 1s in each array and I have two cases here: (1) if an array has more
than three 1s, say k many, then generate k - 3 random variables and replace
that many 1s with 0s if that random variable corresponds to a 1. (2)if an
array has less than three 1s, say q many, then generate 3 - q random
variables and replace that many 0s with 1s if that random variable
corresponds to a 0. I have the following code so far. I need some suggestions
here, I could not construct the code well.
Is this a fair restatement:
* You have 10 arrays, each of 12 items, each item is either 0 or 1.
* In each array:
- Let n = count of 1 values in the array.
- If n < 3, then randomly change 0s into 1s until n = 3.
- If n > 3, then randomly change 1s into 0s until n = 3.
?
int y[10];
int r[10];
for(int i=0; i < 10; i++){
for(int j=0; j < 12; j++)
{
y[i] += Array[i][j];
}
You are not guaranteed that `y` is all zeroes, since `y` is a non-static
variable.
To guarantee all zeros you need to explicitly /zero-initialize/:
int y[10] = {};
But if you use a `std::vector` then its constructor will do it for you:
vector<int> y(10);
if(y[i] > 3)
{
f = y[i] - 3;
if(Array[i][r[f]] ==1)
Array[i][r[f]] = 0;
This part doesn't appear meaningful.
Presumably this part is what you're seeking help with?
Cheers,
- Alf