C++ C+的Averageif函数等价物+;
我是一名编码初学者,我正试图缩小一大块容易出错的代码。我非常想要它C++ C+的Averageif函数等价物+;,c++,arrays,if-statement,average,C++,Arrays,If Statement,Average,我是一名编码初学者,我正试图缩小一大块容易出错的代码。我非常想要它 if (tileBlocked[row - 1][col] == true) { add tileAir[row - 1][col] to averaging } 这样,仅当TileBlock未将该区域列为阻塞区域时,我才能找到数组tileAir中值的平均值。我四处搜索,唯一找到的是Averageif,据我所知,它只适用于excel。是否有任何等效的或某种方式可以减少这段代码的大小并允许更好的扩展能力 现在这是我当前
if (tileBlocked[row - 1][col] == true)
{
add tileAir[row - 1][col] to averaging
}
这样,仅当TileBlock未将该区域列为阻塞区域时,我才能找到数组tileAir中值的平均值。我四处搜索,唯一找到的是Averageif,据我所知,它只适用于excel。是否有任何等效的或某种方式可以减少这段代码的大小并允许更好的扩展能力
现在这是我当前的代码:
for (int row = 1; row < 255; ++row) // Repeats for all rows, skipping the first and final row
{
for (int col = 1; col < 255; ++col) // Repeats for all columns, skipping the first and final column
{
bool check[4] = { tilesBlocked[row - 1][col], tilesBlocked[row][col - 1], tilesBlocked[row][col + 1], tilesBlocked[row + 1][col] }; // Creates an Array for testing what tiles should be ommited from the calculation
if (tilesBlocked[row][col][0] == true) // If the tile being calculated is blocked, skip it
{
}
else if (check[0] == true && check[1] == true && check[2] == true && check[3] == true)
{
}
else if (check[0] == false && check[1] == false && check[2] == false && check[3] == false)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row - 1][col] + tilesOxygen[row][col - 1] + tilesOxygen[row][col + 1] + tilesOxygen[row + 1][col]) / 5);
tilesOxygen[row - 1][col] = tilesOxygen[row][col];
tilesOxygen[row][col - 1] = tilesOxygen[row][col];
tilesOxygen[row][col + 1] = tilesOxygen[row][col];
tilesOxygen[row + 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == false && check[1] == false && check[2] == false && check[3] == true)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row - 1][col] + tilesOxygen[row][col - 1] + tilesOxygen[row][col + 1]) / 4);
tilesOxygen[row - 1][col] = tilesOxygen[row][col];
tilesOxygen[row][col - 1] = tilesOxygen[row][col];
tilesOxygen[row][col + 1] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == false && check[1] == false && check[2] == true && check[3] == false)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row - 1][col] + tilesOxygen[row][col - 1] + tilesOxygen[row + 1][col]) / 4);
tilesOxygen[row - 1][col] = tilesOxygen[row][col];
tilesOxygen[row][col - 1] = tilesOxygen[row][col];
tilesOxygen[row + 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == false && check[1] == false && check[2] == true && check[3] == true)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row - 1][col] + tilesOxygen[row][col - 1]) / 3);
tilesOxygen[row - 1][col] = tilesOxygen[row][col];
tilesOxygen[row][col - 1] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == false && check[1] == true && check[2] == false && check[3] == false)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row - 1][col] + tilesOxygen[row][col + 1] + tilesOxygen[row + 1][col]) / 4);
tilesOxygen[row - 1][col] = tilesOxygen[row][col];
tilesOxygen[row][col + 1] = tilesOxygen[row][col];
tilesOxygen[row + 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == false && check[1] == true && check[2] == false && check[3] == true)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row - 1][col] + tilesOxygen[row][col + 1]) / 3);
tilesOxygen[row - 1][col] = tilesOxygen[row][col];
tilesOxygen[row][col + 1] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == false && check[1] == true && check[2] == true && check[3] == false)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row - 1][col] + tilesOxygen[row + 1][col]) / 3);
tilesOxygen[row - 1][col] = tilesOxygen[row][col];
tilesOxygen[row + 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == false && check[1] == true && check[2] == true && check[3] == true)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row - 1][col]) / 2);
tilesOxygen[row - 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == true && check[1] == false && check[2] == false && check[3] == false)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row][col - 1] + tilesOxygen[row][col + 1] + tilesOxygen[row + 1][col]) / 4);
tilesOxygen[row][col - 1] = tilesOxygen[row][col];
tilesOxygen[row][col + 1] = tilesOxygen[row][col];
tilesOxygen[row + 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == true && check[1] == false && check[2] == false && check[3] == true)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row][col - 1] + tilesOxygen[row][col + 1]) / 3);
tilesOxygen[row][col - 1] = tilesOxygen[row][col];
tilesOxygen[row][col + 1] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == true && check[1] == false && check[2] == true && check[3] == false)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row][col - 1] + tilesOxygen[row + 1][col]) / 3);
tilesOxygen[row][col - 1] = tilesOxygen[row][col];
tilesOxygen[row + 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == true && check[1] == false && check[2] == true && check[3] == true)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row][col - 1]) / 2);
tilesOxygen[row][col - 1] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == true && check[1] == true && check[2] == false && check[3] == false)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row][col + 1] + tilesOxygen[row + 1][col]) / 3);
tilesOxygen[row][col + 1] = tilesOxygen[row][col];
tilesOxygen[row + 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == true && check[1] == true && check[2] == false && check[3] == true)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row][col + 1]) / 2);
tilesOxygen[row][col + 1] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else if (check[0] == true && check[1] == true && check[2] == true && check[3] == false)
{
tilesOxygen[row][col] = ((tilesOxygen[row][col] + tilesOxygen[row + 1][col]) / 2);
tilesOxygen[row + 1][col] = tilesOxygen[row][col];
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
else
{
std::cout << "Something Broke";
}
}
}
for(int row=1;row<255;++row)//对所有行重复,跳过第一行和最后一行
{
for(int col=1;col<255;++col)//对所有列重复,跳过第一列和最后一列
{
bool check[4]={tilesBlocked[row-1][col]、tilesBlocked[row][col-1]、tilesBlocked[row][col+1]、tilesBlocked[row+1][col]};//创建一个数组,用于测试应从计算中删除哪些分幅
if(tilesBlocked[row][col][0]==true)//如果正在计算的tile被阻止,则跳过它
{
}
else if(检查[0]==true&&check[1]==true&&check[2]==true&&check[3]==true)
{
}
else if(检查[0]==false&&check[1]==false&&check[2]==false&&check[3]==false)
{
tilesOxygen[row][col]=((tilesOxygen[row][col]+tilesOxygen[row-1][col]+tilesOxygen[row-1][col 1]+tilesOxygen[row-1][col col 5);
tilesOxygen[row-1][col]=tilesOxygen[row][col];
tilesOxygen[row][col-1]=tilesOxygen[row][col];
tilesOxygen[row][col+1]=tilesOxygen[row][col];
tilesOxygen[行+1][col]=tilesOxygen[行][col];
tilesOxygen[0][col]=0;
tilesOxygen[row][0]=0;
tilesOxygen[255][col]=0;
tilesOxygen[row][255]=0;
}
else if(检查[0]==false&&check[1]==false&&check[2]==false&&check[3]==true)
{
tilesOxygen[row][col]=((tilesOxygen[row][col]+tilesOxygen[row-1][col]+tilesOxygen[row][col 1]+tilesOxygen[row][col 1])/4);
tilesOxygen[row-1][col]=tilesOxygen[row][col];
tilesOxygen[row][col-1]=tilesOxygen[row][col];
tilesOxygen[row][col+1]=tilesOxygen[row][col];
tilesOxygen[0][col]=0;
tilesOxygen[row][0]=0;
tilesOxygen[255][col]=0;
tilesOxygen[row][255]=0;
}
else if(检查[0]==false&&check[1]==false&&check[2]==true&&check[3]==false)
{
tilesOxygen[row][col]=((tilesOxygen[row][col]+tilesOxygen[row-1][col]+tilesOxygen[row-1][col col])/4);
tilesOxygen[row-1][col]=tilesOxygen[row][col];
tilesOxygen[row][col-1]=tilesOxygen[row][col];
tilesOxygen[行+1][col]=tilesOxygen[行][col];
tilesOxygen[0][col]=0;
tilesOxygen[row][0]=0;
tilesOxygen[255][col]=0;
tilesOxygen[row][255]=0;
}
else if(检查[0]==false&&check[1]==false&&check[2]==true&&check[3]==true)
{
tilesOxygen[row][col]=((tilesOxygen[row][col]+tilesOxygen[row-1][col]+tilesOxygen[row][col 1])/3);
tilesOxygen[row-1][col]=tilesOxygen[row][col];
tilesOxygen[row][col-1]=tilesOxygen[row][col];
tilesOxygen[0][col]=0;
tilesOxygen[row][0]=0;
tilesOxygen[255][col]=0;
tilesOxygen[row][255]=0;
}
else if(检查[0]==false&&check[1]==true&&check[2]==false&&check[3]==false)
{
tilesOxygen[row][col]=((tilesOxygen[row][col]+tilesOxygen[row-1][col]+tilesOxygen[row-1][col col])/4);
tilesOxygen[row-1][col]=tilesOxygen[row][col];
tilesOxygen[row][col+1]=tilesOxygen[row][col];
tilesOxygen[行+1][col]=tilesOxygen[行][col];
tilesOxygen[0][col]=0;
tilesOxygen[row][0]=0;
tilesOxygen[255][col]=0;
tilesOxygen[row][255]=0;
}
else if(检查[0]==false&&check[1]==true&&check[2]==false&&check[3]==true)
{
tilesOxygen[row][col]=((tilesOxygen[row][col]+tilesOxygen[row-1][col]+tilesOxygen[row][col 1])/3);
tilesOxygen[row-1][col]=tilesOxygen[row][col];
tilesOxygen[row][col+1]=tilesOxygen[row][col];
tilesOxygen[0][col]=0;
tilesOxygen[row][0]=0;
tilesOxygen[255][col]=0;
tilesOxygen[row][255]=0;
}
else if(检查[0]==false&&check[1]==true&&check[2]==true&&check[3]==false)
{
tilesOxygen[row][col]=(tilesOxygen[row][col]+tilesOxygen[row-1][col]+tilesOxygen[row+1][col 3);
tilesOxygen[row-1][col]=tilesOxygen[row][col];
tilesOxygen[行+1][col]=tilesOxygen[行][col];
tilesOxygen[0][col]=0;
tilesOxygen[row][0]=0;
tilesOxygen[255][col]=0;
tilesOxygen[row][255]=0;
}
else if(检查[0]==false&&check[1]==true&&check[2]==true&&check[3]==true)
{
tilesOxygen[row][col]=((tilesOxygen[row][col]+tilesOxygen[row-1][col])/2);
tilesOxygen[row-1][col]=tilesOxygen[row][col];
tilesOxygen[0][col]=0;
// Repeats for all rows, skipping the first and final row
for (int row = 1; row < 255; ++row)
{
// Repeats for all columns, skipping the first and final column
for (int col = 1; col < 255; ++col)
{
// If the tile being calculated is blocked, skip it
if ( tilesBlocked[row][col]
|| ( tilesBlocked[row - 1][col] && tilesBlocked[row][col - 1]
&& tilesBlocked[row][col + 1] && tilesBlocked[row + 1][col] ))
{
continue;
}
double avg = tilesOxygen[row][col]; // educated guess about the type
int count = 1;
if ( !tilesBlocked[row + 1][col] ) {
avg += tilesOxygen[row + 1][col];
++count;
}
if ( !tilesBlocked[row][col + 1] ) {
avg += tilesOxygen[row][col + 1];
++count;
}
if ( !tilesBlocked[row][col - 1] ) {
avg += tilesOxygen[row][col - 1];
++count;
}
if ( !tilesBlocked[row - 1][col] ) {
avg += tilesOxygen[row - 1][col];
++count;
}
avg /= count;
tilesOxygen[row][col] = avg;
if ( !tilesBlocked[row + 1][col] ) {
tilesOxygen[row + 1][col] = avg;
}
if ( !tilesBlocked[row][col + 1] ) {
tilesOxygen[row][col + 1] = avg;
}
if ( !tilesBlocked[row][col - 1] ) {
tilesOxygen[row][col - 1] = avg;
}
if ( !tilesBlocked[row - 1][col] ) {
tilesOxygen[row - 1][col] = avg;
}
tilesOxygen[0][col] = 0;
tilesOxygen[row][0] = 0;
tilesOxygen[255][col] = 0;
tilesOxygen[row][255] = 0;
}
}