Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用其他数组中相同索引位置的范围中的相应值计算数组值 我在C++程序中有2个C数组作为C++与C程序之间的接口的一部分,不能使用C++向量。_C++ - Fatal编程技术网

使用其他数组中相同索引位置的范围中的相应值计算数组值 我在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>=开始)&(valstd::cout
if(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;
}