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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 08:50   #1
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию free pascal. Заполнить массив array of pointer

Как заполнить массив type TDynArray=array of pointer; случайными числами в порядке неубывания?? И вывести его.
Например: 2 3 3 5 7 7 7 8 9 9
За размер можно взять N=10.
Просто for i:=0 to 9 do
Решетова Алена вне форума Ответить с цитированием
Старый 14.12.2012, 08:59   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

для каждого следующего значение берёте случайное значение не меньшее текущего. т.е. примерно так:

Код:
A[i+1] := A[i] + C*Random;
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 14.12.2012, 09:06   #3
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

Код:
var a:TDynArray;
      i:integer;
      x:^integer;
begin 
setLength(a,10);
 randomize;
 new(x);
 x^:=3;
 a[0]:=x;
 for i:=0 to 8 do begin
  new(x);
  x^:=random(4);
  a[i+1]:=a[i] + x;
  write(a[i],' ');
 end;
end;
Вот тут a[i+1]:=a[i] + x; (16) Error: Operation "+" not supported for types "Pointer" and "^LongInt"
Я по-разному пробовала. И integer(a[i]^) и с х. И вывод разный. И dispose(x) ставила. Всё равно не корректно работает. Без dispose память забивает. А с ним невозможно потом дальше с массивом работать, будто затирается. Мне просто нужен одномерный динамический массив указателей в порядке неубывания.
Я все варианты написания перебрала с приведением типов и с ^



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.12.2012 в 11:05.
Решетова Алена вне форума Ответить с цитированием
Старый 14.12.2012, 09:25   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Вопрос: А зачем Вам вообще динамическая переменная x? в её использовании нет абсолютно никакого смысла.

Код:
var a:TDynArray;
  i:integer;
begin 
  setLength(a,10);
  randomize;
  a[0]:=3;
  for i:=0 to 8 do begin
    a[i+1]:=a[i] + random(4);
    write(a[i],' ');
  end;
end.
проверьте - должно работать.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 14.12.2012, 10:00   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Алёна,

так пробовали?
Код:
type TDynArray=array of pointer;

var a:TDynArray;
      i, n :integer;
      x:^integer;
begin
 WriteLn; Write('How many numbers do you want generate? ');
 ReadLn(n);

 setLength(a,n);
 randomize;
 new(x);
 x^:=3;
 a[Low(a)]:=x;
 for i:=Low(a)+1 to High(a) do begin
  new(x);
  x^:=random(4) + Integer(a[i-1]^);
  a[i]:=x;
 end;

 // вывод содержимого массива на экран
 WriteLn('Nubers are : ');
 for i:=Low(a) to High(a) do
   Write(Integer(a[i]^),' ');
 WriteLn;

 // освободить занимаемую память
    // сначала освободим память, занятую под числа
 for i:=Low(a) to High(a) do
   Dispose(a[i]);

    // а теперь освободим и память, выделенную под массив указателей
 setLength(a,0);

 WriteLn('Done.');
 Readln
end.
p.s. кстати, без X вполне можно обойтись

Последний раз редактировалось Serge_Bliznykov; 14.12.2012 в 11:15.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.12.2012, 06:09   #6
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

Спасибо большое))
Решетова Алена вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу, заполняющую массив случайными числами в диапазоне 0..1000. Free Pascal Praneg Помощь студентам 7 16.11.2012 23:14
Заполнить матрицу случ. числами [Free Pascal] TonyBee Фриланс 5 01.10.2012 18:26
Одномерный массив Free Pascal andrew_tmb Помощь студентам 0 15.12.2011 17:59
Запись в array[0..5000] of Pointer; VintProg Общие вопросы Delphi 3 30.04.2010 16:05