某些标准上的数组划分

时间:2014-08-16 08:13:45

标签: 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);
}

代码显示草药值... plz帮助我 它显示以下结果 -842151450 1

1 个答案:

答案 0 :(得分: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);