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

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

Войти
Регистрация
Восстановить пароль
 
 
KamalovRadik
7 / 7 / 2
Регистрация: 10.07.2009
Сообщений: 206
#1

Как найти размерность в массиве С - C++

10.07.2009, 19:47. Просмотров 1189. Ответов 18
Метки нет (Все метки)

Знаю что в одномерном массиве: sezeof(a)/sizeof(a[0])
А как для двухмерного?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2009, 19:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как найти размерность в массиве С (C++):

Как определить размерность массива - C++
Есть такая задача : Найти общие элементы 2-х массивов и записать результат в файл. Как определить размерность 3-го массива , в...

Как увеличить размерность массива? - C++
В процессе отладки программы появилась необходимость увеличить массивы, объявленные ниже, на 4 элемента. Можно ли это сделать в первом и...

Как хранить размерность массива? - C++
Здравствуйте. Мне нужно решить задачу: template < class T, size_t N> std::size_t length(const T (&)) { return N; }; ...

Как поменять размерность массива? - C++
Здравствуйте! Я пытаюсь решить одну задачу, но у меня нет мыслей, как действовать... когда я дохожу к тому, что нужно поменять размерность...

Как изменить размерность матрицы - C++
Помогите плз. Мне нужно просграммно поменять размерность матрицы. Например была матрица mat а должна получиться после определенных...

Как правильно задавать размерность массива? - C++
Всем привет! Есть абстрактный класс Transport(его наследуют 3 класса). Есть класс Garage. Мне нужно в классе гараж создать поле(массив...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
10.07.2009, 19:58 #2
Во первых, "sezeof(a)/sizeof(a[0])" <-- это не правильно!!!
Этим вы узнаёте только размер одного элемента!
int a[n][m],s;
//Размер
s = sizeof(a)*n*m;
0
KamalovRadik
7 / 7 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.07.2009, 20:03  [ТС] #3
sezeof(a)/sizeof(a[0])-всегда работало, но я могу ошибаться
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.07.2009, 20:09 #4
Цитата Сообщение от <Norton> Посмотреть сообщение
Во первых, "sizeof(a)/sizeof(a[0])" <-- это не правильно!!!
Ты о чем вообще? Это классический способ получения размера статического массива. sizeof(a) - размер всего массива в байтах, sizeof(a[0]) - размер первого элемента (одного). sizeof(a)/sizeof(a[0]) получается размер всего массива делим на размер одного элемента и получаем что? Естественно размер (количество элементов) массива.
Цитата Сообщение от KamalovRadik Посмотреть сообщение
sezeof(a)/sizeof(a[0])-всегда работало, но я могу ошибаться
Ты не ошибаешься.
1
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
10.07.2009, 20:14 #5
извините, но у меня этот способ не работает
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.07.2009, 20:15 #6
Например, так:
C++
1
2
3
4
int matrix[10][5];
 
int n = sizeof(matrix) / sizeof(matrix[0]);          // количество строк
int m = sizeof(matrix) / (n * sizeof(matrix[0][0])); // количество столбцов
0
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
10.07.2009, 20:16 #7
пере компилировал, извините , но всё заработало
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.07.2009, 20:16 #8
Цитата Сообщение от <Norton> Посмотреть сообщение
извините, но у меня этот способ не работает
Если ты выделяешь память динамически, то и не будет работать. Этот способ работает для статических массивов.
0
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
10.07.2009, 20:17 #9
У меня в другом проблема была, мне компилятор на:
int a[10][10];
sizeof(a)
выдавал
4
потом это ещё раз скомпилировал, всё нормально
0
KamalovRadik
7 / 7 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.07.2009, 20:19  [ТС] #10
Что значит статистический, а что динамический?

Добавлено через 32 секунды
Так тоже можно?
//Размер
s = sizeof(a)*n*m;

Добавлено через 1 минуту 2 секунды
А как записать массив н-р с n ,если n узнаешь тока в конце?
0
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
10.07.2009, 20:22 #11
статистический - это когда память выделенная под переменную не можеть быть изменена программистом, а динамический - когда программист может сам управлять памятью выделяемой под переменную

Добавлено через 2 минуты 14 секунд
Для двумерного, если вам надо узнать сколько переменных находится в масиве:
n*m
0
KamalovRadik
7 / 7 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.07.2009, 20:22  [ТС] #12
Как задается динамически?
0
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
10.07.2009, 20:24 #13
а если через sizeof:
sizeof(a)/sizeof(a[0][0])/sizeof(a[0][0])
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.07.2009, 20:24 #14
Цитата Сообщение от KamalovRadik Посмотреть сообщение
Что значит статистический, а что динамический?
Динамический массив - массив память под который выделена явно с помощью new или malloc, например
C++
1
2
int n = 5;
int* arr = new int[n];  // массив размером n, память под который выделена динамически в куче
Статический:
C++
1
int arr[5];  // Статический массив, память выделяется в стеке автоматически
Что ты подразумеваешь под размером?
Если количество строк и столбцов - я выше писал как это сделать в посте #6.
Если общее количество элементов то также как и для одномерного:
C++
1
sizeof(matrix) / sizeof(matrix[0][0]);
1
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
10.07.2009, 20:26 #15
извините не скинул

Добавлено через 1 минуту 19 секунд
sшzeof(a)/sizeof(a[0][0]), вот так
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2009, 20:26
Привет! Вот еще темы с ответами:

Как задать размерность одномерного массива - C++
Подскажите, пожалуйста, как задать размерность одномерного массива, чтобы ее можно было менять в зависимости от длины вводимой строки?...

Как из файла прочитать размерность матрицы и её содержимое? - C++
Помогите пожалуйста, ничего не нашёл! Как из файла прочитать размерность матрицы и её содержимое?

размерность массива должна определяться динамически, это как? - C++
Код исходного массива #include &lt;vcl.h&gt; #include &lt;stdio.h&gt; #pragma hdrstop #pragma argsused #include &lt;iostream.h&gt; #include...

Как найти сумму в массиве - C++
дан массив А(50).найти сумму и кол-во нечетных положительных элементов,следующих за первым по порядку нулевым элементом.


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

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

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