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