使用其他数组中相同索引位置的范围中的相应值计算数组值 我在C++程序中有2个C数组作为C++与C程序之间的接口的一部分,不能使用C++向量。
和一些大小范围的结束开始:使用其他数组中相同索引位置的范围中的相应值计算数组值 我在C++程序中有2个C数组作为C++与C程序之间的接口的一部分,不能使用C++向量。,c++,C++,和一些大小范围的结束开始: int start = 2; int end = 4; int range_size = end-start; 在此范围将包括值2,3 我需要计算该范围内的值在JA中出现的频率,以及JB中相同索引位置处的值落入相同数字范围的频率(但可以是该范围内的任何值)。我需要另一个数组中的计数 上述示例的预期结果为: int result[range_size]={2,2}即2在JA中显示2x,而JB中的值为2或3,3在JB中相同索引位置的值为2或3时也显示2x int JA
int start = 2;
int end = 4;
int range_size = end-start;
在此范围将包括值2,3
我需要计算该范围内的值在JA中出现的频率,以及JB中相同索引位置处的值落入相同数字范围的频率(但可以是该范围内的任何值)。我需要另一个数组中的计数
上述示例的预期结果为:
int result[range_size]={2,2}即2在JA中显示2x,而JB中的值为2或3,3在JB中相同索引位置的值为2或3时也显示2x
int JA = {0,3,0,1,3,0,2,3,4,2,3,4};
x x | | | |
int JB = {0,0,1,1,1,2,2,2,2,3,3,4};
x=超出JB范围,|=在JB范围内,因此应计算后者
我尝试了以下方法,但不起作用,检查是否在JB范围内似乎是导致问题的原因:
#include <stdio.h>
#include <iostream>
int main()
{
int start = 2;
int end = 4;
int range_size;
int JA[12] = {0,3,0,1,3,0,2,3,4,2,3,4};
int JB[12] = {0,0,1,1,1,2,2,2,2,3,3,4};
range_size = end-start;
int result[range_size];
int x = 0;
for (x=start; x<end; ++x) {
for (int a=0; a<12; ++a) {
int y = JA[a];
if (x=y) {
int z = JB[a];
if (z>=start && z<end) {
result[x]++;
printf("result[x] %i.\n", result[x]);
}
}
}
}
return 0;
}
#包括
#包括
int main()
{
int start=2;
int-end=4;
int范围_大小;
int-JA[12]={0,3,0,1,3,0,2,3,4,2,3,4};
int JB[12]={0,0,1,1,1,2,2,2,3,3,4};
范围大小=结束-开始;
int结果[范围大小];
int x=0;
对于(x=start;x程序可以通过编写一个函数来简化,该函数测试数字是否在范围内。
另一个简化是使外循环对应于数组的索引
#include <stdio.h>
#include <iostream>
#include <vector>
bool in_range (int start, int end, int val){
return (val >= start) && (val < end);
}
int main() {
int start = 2;
int end = 4;
int range_size = end - start;
int JA[12] = {0,3,0,1,3,0,2,3,4,2,3,4};
int JB[12] = {0,0,1,1,1,2,2,2,2,3,3,4};
std::vector<int> result (range_size, 0);
for (int i = 0; i < 12; i++) {
bool test = in_range (start, end, JA[i]) && in_range (start, end, JB[i]);
if (test) result[JA[i]-start]++;
}
for (int val = start; val < end; ++val) {
std::cout << val << " : " << result[val - start] << "\n";
}
return 0;
}
#包括
#包括
#包括
布尔值在_范围内(整数开始、整数结束、整数值){
返回(val>=开始)&(val std::coutif(x=y)
-你的意思是if(x=y)
?“有人能发现错误吗?”当然,您可以使用调试器并逐行遍历代码。Damien,这是一种很好的方法来匹配JA和JB中的条目,但结果并不完全符合我的要求。结果需要是一个大小范围数组,其中包含范围内的数字计数。结果[]={2,2}由于数字2和3与JB中的数字2x相匹配,因此该数字也在范围内。程序已修改
#include <stdio.h>
#include <iostream>
#include <vector>
bool in_range (int start, int end, int val){
return (val >= start) && (val < end);
}
int main() {
int start = 2;
int end = 4;
int range_size = end - start;
int JA[12] = {0,3,0,1,3,0,2,3,4,2,3,4};
int JB[12] = {0,0,1,1,1,2,2,2,2,3,3,4};
std::vector<int> result (range_size, 0);
for (int i = 0; i < 12; i++) {
bool test = in_range (start, end, JA[i]) && in_range (start, end, JB[i]);
if (test) result[JA[i]-start]++;
}
for (int val = start; val < end; ++val) {
std::cout << val << " : " << result[val - start] << "\n";
}
return 0;
}