Как найти количество элементов, присутствующих в массиве? - PullRequest
1 голос
/ 16 июля 2011

У меня есть переменная массива, скажем для примера: -

int a[10];

И предположим, что я добавил 4 элемента, скажем 1,2,3,4 начиная с a[0] до 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 ]

4 голосов
/ 16 июля 2011

Вы должны сами встроить это соглашение.

Например, вы можете инициализировать весь массив некоторой магической константой, которая сигнализирует «не используется», или вы можете отслеживать длину через отдельную переменную.

В любом случае, фреймворк вам вообще не поможет, пути нет. Для всех намерений и целей массив имеет 10 элементов, независимо от того, установлены они или нет.

1 голос
/ 16 июля 2011

Без использования счетчика или установки таблицы со значением по умолчанию это можно сделать, если элементы добавляются или удаляются шаг за шагом, используя адрес таблицы в указателе, а затем вычисляет разницу между ними:

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);
1 голос
/ 16 июля 2011

По

int a[10];

Вы выделили пространство для 10 дюймов с неопределенными значениями (или 0, если массив имеет статическую длительность хранения). Когда вы говорите

Я добавил 4 элемента, скажем, 1,2,3,4, начиная с [0] до [3]

Вы, вероятно, имеете в виду, что вы присвоили значения элементам. Таким образом, они не помечены никаким другим способом. Вы можете установить все элементы на -1, чтобы вы могли определить, назначены ли вы им, но будьте осторожны - вы не можете знать, где заканчивается ваш массив! (Это возможно только в C ++, используя шаблоны функций и передавая массив как ссылку на массив.)

0 голосов
/ 18 июля 2011

Количество элементов в массиве можно рассчитать с помощью простого цикла

int i=0,count=0;
for(i=0;i<10;i++)
{
    if(a[i]!='/0')
    {
        count++;
    }
}

Здесь i - целочисленная переменная, для подсчета количества элементов используется count. Значение «10» используется при условии, что максимальный размер массива равен 10. Если в массив размером 10 вводятся только 4 элемента, этот код вернет счет 4.

0 голосов
/ 16 июля 2011

Вы можете определить статическую или переменную переменную, которая отслеживает, сколько чисел присутствует в массиве или инициализировано.в следующей программе 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);

       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...