Другие языки программирования и технологии

как в Паскале лучше объявить массив, если количество элементов заранее неизвестно? пожалуйста, очень срочно надо!!

Костя воробей: "ну масив задаётся оператором For..."
Давай по новой, Костя.. . Все хуйня!

По теме: есть небольшой трюк:

program vasya;
{$R-} { директива для отключения проверки границ массива }
type
TDynArray = Array[1..1] of Integer; { создаем новый тип - массив на один элемент типа int (может быть и другой тип) }
var
a: ^TDynArray; { объявляем указатель типа TDynArray }
m: Integer;
begin
{ здесь ваш код, в результате которого вычисляется длина массива, и заносится в переменную m }
GetMem(a, SizeOf(Integer) * m); { выделяем память под m ячеек массива }
{ здесь ваш код обращения к ячейкам массива. пример: a^[0] := 100; a^[1] := -200; k := a^[0]; }
FreeMem(a, SizeOf(Integer) * m); { не забываем освободить память из-под массива после его использования }
end.
Alexey Kyzovatkin
Alexey Kyzovatkin
7 465
Лучший ответ
Free Pascal поддерживает динамические массивы:
a : array of integer;
...
setlength(a,x);
ZZ
Z Z
59 611
Это динамический массив. На тебе всё про них. (www . delphisources . ru / pages / faq/base / create_dyn_array . html - делфи) ( www . delphisources . ru / pages / faq/base / create_dyn_array.html паскаль) пробелы убери.
Это отлично реализовано в тех языках где есть коллекции. Массив не может иметь переменное число элементов. Строка - да, может. Но только потому что каждый раз пересоздаётся заново. Вот и вам чтобы записать ещё 1 элемент придётся создать массив заново с бОльшей длиной. Чтобы это не тормозило а наоборот ускоряло процесс нужно реализовать расширение массива так как сделано в коллекциях. Но насколько это реализуется в супер-языке Паскаль? Боюсь ни на сколько.
Андрей Сальков
Андрей Сальков
10 716
ну масив задаётся оператором For
For i:=1 to n do begin
end;
(n это количество элементов)
незабудь в варе прописать переменну "i"
и
Не факт, что получится. Видятся следующие варианты:

1. Использовать максимальный размер массива не забывая, что паскаль не может использовать всю память.

2. Хранить данные в файле.

3. Динамический массив

Похожие вопросы