Динамическая память, Помогите доделать программу. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Динамическая память, Помогите доделать программу. |
Neon6868 |
31.05.2007 18:12
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: 0 |
Задание: В основной программе зарезервировать память в куче для размещения 100 вещественных значений.В вектор Х записать указатели на каждое значение. Сформировать случайные вещественные числа и записать их в динамическую память. Считая, что все элементы вектора Х отличны от NIL, описать процедуру uniquex(x), которая в векторе Х все элементы, ссылающиеся на равные числа, заменяет на первый из этих элементов.
Вот программа, но я не могу сделать эту процедуру.Подскажите кто-нибудь как её делать? Код Program DP; type preal=^real; vector=array[1..100] of preal; var x:vector; i:integer; procedure unique(x:vector); var i:integer; mx:real; a:array[1..100] of integer begin end; begin new(x); randomize; for i:=1 to 100 do begin new(x^[i]); x^[i]^:=random(100); write(' ',x^[i]^:5:2); end; dispose(x); end. |
volvo |
31.05.2007 18:44
Сообщение
#2
|
Гость |
Вот так?
Program DP;Только учти, что теперь у тебя будут проблемы при удалении массива... Перед Dispose надо бы освободить память, на которую указывает КАЖДЫЙ элемент массива X, однако у тебя несколько элементов указывают в одну область памяти... Первый из них - удалится нормально, на втором сразу получишь "неправильное действие с указателем"... Что будешь делать? |
Neon6868 |
1.06.2007 16:44
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: 0 |
|
volvo |
1.06.2007 16:54
Сообщение
#4
|
Гость |
Проблем не было, потому что я не стал делать:
for i := 1 to n do dispose(x^[i]); { <--- Вот это ...}Как только ты это добавишь, проблема сразу проявится... А если не добавлять - то... Однако, у тебя сейчас утечка памяти в программе Попробуй добавить пару memavail: begin и сравни 2 значения... Вот и memory leak... |
Текстовая версия | 29.03.2024 15:20 |