c++ - 如何在向量中的某个数字之后重新计算进程
问题描述
假设我有很多年。
int year[20];
该计划是创建一个 if 条件并使用 year 向量中的一部分月份。
我想合作的部分是从九月到二月。因此,我一直想选择的年份范围是(year >=9 && year <3)
因此我有两个向量。一个是年份,另一个是我计算的条目。
例如:
vector <int> year{1,2,3,5,10,2,10,12,11,12,2,2,3,5,8,2,8,12,8,12};
vector <int> list{1,2,3,2,1,1,2,3,2,1,5,3,2,5,6,5,3,2,5,6};
上述两个向量的大小都是 20。我想要做的是计算list
我正在研究的每一年段中的向量条目。
如果我们查看上面的两个向量,向量中的第一个月段year
将是:从 year[0] =1 到 year[1] =2。计数为 2。
下一段将是:从 year[4] =10 到 year[5] =2。所以打印出的条目将来自向量list
: list[4]=1, and list[5] =1.
并且总数为 2。
段工作完成后,我想将计数重新分配为零以再次启动它并遍历整个向量year
。
这是我做的一些工作。我的问题是,我可以在 if 语句中创建段,但我试图在每年段完成时分配计数 =0。
#include <iostream>
#include <string>
#include <cstdlib>
#include <vector>
using namespace std;
int main()
{
unsigned int count =0;
vector <int> year{1,2,3,5,10,2,10,12,11,12,2,2,3,5,8,2,8,12,8,12};
vector <int> list;
for (int x =0; x<20; x++)
{
//cout << "random number" << (1+ rand()%12)<< endl;
list.push_back((1+ rand()%4));
}
for (int j=0; j<=20; j++)
{
if (year[j] >=9 && year[j]<3)
{
count++;
cout <<list[j]<< "counting the entry of each segment"<< count<<endl;
}
}
}
year
如果向量中的条目(例如 1 = 一月,2 = 二月)满足九月到二月的条件,我想选择段的方式。因此,每个段都将大于或等于 9 且小于 3。
当我递增到 vectoryear
时,我找到了一个满足条件的段并转到下一个再次满足条件的段。
每次我在每个段的 if 条件下完成操作时,我都想分配 count = 0,这样我就可以重新计算下一段中有多少条目。
由于月份按升序排列,因此示例 {11, 10} 将计为 1,其中包含两个段而不是两个段。段将是 {11} 和 {10},而不是 {11, 10},它计算元素 entry = 2。
解决方案
我建议看(year[j]+9)%12
而不是直接看year[j]
。
所有 >= 6 都在您的范围内 (6,7,8,9,10,11) ,即不需要的其他 6 个月 (0,1,2,3,4,5) 都在外面。这也使得检测新段的开始变得更加容易。
year[j] (year[j]+9)%12 wanted
1 10 x
2 11 x
3 0
4 1
5 2
6 3
7 4
8 5
9 6 x
10 7 x
11 8 x
12 9 x
向量中的值变为:
wanted reset
1 10 x
2 11 x
3 0 r
5 2
10 7 x
2 11 x
10 7 x r
12 9 x
11 8 x r
12 9 x
2 11 x
2 11 x
3 0 r
5 2
8 5
2 10 x
8 5 r
12 9 x
8 5 r
12 9 x
这显示了您要重置计数并开始处理新段的位置,即只要(year[j]+9)%12
不大于先前的索引。
该公式(year[j]+9)%12
通过移动您正在查看的“虚拟月份”、使用+9
部件并确保结果在 12 个月内仍处于 0-11 范围内来起作用%12
。即“1”(被视为“10”)被视为高于“12”(被视为“9”)。所以从 12 (9) 到 1 (10) 不会触发重置,但从 2 (11) 到 3 (0) 会触发重置,因为该段显然结束了。同样从 2 (11) 到 10 (7) 触发重置;这是必需的,因为 (3-8) 发生在两者之间,因此需要开始一个新的段,即使 10 高于 2。
推荐阅读
- c# - 带委托的隐式参数修饰符?(C#)
- ios - “代理自动配置 (PAC) 的明文 HTTP URL 方案现已弃用”对 IOS 15 beta 应用程序的影响
- php - 如何根据 Magento 2.4 中的地址计算动态运费
- powerbi - 有没有办法在不使用书签的情况下清除 PBI 报告上的过滤器
- django - 配置 sendgrid 和 django
- reactjs - 反应原生 sdk 41.0.0 过时?
- javascript - 如何以角度向iframe添加关闭按钮?
- c++ - E0028 表达式必须有一个常数值。我想像一个常数一样输入n。谢谢
- reactjs - 使用覆盖部分联合的交集类型
- blazor - Blazor OnClick 在带有 JS 事件处理程序的元素内部不起作用