如何查找数组中存在的元素数量?

时间:2011-07-16 11:17:40

标签: c++ arrays size

我有一个数组变量,例如: -

int a[10];

假设我从1,2,3,4a[0]添加了4个元素a[3]。 现在我如何找到最大尺寸为a的数组变量10中存在多少元素?

我的方法是获取数组中存在的元素数量,假设用户将提供大于或等于零的输入: -

#include<iostream>
using namespace std;    
#define SIZE 10
int main(){
    int *a = (int*)malloc(sizeof(int)*SIZE);
    int iCount=0;
    int iNumberOfElements,iElements;
    cout<<"\nEnter the number of elements to be entered:";
    cin>>iNumberOfElements;
    cout<<"\nEnter the elements(Please enter elements greater than or equal to zero):\n";
    for (int jIndex = 0; jIndex < iNumberOfElements; jIndex++){ 
        cin>>iElements;
            while(iElements<0){
               cout<<"\nPlease enter the element greater than or equal to Zero.\nRe-enter:\n";
               cin>>iElements;
        }
        a[jIndex] = iElements;
    }
    for(int iIndex=0;iIndex<SIZE;iIndex++){
        if(a[iIndex] >= 0){ //I am checking in this way assuming that user will give input >= 0
            iCount++;
        }
    }
    cout<<"\nThe total number of element present in the array is:"<<iCount<<endl;
    return 0;
}

5 个答案:

答案 0 :(得分:4)

你必须自己建立这个惯例。

例如,您可以将整个数组初始化为一个表示“未使用”的魔术常量,或者您可以通过单独的变量跟踪长度。

无论哪种方式,框架都无法帮助你,没有办法。无论你是否设置它们,数组都有10个元素。

答案 1 :(得分:1)

通过

int a[10];

您已为10个整数分配了具有不确定值的空间(如果数组具有静态存储持续时间,则为0)。当你说

  

我添加了4个元素,例如从[0]到[3]

开始的1,2,3,4

您可能意味着您已为元素指定了值。因此,它们没有以任何其他方式标记。 您可以将所有元素设置为-1,以便确定是否已分配给它们,但要小心 - 您无法知道数组的结束位置! (只有在C ++中才能使用函数模板并将数组作为对数组的引用传递。)

答案 2 :(得分:1)

不使用计数器或使用默认值设置表格, 如果通过使用指针中的表的地址逐步添加或删除元素,然后计算两者之间的差异,则可以完成此操作:

int a[10],*ptr=a;
*ptr=1;
*++ptr=2;
*++ptr=3;
*++ptr=4;
printf("start addr : %p\ncurrent addr %p\n",
        a,ptr);
printf("present in a : %d rest : %d\n",ptr-a+1,&a[9]-ptr);

答案 3 :(得分:-1)

您可以定义静态或易变变量,以跟踪数组中存在的数量或初始化数量。 在下面的程序中j跟踪数组a中的数字

int main()
      {
        int a[10];
        static int j=0;
        do{
           scanf("%d",&a[i]);
           if(a[i]>=0)
               j++;
           }while(a[i++]>=0);

       }

答案 4 :(得分:-1)

可以使用简单的循环

计算数组中的元素数
int i=0,count=0;
for(i=0;i<10;i++)
{
    if(a[i]!='/0')
    {
        count++;
    }
}

这里我是一个整数变量,count用于计算元素的数量。假设数组的最大大小为10,则使用值“10”。如果只向大小为10的数组输入4个元素,此代码将返回计数4.