![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Длина столбца [D7, WinXP]
Dragon-zla © (2009-10-26 19:26:00)Есть проблема, пишу процедуру по обработке массива.
Для работы необходимо узнать число строк и столбцов.
Массив динамический двумерный.
Число столбцов можно узнать через Length() , а вот как найти число строк?
Кто-нибудь может подсказать как найти?
У меня есть задумка:
n:=2
for i:=1 to n do
begin
//Идет проверка на существование строки
//по идее если есть строка то вернет число иначе ругнется
NumOfRow:=i
inc(n)
end;
Вопрос: можно так? И если можно то как реализовать, чтобы когда кончалась строка, то программа не вылетала, а просто завершала цикл?
Омлет (2009-10-26 22:21:00) [1]Столбец/строка - мы по-разному называем, но это всё условно. Есть просто элементы массива, каждый из которых может иметь свой набор элементов.
Омлет (2009-10-26 22:18:00) [2]> [12] Dragon-zla © (26.10.09 22:13)
> Если я правильно понял, то он берёт нулевой столбец массива
> и смотрит его длину?
Да. Определяем число строк. И, если в массиве есть хотя бы одна строка, берем первую и смотрим длину (ведь подразумевается, что все строки одной длины).
Dragon-zla (2009-10-26 22:13:00) [3]2 Омлет
Большое спасибо всё работает.
Если не сложно объясните пожалуйста алгоритм работы кода.
Если я правильно понял, то он берёт нулевой столбец массива и смотрит его длину?
Омлет (2009-10-26 21:45:00) [4]> [4] Dragon-zla © (26.10.09 21:05)
> Прямоугольная матрица
Если прямоугольная матрица, то число строк:
RowCount := Length(Mas);
Число столбцов:
if RowCount > 0 then
ColCount := Length(Mas[0])
else
ColCount := 0;
sniknik (2009-10-26 21:42:00) [5]> в смысле развеять?
в смысле, докажи, что посылается именно динамический массив.
> Подскажите хотя бы как сделать чтобы программа не завершала работу
не надо писать идитского кода, все остальное полумеры.
Омлет (2009-10-26 21:41:00) [6]Если есть ошибка, почему не приводишь полностью код и описание ошибки?
Омлет (2009-10-26 21:40:00) [7]Что за жуть?
Если есть двумерный массив, то задать число элементов можно так
SetLength(Mas, N);
Для каждого элемента так
SetLength(Mas[x], M);
Либо, для прямоугольного массива
SetLength(Mas, N, M);
Чтение размерности происходит аналогично
Length(Mas) или Length(Mas[x])
Dragon-zla (2009-10-26 21:20:00) [8]>n:=2
>for i:=1 to n do
>begin
>//Идет проверка на существование строки
>//по идее если есть строка то вернет число иначе ругнется
>NumOfRow:=i
>inc(n)
>end;
Подскажите хотя бы как сделать чтобы программа не завершала работу когда начинает измерять несуществующую строку, а просто завершала цикл.
То есть если в массиве 5 строк, а она начинает проверять шестую, программа не вылетает, а просто завершает цикл.
Dragon-zla (2009-10-26 21:12:00) [9]>сомнение есть, что ты туда вообще динамический массив передаешь, развеять бы...
в смысле развеять?
sniknik (2009-10-26 21:09:00) [10]> а вот как найти длину столбца?
> так же. т.е. Length(A[i]);
> в процедуру передается только матрица то есть вид procedure(Array)
сомнение есть, что ты туда вообще динамический массив передаешь, развеять бы...
Dragon-zla (2009-10-26 21:05:00) [11]Прямоугольная матрица Вида Array[i][j] - i - число строк, j - число столбцов
в процедуру передается только матрица то есть вид procedure(Array)
можно использовать в процедуре только формальные и локальные переменные
Число столбцов нахожу через Length() то есть длину строки.
А ещё нужно найти число строк, т.е. их количество
написал код, но он работает только для квадратной матрицы, на прямоугольной вылетает
{RASkov} (2009-10-26 20:36:00) [12]> [2] Dragon-zla © (26.10.09 20:32)
Что такое "строки и столбцы"?
Dragon-zla (2009-10-26 20:32:00) [13]Нет суть в чем - Length() вычисляет длину строки.
Предполагается, что на вход процедуре подается только массив.
Число строк и столбцов она должна найти сама.
Число столбцов легко найти с помощью Length(), т.к. длина строки и есть число столбцов.
а вот как найти длину столбца?
{RASkov} (2009-10-26 20:12:00) [14]> Массив динамический двумерный.
> Число столбцов можно узнать через Length() , а вот как найти
> число строк?
так же. т.е. Length(A[i]);