根据某些准则对数组进行除法

division of array on some criterion

本文关键字:数组 除法      更新时间:2023-10-16

在这段代码中,我尝试根据存储在数组.......中的数据的标准将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);
}

代码显示抓取值…请帮帮我它显示了以下结果-8421514501

第一个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);