Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.012 c
2-1256295016
pasc_Master
2009-10-23 14:50
2009.12.13
масштабируемость окна в самой среде разработки


15-1255282877
fics)
2009-10-11 21:41
2009.12.13
asm


15-1255817384
POOP
2009-10-18 02:09
2009.12.13
установил TexLive 2008


15-1255284553
Denis123
2009-10-11 22:09
2009.12.13
Проверка сложности пaроля


15-1255680988
TUser
2009-10-16 12:16
2009.12.13
Сейчас. Про интернет в РФ