Цитата:
Без динамики написать получилось, но возникло несколько вопросов.
1)Если в функции массив входно-выходной параметр, как правильно его описать? в var?
2)Если использовать дополнительно одномерный динамический массив, выделять для него память нужно в самой функции?
И вообще при работе с динамическими массивами освобождать память под них достаточно один раз?
|
Чтобы передавать массив функции в качестве параметра, правильнее всего использовать передавать указатель на массив. В противном случае, программа при каждом вызове функции будет копировать в стек весь массив - либо стека не хватит, либо программа будет работать очень долго.
Про динамические переменные:
Здесь нужно соблюдать строгий порядок работы:
1) Выделяем память.
2) Работаем.
3) Освобождаем память.
Т. е. на каждую операцию new должна в процессе работы должна вызываться соответствующая dispose. (Количество вызовов new и dispose во время работы программы должно совпадать).
При форматировании текста программы удобно придерживаться таких правил:
1) begin и парный ему end должны быть напечатаны с одной горизонтальной позиции - тогда меньше придется искать синтаксических ошибок и проще разбирать код.
2) Даже если тело цикла или условного оператора состоит из одной команды, стоит поставить begin и end - лечит огромное количество ошибок.
И да, чтобы получить быстрый ответ на вопрос "компилятор там-то выдает ошибку", стоит приводить полный и оригинальный текст сообщения об ошибке.