c++ - 如何根据计数器缩放值
问题描述
我有五个整数值
std::vector<int> vec(5, 0);
每个 int 的值将基于一个计数器。
如果计数器为 0,则所有整数都为 0
如果计数器为 100,则所有整数的值为 20
所以当计数器为 20 时,第一个 int 的值为 20,其余为 0。
当计数器为 30 时,第一个 int 为 20,第二个 int 为 10
这是我的代码,我有兴趣看到其他逻辑来实现这一点,
std::vector<int> vec(5, 0);
int counter = 50;
for (int i = 0; i < 5; i++)
{
int startValue = (i) * 20;
int finalValue = counter - startValue;
if (finalValue > 20)
finalValue = 20;
if (finalValue < 0)
finalValue = 0;
vec[i] = finalValue;
}
for (auto &v : vec)
{
std::cout << v << std::endl;
}
解决方案
另一种方法是预先计算要设置多少个元素20
以及为下一个元素留下什么,然后将其他元素保留在0
.
const int maxValue = 20;
int fullCells = counter / maxValue;
int lastValue = counter % maxValue;
for (int i = 0; i < fullCells; i++)
{ vec[i] = maxValue; }
if (lastValue)
{ vec[fullCells] = lastValue; }
推荐阅读
- swift - SCNIKConstraint 是如何工作的?
- android - 自定义图标字体不起作用
- node.js - 如何测试在 kubernetes 集群上部署为 pod 的 nodejs 应用程序?
- r - 通过终端在 shell 脚本中使用 install.packages() 来自动选择 CRAN 镜像,而无需停止代码
- extjs - Ext JS 模板应用程序中的“d”字符
- python - 如何使用 Beautiful Soup 抓取多个页面?
- java - 检查子类是否在父类中实现接口?
- android - 生成 Facebook 发布密钥哈希
- google-app-engine - “gcloud app creat”需要许可吗?
- selenium - 硒得到在另一个里面数