Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Вниз

Длина столбца   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
2-1256322344
Pascal96
2009-10-23 22:25
2009.12.13
CopyPaste в Borland Pascal 7.0


15-1255856611
POOP
2009-10-18 13:03
2009.12.13
Вопрос про Mathcad


15-1255424698
CoffeMan
2009-10-13 13:04
2009.12.13
Как отобразить GPS координаты в программе


15-1255206608
Юрий
2009-10-11 00:30
2009.12.13
С днем рождения ! 11 октября 2009 воскресенье


2-1256041828
Aleks
2009-10-20 16:30
2009.12.13
TreeView MouseRightClick





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский