Определение неизвестного количества переменных

Давным-давно я столкнулся с проблемой: если мне нужно сделать небольшую программу, которая использует переменные, как вы определяете неизвестное количество переменных?.

То есть, если у вас есть программа, которая просит пользователя ввести число, то введенное пользователем число — это количество переменных, необходимых в программе. В Java или VB это легко решить, потому что вы можете определять переменные по мере необходимости (на ходу), но паскаль заставляет вас объявлять их ДО запуска основного кода программы, поэтому вы не можете использовать этот трюк.

Я думал о многомерном массиве, но я думаю, что это плохой способ исправить это, потому что, если вы определите меньше «квадратов», чем вам нужно, вы станете коротким, и если вы определите больше, чем вы на самом деле собираетесь использовать, тогда вы собираетесь тратить память...

Итак, как вы определяете неизвестное количество переменных?


person Ashir    schedule 18.04.2012    source источник


Ответы (2)


Вы можете динамически изменять размер массива, используя SetLength

Type 
  TByteArray = Array of Byte;

Var
  Data : TByteArray
  NewSize : Integer;
Begin
  Write('Enter the number of bytes you require: ');
  ReadLn(NewSize)
  SetLength(Data, NewSize);
  ...
End;

Извините за синтаксические ошибки, я не использовал Паскаль более 20 лет. Какой прекрасный язык!

person Chris Taylor    schedule 18.04.2012

Вам необходимо динамически выделять память на основе числа, предоставленного пользователем. Если эта страница верна, вы можете сделать это в FreePascal:

type dynamic_array= array of integer;
var x:dynamic_array;
setlength(x, k);

где k — пользовательский ввод

person Attila    schedule 18.04.2012
comment
TIntegerDynArray и другие подобные массивы dyn предопределены в типах единиц как в FPC, так и в Delphi. Используй это. - person Marco van de Voort; 18.04.2012