首页 > 解决方案 > 不断减去的累积变量,直到达到 0 值

问题描述

我需要 C++ 循环方面的帮助。假设我有 10 个人,用长度为 10 的向量表示,每个人都有一定的年龄。我只想选择年龄<12 的人,并从他们的年龄中减去一个固定值age_fixed。使用 for 循环看起来非常简单:

vector<float> diff_ages(0);
vector<float> ages {1.2, 7.3, 13.9, 17.8, 45., 72.3, 12.1, 100.3, 6.7, 88.2};
double age_fixed=8.1;

for (auto i=0;i<ages.size();i++){
  if (ages[i]<12){
      diff_ages.push_back(ages[i]-age_fixed);
  }
}

现在我想让事情复杂化:

关于如何做到这一点的任何想法?我认为我应该使用while循环,但我不是很熟悉它,我通常使用 for 循环。

+++++++++++++编辑+++++++++++

假设我的ages向量是:

vector<float> ages {1.3, 7.3, 99.7};
double age_fixed=8.1;

假设我不做任何选择——即我选择了所有三个年龄,没有if声明ages[i]<12。在循环的每一步,我都会:

i=0
diff_ages[0]=0
cum_ages=abs(ages[0]-diff_ages)=6.9
i=1
diff_ages[1]=0
cum_ages=abs(ages[0]-diff_ages)+abs(ages[1]-diff_ages)=6.9+0.8=7.7
i=2
diff_ages[3]=91.6
cum_ages=7.7

由于cum_ages>0在循环结束时,我想重新开始循环,最后cum_ages只减去ages[i]>0,在本例中为ages[2]。在第二个循环之后, cum_ages=0 并且我不需要再次重新启动循环,但假设我有另一个ages[i]=7.8,我会cum_ages>0再次重新启动循环。

我想要获得的是diff_ages值更大或至少等于 的向量,在根据需要用 as 循环0耗尽值之后。cum_ages

标签: c++algorithmfor-loopwhile-loopdifference

解决方案


推荐阅读