Форум «Всё о Паскале» _ Теоретические вопросы _ Динамический массив
Автор: sheka 13.01.2011 21:39
Вот несколько вопросов из теории на экзамен.
Задание(Показать/Скрыть)
Цитата
24. Динамическими одномерные массивами. Описание. Определение длины массива. Особенности работы с динамическими массивами. Пример программы по созданию и обработке динамического массива. 25. Программное создание одномерного статического и динамического случайного-ного массива заданного размера. Пример. 26. Программное создание одномерного динамического случайного массива заданного размера. Пример. 27. Поэлементное ввода данных в статический массив. Пример программы на такое введение для статического массива. 28. Поэлементное ввода данных в динамический массив. Пример программы на такое введение для динамического массива. 29. Введение массива слов путем преобразования строки букв в статический массив слов. Пример. 30. Введение массива слов путем преобразования строки букв в динамический массив слов. Пример.
А теперь очередная загадка: Что подразумевается под "Динамический массив"?
Ответ(Показать/Скрыть)
Цитата
Открытый массив.
Если это так, то как можно для него сделать 25? Вроде в TP процедуры SetLength() нет..
Автор: Lapp 14.01.2011 7:04
Шека, я тебя не понял. Что именно ты цитируешь во втором случае?
Цитата(sheka @ 13.01.2011 17:39)
А теперь очередная загадка: Что подразумевается под "Динамический массив"?
Цитата
Открытый массив. Если это так, то как можно для него сделать 25? Вроде в TP процедуры SetLength() нет..
И еще пара вопросов: - почему под динамическим массивом не может пониматься динамический, а под открытым - открытый? - а кто сказал, что нужно ограничиваться рамками TP? Из вопросов это не следует.
Конечно, есть. Но дин. массив - это несколько не то..
Автор: TarasBer 14.01.2011 16:40
Я имел в виду, как заменитель SetLength; Жаль только, что в ТП7 нету ReallocMem; И вообще там менеджер памяти странный.
var p: ^extended; begin GetMem(p, 1); { Dispose(p); { нихрена, будет глюк} Dispose(pointer(p)); {а так нормально} end.
То есть в него зачем-то неявно передаётся тип указателя.
Автор: sheka 15.01.2011 2:23
Цитата
Что именно ты цитируешь во втором случае?
Исправил.
Цитата
- почему под динамическим массивом не может пониматься динамический, а под открытым - открытый?
Не могу знать.
Цитата
- а кто сказал, что нужно ограничиваться рамками TP? Из вопросов это не следует.
Я. Мы Паскаль учим. Просто я как уже и говорил, тов.Препод вроде когда то Дельфи лучше видел. Вот и вопросы у него делфийские. Когда на консультации мы спросили про вопросы с динамическими массивами, то:
Цитата
- Мы, наверное, о разном говорим. Я говорю о тех, которые передаются в подпрограмму. -Открытые, чтоли? -Ну это вы так называете. А они динамические, память под них выделяется динамически, но как-то не так как в других языках, а по особому.
Как-то так, смысл этот, но точно не помню, поэтому к этой цитате сильно не придирайтесь. Короче, видно дядька свои лаги скрывает нашим незнанием и своей лапшой.
Ну... Гуглем переводил, пробежался - вроде для понимания смысла нормально, при чем нашел ошибку только в первом слове и то решил оставить, т.к. так было в задании, так сказать для придания изюминки
Цитата
ЛОЛ. Ещё один перл от препода?
Конечно. Меня очень интересует другой вопрос. Кто так еще их называет?
Цитата
В TP же есть процедура GetMem()
Не то имел ввиду. Вчера очень это все быстро писал. Я хотел сказать, что в как открытый массив передается статистический. И как для него можно сделать такие чудеса?
Не работал с ними никогда. Вчера просмотрел сайт Вольво, там бы еще объяснения к модулю написать. Ну это я так, особо не разбираясь говорю, но было бы замечательно, чтобы и не разбираться ))
Автор: volvo 15.01.2011 2:49
Цитата
Что подразумевается под "Динамический массив"? Ответ Открытый массив.
Это вообще бред, причем полный. Открытый массив - это способ передачи данных в процедуру/функцию, но никак не выделение памяти под эти данные. Память выделяется перед вызовом подпрограммы (статически или динамически - неважно, но она должна быть выделена, иначе воспользоваться "открытым массивом" нельзя).
Так что
Цитата
Если это так, то как можно для него сделать 25?
- вопрос лишенный смысла. Сколько есть в том участке памяти, ссылку на который ты передаешь в подпрограмму, столько и есть.