Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2009, 20:52   #1
Pihan
Пользователь
 
Аватар для Pihan
 
Регистрация: 09.12.2008
Сообщений: 26
Вопрос динамическая память на паскале

вот написал задачку но еще не до конца, толька появилась проблема почемуто она один раз запускается, а на следующий раз просто закрывается паскаль.... может я что то не так сделал?

Код:
uses crt;
const n=20;
type mas = array [1..n] of integer;
     adr = array [1..n] of ^integer;
var P1:^mas; i,j:integer;
    p2:^adr;

begin clrscr; randomize;
  if MaxAvail>Sizeof(mas) then               
          begin    New(p1);
             writeln('ishodnui massiv');
       for i:=1 to n do
       begin
    P1^[i]:=random(100);
    write(p1^[i],' ');
      end;
 j:=0;
     for i:=1 to n do
         if p1^[i] mod 2=0 then begin
                   inc(j); p2^[j]:=@p1^[i];
                                end;

    end
  else writeln('  Razmer maximsknoi dinamicheskoi pamyati=',MaxAvail);
readln;
end.

Последний раз редактировалось Stilet; 15.07.2009 в 08:43.
Pihan вне форума Ответить с цитированием
Старый 14.07.2009, 22:10   #2
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Не понятно почемц работает первый раз, но не работает второй, но вот у выс написано так:
Код:
if MaxAvail>Sizeof(mas) then 
begin New(p1);
А почему нигде нету
Код:
New(p2)
?
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 14.07.2009, 22:36   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вообще что-то мудрено, по-моему надо так.
Код:
uses crt;
const n=20;
type mas = array [1..n] of integer;
adr = array [1..n] of ^integer;
var P1,p2:^mas; i,j:integer;
begin clrscr;
randomize;
if MaxAvail>Sizeof(mas) then 
 begin
  New(p1);
  New(p2);
  writeln('ishodnui massiv');
  for i:=1 to n do
   begin
    P1^[i]:=random(100);
    write(p1^[i],' ');
   end; readln;
  j:=0;
  for i:=1 to n do
  if p1^[i] mod 2=0 then
   begin
    inc(j);
    p2^[j]:=p1^[i];
   end;
  writeln('izmenennyj massiv');
  for i:=1 to j do
  write(p2^[i],' ');
 end
else writeln(' Razmer maximsknoi dinamicheskoi pamyati=',MaxAvail);
dispose(p1);
dispose(p2);
readln;
end.
puporev вне форума Ответить с цитированием
Старый 17.07.2009, 15:01   #4
Pihan
Пользователь
 
Аватар для Pihan
 
Регистрация: 09.12.2008
Сообщений: 26
По умолчанию

вот оно что! теперь все понял
Pihan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память!!! Doholyan Паскаль, Turbo Pascal, PascalABC.NET 12 30.06.2009 17:11
динамическая память aka_faith Общие вопросы C/C++ 47 12.06.2009 12:35
Динамическая память. Пaвeл Помощь студентам 16 31.05.2009 21:16
Динамическая память liver1981 Общие вопросы C/C++ 5 22.04.2009 09:16
Динамическая память MadDog__ Помощь студентам 2 22.11.2007 00:05