《》《》《》《》《》 请教各位一个求均值算法 《》《》《》《》《》

stevenying 2004-07-02 08:03:28
比如我有两个Unsigned int 的变量count, step, step是步长等分,如何求出每个步长的长度

例如count = 10, step = 3

10/3 = 3, 则依次3,3,4

这里都是unsigned int 类型,请各位大侠指点,谢谢
...全文
70 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevenying 2004-07-02
  • 打赏
  • 举报
回复
我想了一个不是办法的办法:
void main()
{
unsigned int count = 14;//10;
unsigned int step = 15;
unsigned int num1 = 0;
unsigned int num2;

if(count < step)
{
for(int j = 1; j <= step; ++j){

if (count != 0)
cout << 1<<" ";
else
cout<< 0 << " ";
if(count != 0)
count --;
}

}

else
{
for(int i =1; i<=step; ++i){
num2 = (i * count) / step;
cout << num2 - num1 <<" ";
num1 = num2;
}
}


}

各位大侠有何改进,谢谢
stevenying 2004-07-02
  • 打赏
  • 举报
回复
2/3 -> 1,1,0
1/3 -> 1,0,0
gernal_dn 2004-07-02
  • 打赏
  • 举报
回复
我觉得1 0 1更合适。
stevenying 2004-07-02
  • 打赏
  • 举报
回复
嗯,大侠,我是说1,1,0呀,不是1,0,1,您好像搞错了,


我也在调
gernal_dn 2004-07-02
  • 打赏
  • 举报
回复
有道理:
unsigned int count = 2;
unsigned int step = 3;
unsigned int num1 = 0;
unsigned int num2;
for(int i =1;i<=step;++i){
num2 = (i * double(count)) / step + 0.5;
cout << num2 - num1 <<" ";
num1 = num2;
}
输出是1 0 1
是0.000 - 0.667 - 1.333 - 2.0 之间间隔值的取整。
stevenying 2004-07-02
  • 打赏
  • 举报
回复
大侠,首先谢谢你的建议,不过我有两点疑问,

在您的算法中,当count = 2, 时,输出0,1,1,我觉得1,1,0比较合理,您觉得呢?

谢谢
gernal_dn 2004-07-02
  • 打赏
  • 举报
回复
unsigned int count = 10;
unsigned int step = 3;
unsigned int num1 = 0;
unsigned int num2;
for(int i =1;i<=step;++i){
num2 = (i * count) / step; //用括号,确保不会被优化
cout << num2 - num1 <<" ";
num1 = num2;
}

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧