天天看点

给定一个数值,计算最合适的行列数量的代码

 其实代码很简单,需要的可以参考下。

int   countToRowColumn(const int count, int* pRows, int* pColumns)
{
    //这两个变量可以省略。
    int rows    = 0;
    int columns = 0;
 
    if (count <= 0 || pRows == NULL || pColumns == NULL)
    {
        return -1;
    }
 
    //先计算列数。
    columns = sqrt(count);
    if (columns*columns < count)
    {
        columns ++;
    }
 
    //再计算行数。
    rows   = count/columns;
    if (rows*columns < count)
    {
        rows ++;
    }
 
    *pRows    = rows;
    *pColumns = columns;
 
    return 0;
}      

以5为例计算中间过程: 

columns=2

columns=3

rows = 1

rows = 2

返回。

有人如下代码如何,是不是更精简?

rows    = sqrt(count);
columns = rows;
 
if (rows*columns<count)
{
    columns++;
}
       

count=3;

rows=1;

columns=1;

columns=2;

返回,错误。

继续阅读