IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 1.06.2007 16:54
Сообщение #2


Гость






Проблем не было, потому что я не стал делать:

for i := 1 to n do dispose(x^[i]); { <--- Вот это ...}
dispose(x);
Как только ты это добавишь, проблема сразу проявится...

А если не добавлять - то... Однако, у тебя сейчас утечка памяти в программе smile.gif Попробуй добавить пару memavail:

begin
writeln('Доступно памяти: ', memavail);
new(x);

{ здесь - все как и было раньше ... }

dispose(x);
writeln('Доступно памяти: ', memavail);
end.

и сравни 2 значения... Вот и memory leak...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 5.07.2025 20:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"