我无法理解如何通过元素数字的总和替换向量中的所有元素。例如,如果我有这样的数字序列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);
}
答案 0 :(得分:4)
您可能需要#include <algorithm>
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);
}
答案 1 :(得分:0)
首先是代码,然后注意:
void SumTask(std::vector<int>& file_numbers){
for (auto& i : file_numbers){
int sum = 0;
while (i > 0){
sum += i % 10;
i /= 10;
}
i = sum;
}
}
注意:
答案 2 :(得分:-2)
将元素转换为字符串,然后为每个字符循环,将字符转换为int并将其添加到前一个字符的总和中。