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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2009, 19:08   #1
skit
Новичок
Джуниор
 
Регистрация: 15.03.2009
Сообщений: 2
По умолчанию Количество элементов в массиве

Помогите разобраться:
Есть двухмерный массив чисел типа – double, неизвестной размерности;
Необходимо найти количество строк и столбцов в массиве. Пробовал через sizeof и ARRAYSIZE, но что то не совсем то. Возможно есть какая то библиотечная функция? Или как это можно сделать через функцию в пару строк?
Среда разработки C++Builder 2009, выход через указатели или вектора не предлагать))) надо только через обыкновенный массив.
skit вне форума Ответить с цитированием
Старый 15.03.2009, 20:12   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
double a[14][6];  // массив
int strok,stolb;
strok = sizeof(a)/sizeof(a[0]);  // количество строк
stolb = sizeof(a[0])/sizeof(a[0][0]); // количество столбцов
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 15.03.2009, 20:27   #3
skit
Новичок
Джуниор
 
Регистрация: 15.03.2009
Сообщений: 2
По умолчанию

вроде всё нормально работает, пока дело не доходид до функций.
Код:
//----------------------------------------------
int strok(double A[][3])
{
 return sizeof(A)/sizeof(A[0]);
}
int stolb(double A[][3])
{
 return sizeof(A[0])/sizeof(A[0][0]);
}

double a[2][3];
Edit1->Text=IntToStr(strok(a));
Edit2->Text=IntToStr(stolb(a));
//--------------------------------------------
и получаеться что
Edit1->Text=0 Edit2->Text=3,
а вместо sizeof(A)=48 в функции strok получаеться sizeof(A)=4

Модератор: тег CODE

Последний раз редактировалось MaTBeu; 15.03.2009 в 22:58.
skit вне форума Ответить с цитированием
Старый 18.03.2009, 21:56   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

О что придумал ) Хотя, наверное, все-таки, изобрел велосипед.. Но не суть.

Код:
template <size_t lstr, size_t lstb>
int strok(const double (&A)[lstr][lstb])
{
 return lstr;
}

template <size_t lstb>
int stolb(const double A[][lstb])
{
 return lstb;
}
Использование:
Код:
double a[14][7];

cout<<strok(a)<<endl;
cout<<stolb(a)<<endl;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 18.03.2009 в 22:03.
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив из N элементов (чисел),определить количество элементов кратных 3. Woha Общие вопросы C/C++ 2 08.12.2008 13:12
вычислить сумму отрицательных элементов в массиве only_win Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2007 15:22
количество элементов матрицы, больших среднего арифмитического всех её элементов finch Помощь студентам 3 27.08.2007 15:48
Количество элементов в динамическом массиве lytkin Общие вопросы Delphi 8 21.02.2007 14:50