Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2011, 02:34   #1
slavec
Пользователь
 
Регистрация: 01.02.2009
Сообщений: 24
По умолчанию Количество элементов в массиве

Подскажите пожалуйста, как узнать количество элементов в массиве?

Код:
int bubbleSort(int *arr){
    int i;
    int cnt;
    
    cnt = sizeof(arr);
    printf("Array size: %d\n",cnt);
    
}

int main(int argc, char *argv[])
{
    int arr[9];
    int counter;
    
    for (counter=0;counter<10;counter++){
        printf("%d Ievadiet masiva elementu numurs %d \n",counter,counter+1);
        scanf("%d",&arr[counter]);
        }
    system("cls");
    for (counter=0;counter<10;counter++){
        printf("Masiva elements Nr. %d: %d \n",counter+1,arr[counter]);
    } 

    bubbleSort(arr) ;
    system("PAUSE");
    return EXIT_SUCCESS;
}
slavec вне форума Ответить с цитированием
Старый 27.02.2011, 02:36   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
как узнать количество элементов в массиве?
Что значит, как узнать???
Вот же
Цитата:
Код:
 int arr[9];
Значит 9
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 27.02.2011, 14:16   #3
slavec
Пользователь
 
Регистрация: 01.02.2009
Сообщений: 24
По умолчанию

А если после первого for сделать
Код:
arr[10]=435345;
Как сделать чтобы в переменной cnt было количество элементов.
slavec вне форума Ответить с цитированием
Старый 27.02.2011, 14:27   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

передавайте длину массива отдельным параметром.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2011, 14:44   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
Сообщение от slavec Посмотреть сообщение
А если после первого for сделать
Код:
arr[10]=435345;
Как сделать чтобы в переменной cnt было количество элементов.
У int arr[9] элементы идут от 0 до 8, а вы тут вылезете за пределы массива и программа или упадёт, или будет глючить.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 27.02.2011, 17:29   #6
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

sizeof(arr)/sizeof(arr[0])
с вектором проще vec.size();
onewho вне форума Ответить с цитированием
Старый 27.02.2011, 19:44   #7
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

И ещё так sizeof(arr)/sizeof(int).
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 28.02.2011, 03:20   #8
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
sizeof(arr)/sizeof(int)
такой код опасней... при изменении типа arr, придётся менять и эту строку.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 28.02.2011, 08:33   #9
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
int n=10;
int *a=new int[n];
//n- количество элементов в массиве
еще есть такой вариант
Код:
int n=10;
int *a=new int[n+1];
a[n]=n;
:D
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 28.02.2011, 11:46   #10
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Есть ещё один вариант. Работает только в C стандарта C99 и выше.
Код:
int n=10;
int arr[n];
//далее работаем с arr как с обычным массивом.
Цитата:
еще есть такой вариант
не учи человека впустую переводить память
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13
количество повторяющихся элементов в массиве Андрей.12 Помощь студентам 1 28.01.2010 23:57
В массиве A, состоящем из 10 элементов, подсчитать количество положительных элементов Alex61 Помощь студентам 5 16.05.2009 23:06
Количество элементов в массиве skit Общие вопросы C/C++ 3 18.03.2009 21:56
Количество элементов в динамическом массиве lytkin Общие вопросы Delphi 8 21.02.2007 14:50