新足迹

 找回密码
 注册

精华好帖回顾

· 2013到此一游 纽约 (2014-2-1) JerryWu · 补习班颁奖之杂七杂八(2011年11月20日更新) (2009-11-22) patrickzhu
· 我所经历的一个最不可思议的中介(续在38楼,61楼,104楼,高潮到来,曲终人散172楼)) (2009-6-19) 上海大闸蟹 · Chadstone 内玩镜头的附带产物 (2011-12-22) yeu008
Advertisement
Advertisement
查看: 1325|回复: 10

C# 数学问题。 呼唤达人。 [复制链接]

头像被屏蔽

禁止发言

发表于 2010-10-27 10:04 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
/*first sheet can hold 33 rows, 48 rows for following sheets, but keep 3 rows for 'Total' summary*/
static public int GetNumberofPages(int numberofRows)
        {
            if (numberofRows == 0)
                return 0;
            if (numberofRows <= 30)
            {
                return 1;
            }

            if (numberofRows > 30 && numberofRows <= 33)
            {
                return 2;
            }
            else
            {
                if (((numberofRows - 33 + 3) % 48) == 0)
                    return 1 + ((numberofRows - 33 + 3) / 48);
                else
                    return 1 + ((numberofRows - 33 + 3) / 48) + 1;
            }
        }

一个method 计算需要多少个excel sheets, 有没有更好的方法?? 非常谢谢

[ 本帖最后由 澳贼 于 2010-10-27 11:06 编辑 ]
签名被屏蔽
Advertisement
Advertisement

发表于 2010-10-27 10:27 |显示全部楼层
此文章由 蓝爸爸 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 蓝爸爸 所有!转贴必须注明作者、出处和本声明,并保持内容完整
最后一部分的经典写法是:((numberofRows - 33 + 3) + 47)/ 48,里面那个模48的if...else完全不需要。中间那个判断30到33之间也是多余。我觉得如下几行就搞定你的问题了。

            if (numberofRows <= 30)
            {
                return (numberofRows + 29)/30;
            }
            else
            {
                    return 1 + (((numberofRows - 33 + 3) + 47) / 48);
            }

更简单的话,一行:
    return ((numberofRows <= 30) ? (numberofRows + 29)/30 : 1 + (((numberofRows - 33 + 3) + 47) / 48));

[ 本帖最后由 蓝爸爸 于 2010-10-27 11:44 编辑 ]

特殊贡献奖章

发表于 2010-10-27 10:28 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果3 rows总是存在,你应该定义一个totalNumberofRows= numberofRows+3
然后用totalNumberofRows来算就方便多了
头像被屏蔽

禁止发言

发表于 2010-10-27 10:38 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 蓝爸爸 于 2010-10-27 11:27 发表
最后一部分的经典写法是:((numberofRows - 33 + 3) + 47)/ 48,里面那个模48的if...else完全不需要。


牛!!!!!!!!!!
签名被屏蔽
头像被屏蔽

禁止发言

发表于 2010-10-27 10:39 |显示全部楼层

感谢 blue's dad

此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
private int GetNumberofPages(int numberofRows)
        {   
            if (numberofRows <= 30)
            {
                return 1;
            }

            if (numberofRows > 30 && numberofRows <= 33)
            {
                return 2;
            }
            else
            {
                return 1 + ((numberofRows - 33 + 3) + 47) / 48;
            }
        }
签名被屏蔽

发表于 2010-10-27 10:46 |显示全部楼层

回复 5# 的帖子

此文章由 蓝爸爸 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 蓝爸爸 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你这个逻辑和1#的变了:如果numberofRows是0,你到底是要返回0还是1?
Advertisement
Advertisement

发表于 2010-10-27 11:07 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
sheets=(totalrows+12)/45

round up to integer
For example, totalrows=100
(100+12)/45=3 sheets

[ 本帖最后由 典 于 2010-10-27 11:09 编辑 ]

发表于 2010-10-27 11:11 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
but keep 3 rows for 'Total' summary*/


Is it for each sheet or only the last sheet?
If the 3 rows is used to the last sheet only
go to this:

sheets=(totalrows+18) /48

[ 本帖最后由 典 于 2010-10-27 11:18 编辑 ]
头像被屏蔽

禁止发言

发表于 2010-10-27 11:55 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2010-10-27 12:11 发表
but keep 3 rows for 'Total' summary*/


Is it for each sheet or only the last sheet?
If the 3 rows is used to the last sheet only
go to this:

sheets=(totalrows+18) /48


Last Sheet Only
签名被屏蔽
头像被屏蔽

禁止发言

发表于 2010-10-27 11:55 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 蓝爸爸 于 2010-10-27 11:46 发表
你这个逻辑和1#的变了:如果numberofRows是0,你到底是要返回0还是1?


看贴够细!!
签名被屏蔽

发表于 2010-10-27 12:11 |显示全部楼层
此文章由 蓝爸爸 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 蓝爸爸 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 澳贼 于 2010-10-27 12:55 发表


看贴够细!!


哈哈,最近几年眼睛越来越差,就是因为整天得盯着屏幕看。
Advertisement
Advertisement

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部