Главная страница
    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.47 MB
Время: 0.006 c
2-1256632484
Max1
2009-10-27 11:34
2009.12.13
Имитация зажатия Shift


15-1255699290
ocean
2009-10-16 17:21
2009.12.13
Посоветуйте бесплатный antispy для windows 2003 server?


15-1255893240
Kostafey
2009-10-18 23:14
2009.12.13
SQL: Размышления о хаосе и порядке.


2-1256711630
petvv
2009-10-28 09:33
2009.12.13
Не пойму с запросом


2-1256864358
Тимофей
2009-10-30 03:59
2009.12.13
скриншот заданной области





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский