如何用元素数字的总和替换向量中的所有元素?

时间:2017-11-16 16:22:30

标签: c++ vector

我无法理解如何通过元素数字的总和替换向量中的所有元素。例如,如果我有这样的数字序列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);
}

3 个答案:

答案 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;
    }
}

注意:

  • Sum在for循环中 ,否则你将对以前处理过的所有数字进行求和
  • 使用范围循环,它们已经很好地优化了

答案 2 :(得分:-2)

将元素转换为字符串,然后为每个字符循环,将字符转换为int并将其添加到前一个字符的总和中。