【发布时间】:2017-11-16 16:22:30
【问题描述】:
我很难理解如何用元素数字的总和替换向量中的所有元素。例如,如果我有这样的数字序列9 22 54 981,我的输出必须是9 4 9 18。我知道如何计算总和。我有一个名为 file_numbers 的向量。但我被困在这一点上。感谢您的帮助。
int SumOfDigits(int digit)
{
int sum = 0;
while (digit > 0)
{
sum += digit % 10;
digit /= 10;
}
return sum;
}
void FourthTask(vector<int>& file_numbers)
{
std::transform(file_numbers.begin(),
file_numbers.end(),
file_numbers.begin(),SumOfDigits);
}
【问题讨论】:
-
"如何用元素数字的总和替换向量中的所有元素" 提示:计算总和后,您不会进行任何替换(除了不重置
sum的值变为 0,然后再计算另一个数字的数字总和)。编辑:for (size_t i = 1;std::vector的索引从 0 开始,所以你会错过第一个数字。 -
将问题分为两部分:从数字 (54 -> 9) 计算总和,并转换向量的每个值。
-
我只是创建一个新向量?
-
@Jarod42 这就是我试图完成这项任务的方式。我只是不明白如何转换这些值
-
暂时忘掉向量吧。你真的应该写一个简单的函数,它接受一个 int 并返回数字的总和。一旦你有了它,然后只需在循环中使用向量的每个条目调用该函数。