Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 5.00
Arcor
4794 / 1795 / 157
Регистрация: 20.11.2009
Сообщений: 5,684
Записей в блоге: 1
#1

Определить длину массива - C++

06.03.2012, 16:55. Просмотров 6546. Ответов 19
Метки нет (Все метки)

Собственно терроризировал вчера весь гугль, ничего кроме такого метода нахождения длины не нашел
C++
1
sizeof(massiv)/sizeof(massiv_typ)
но данная конструкция как-то коряво работает, если массив передавать в функцию, и в гугле нашел, что так работать не будет с массивами которые передаются как параметры функциям

кто знаком с паскалем, там есть функция узнать длину массива обычных стандартных типов это
Pascal
1
Length(massiv)
нужно что-то подобное мне и в с++

Как такое чудо можно организовать?

Кстати все примеры которые видел, с передачей, там передается не только сам массив, но еще и его размер вторым параметром...
Может в этом кроется какой-то своеобразный смысл? Но как по привычке паскалевской, думаю так же узнать размер, нужно для цикла считающего до конца массива...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 16:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить длину массива (C++):

Определить среднюю длину непрерывных участков отрицательных значений элементов массива - C++
в массиве A определить среднюю длину непрерывных участков отрицательных значений элементов буду рад даже ссылкам на подобные задачи

Определить длину и позицию слова, которое имеет наименьшую длину в строке - C++
Определить длину и позицию слова, которое имеет наименьшую длину в строке. Строки Пожалуйста помогите!

Необходимо определить длину каждой строки, определить сколько символив первой и второй строки совпадают - C++
Приветик всем)) Очень нужна помощь. Помогите решить некоторые задачи. 1. Пускай мы имеем массив 5 на 5. Необходимо отсортировать...

Определить длину - C++
Скопировать 6 строк в первый. Определить длину.

Определить длину периода - C++
Помогите плизз с прогой!=) Дано натуральное число n> 1. Определить длину периода десятичной записи дроби 1 / n.

Определить длину строки - C++
Помогите пожалуйста написать следующие операции над строками: - ввести строку с клавиатуры; - метод для вывода строки на...

19
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
06.03.2012, 17:00 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <vector>
#include <iostream>
 
int main( )
{
   using namespace std;   
   vector <int> v1;
   vector <int>::size_type i;
   
   v1.push_back( 1 );
   i = v1.size( );
   cout << "Vector length is " << i << "." << endl;
 
   v1.push_back( 2 );
   i = v1.size( );
   cout << "Vector length is now " << i << "." << endl;
}
1
Arcor
4794 / 1795 / 157
Регистрация: 20.11.2009
Сообщений: 5,684
Записей в блоге: 1
06.03.2012, 17:06  [ТС] #3
ммм, я имел ввиду про стандартные методы, даже не стандартные, а простые, просто не от меня зависит то, что и как я бы это использовал, имеются ограничения при решении задач

Но все равно спасибо
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.03.2012, 17:16 #4
Arcor, В С++ используется std::vector
Тогда размер vector::size
0
primuspd
4 / 4 / 0
Регистрация: 11.08.2011
Сообщений: 62
06.03.2012, 17:18 #5
что значит "длину массива"?

длинна массива по количеству элементов определяется при объявлении. Вектора, как в примере выше, если ты не знаешь сколько у тебя будет элементов, тогда через вектор.

А если тебе надо узнать, сколько байт занимает массив, то

sizeof(<тип элементов массива>) * <количество элементов>
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
06.03.2012, 17:19 #6
Цитата Сообщение от go Посмотреть сообщение
В С++ используется std::vector
ну или std::array
0
Arcor
4794 / 1795 / 157
Регистрация: 20.11.2009
Сообщений: 5,684
Записей в блоге: 1
06.03.2012, 17:30  [ТС] #7
Цитата Сообщение от primuspd Посмотреть сообщение
длинна массива по количеству элементов определяется при объявлении
а если это динамический массив?, извините если я говорю сленгом паскаля, может тут не так оно называется...
Цитата Сообщение от primuspd Посмотреть сообщение
sizeof(<тип элементов массива>) * <количество элементов>
нужно только обратная операция... найти кол-во элементов
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
06.03.2012, 17:39 #8
Цитата Сообщение от Arcor Посмотреть сообщение
а если это динамический массив?, извините если я говорю сленгом паскаля, может тут не так оно называется...
А вы, когда память выделяете разве не указываете то самое количество памяти?
0
Arcor
4794 / 1795 / 157
Регистрация: 20.11.2009
Сообщений: 5,684
Записей в блоге: 1
06.03.2012, 17:49  [ТС] #9
Цитата Сообщение от fasked Посмотреть сообщение
А вы, когда память выделяете разве не указываете то самое количество памяти?
Цитата Сообщение от Arcor Посмотреть сообщение
если массив передавать в функцию
а если я например хочу скажем функцией сосчитать сумму элементов, и отвязать функцию от конкретных размерностей, что массив будет равен 2 элементам, или будет равен 1 000 000 элементам - функция должна будет мне сосчитать... вот и нужно мне же будет в функции моей досчитать до скольки-то, и перебор сложить меж собой. А массив который я передам он будет иметь конкретный размер уже
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
06.03.2012, 17:50 #10
Arcor, делайте так
C
1
int func(int array[], int lenght) {...}
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.03.2012, 17:52 #11
Цитата Сообщение от Arcor Посмотреть сообщение
А массив который я передам он будет иметь конкретный размер уже
Только так
C++
1
2
for ( auto &i : arr )
   total += i;
0
Arcor
4794 / 1795 / 157
Регистрация: 20.11.2009
Сообщений: 5,684
Записей в блоге: 1
06.03.2012, 17:54  [ТС] #12
вот пример паскалевкого универсального кода...
сама функция подсчета суммы массива любой длины целых чисел
может так будет быстрее понять мою мысль
Delphi
1
2
3
4
5
6
function Sum(A: Array of Integer): Integer;
var i: Integer;
begin
  for i := 0 to Length(A) - 1 do
    Result := Result + A[i]
end;
далее использую функцию

Delphi
1
2
3
4
5
var Massiv: Array[0..99999] of Integer;
begin
// Тут где-то заполняю массив каким-либо методом...
// и вызываю функцию и вставляю в него свой массив, и вывожу результат на экран
WriteLn(Sum(Massiv));
нужно нечто, что не привязывало бы функцию к конкретному размеру!
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
06.03.2012, 17:58 #13
Arcor, и в чем проблема передать вторым параметром размер массива, а в цикле указать этот самый размер. Точно также получится.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.03.2012, 18:05 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main()
{
   int arr[5] = {1, 2, 3, 4, 5}; 
   
   int sum = 0;
   
   for ( auto &i: arr )
      sum += i;
      
   std::cout << sum << std::endl;
}
Добавлено через 3 минуты
Цитата Сообщение от Arcor Посмотреть сообщение
вот пример паскалевкого универсального кода...
Вот пример С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <numeric>
 
template<typename T>
T total(std::vector<T> arr)
{
   return std::accumulate(std::begin(arr), std::end(arr), 0);
}      
 
int main()
{
   std::vector<int> v = { 1, 2, 3, 4, 5 };
      
   std::cout << total(v) << std::endl;
}
http://liveworkspace.org/code/be5eb0...ea52cc76c08079

Добавлено через 2 минуты
Arcor, а вообще для подсчета суммы есть std::accumulate
1
Arcor
4794 / 1795 / 157
Регистрация: 20.11.2009
Сообщений: 5,684
Записей в блоге: 1
06.03.2012, 18:09  [ТС] #15
такое чувство, выше писаный текст никто не читал ...
ладно, раз нету таких примудростей, будем передавать вторым параметром размер... Все же получается привязка, и размер везде, не одном месте придется задавать ручками
не удобно зная один язык, писать в другом тянет постоянно на лад того что знаешь

если у кого-то еще есть идеи, которых нету сверху - просьба выложить

заранее спасибо, и спасибо всем, пытавшимся мне помочь

Добавлено через 45 секунд
Цитата Сообщение от go Посмотреть сообщение
Arcor, а вообще для подсчета суммы есть std::accumulate
да подсчет суммы был просто пример
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2012, 18:09
Привет! Вот еще темы с ответами:

Определить длину строки - C++
Определить длину строки, введенной пользователем, выдать предупреждение если строка слишком длинная (больше 256 символов) Есть это : ...

Определить длину строки - C++
Помогите сделать 2 программы 1)Вводдится строка содержащие пробелы, определить длину строки при помощи &lt;strlen.h&gt; и заголовочного...

Определить максимальную длину слова - C++
Дан символьный массив, образованный из слов, разделенных пробелами. С использованием процедур и функций выполнить: o Определить...

Как определить длину строки - C++
Напишите как в функцию задать например определить длину строки


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
06.03.2012, 18:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru