c++ - 根据某些标准划分数组

标签 c++

<分区>

在这段代码中,我尝试根据数组中存储数据的标准将 a[5] 分成两个数组...... 并将数组 a[5] 的索引存储到其他数组,以显示这些索引包含不同的数据元素 但我不为我工作

#include <iostream>
using namespace std;

void printarray(int b[], int count)
{
    int i;
    for(i=0;i<count;i++)
        cout<<b[i]<<endl;
}

void main()
{
    int a[5]={1,0,0,1,1};
    int array[5][5]=
    {
        {0,5,0,4,0},
        {0,0,6,0,7},
        {0,0,0,0,8},
        {0,0,0,0,10},
        {0,0,0,0,0}
    };

    int count=0;
    int counti=0;
    int C1=0;
    int i;

    for(i=0;i<5;i++)
    {
        if(C1==a[i])
        {
            count++;
        }

        else
        {
            counti++;
        }
    }

    int *b= new int[count];
    int *c= new int[counti];
    for(i=0;i<5;i++)
    {

        if(C1==a[i])
        {
            b[i]=i;
        }
        else
        {
            c[i]=i;
        }
    }

    printarray(b,count);
}

代码显示抓取值...请帮助我 它显示以下结果 -842151450 1

最佳答案

第一个 i 是 1 ,所以 b 将包含 {1, 2}。其中 ( b[1] = 1, b[2] = 2 )
当您循环遍历 b 以打印您从索引 0 开始的所有元素时,尽管 b 从索引 1 开始。

您可以使用(j,k 而不是 i)修复索引。

int *b = new int[count];
int *c = new int[counti];
int j, k;
j = k = 0;

for (i = 0; i<5; i++)
{

    if (C1 == a[i])
    {
        b[j++] = i;         
    }
    else
    {
        c[k++] = i;
    }
}
printarray(b, count);

关于c++ - 根据某些标准划分数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25338235/

相关文章:

c++ - 我应该使用哪个 API 在 Windows 上播放音频?

c++ - 如何在 Windows 上将 C++11 线程关联设置为 NUMA 节点?

c# - BSTR (COM) 的长度

c++ - 将 ISO8601 字符串转换为自纪元以来的毫秒数

c++ - Wx-widgets - wxWebView - 修改上下文菜单

c++ - Boost Graph 通过 vertex_descriptor 访问属性

c++ - 为什么在此处重写字符串文字(C++)?

c++ - QNetworkReply 不触发

C++:不区分大小写的前 n 个字符字符串比较

c++ - 我在为静态文本设置字体时遇到问题