Другие языки программирования и технологии
Вопрос про массивы в паскале
Насколько я помню, массивы задаются в блоках var или type. Можно ли задать массив из n-элементов, причем n вводится с клавиатуры readln'ом? var и type не могут стоять после begin, а readln до begin. Никак не получается сделать такой массив( Пытался так сделать: program name; function mas (n:integer); var a:array [1..n] of integer; end; begin readln (n); mas; readln; end. Всё равно не выходит. Помогите, пожалуйста.
"Можно ли задать массив из n-элементов, причем n вводится с клавиатуры readln'ом? "
Да. Легко. Это динамические массивы, они объявляются иначе. Однако в стандартном Pascal это все же нечто "присобаченное" его создателем.
Например,
type Tm=array[1..10000]of integer; var T:^Tm; K:word;
begin
readln(K); getmem(T,K*sizeof(integer));
...
freemem(T,K*sizeof(integer));
end.
При этом обращение к элементу массива будет T^[ i]
Размер 10000 тут - липовый, фактически массив будет состоять из K элементов и занимать соответственно памяти.
Да. Легко. Это динамические массивы, они объявляются иначе. Однако в стандартном Pascal это все же нечто "присобаченное" его создателем.
Например,
type Tm=array[1..10000]of integer; var T:^Tm; K:word;
begin
readln(K); getmem(T,K*sizeof(integer));
...
freemem(T,K*sizeof(integer));
end.
При этом обращение к элементу массива будет T^[ i]
Размер 10000 тут - липовый, фактически массив будет состоять из K элементов и занимать соответственно памяти.
А где Begin в функции. Он должен стоять после слова var bи обьявлять начало программы.
скажу как сам знаю. массив описывается в начале основной программы (не в функции) и нигде больше, при этом желательно знать заранее длину массива... длину массива нельзя ввести с клавиатуры, лучше описать массив максимальной возможной длины, а потом использовать нужное число элементов. описать массив можно разными способами... в разделе type задается тип, можно придумать свой тип. длину массива лучше задавать в разделе const, чтобы потом в программе по сто раз не менять значения, а только один раз.
например массив из целых чисел длины 50.
const n=10;
var a: array[1..n] of integer;
или массив записей
const n=20;
type rec=record
date,month,year:integer
end;
var a: array[1..n] of rec;
или если ты в функции или процедуре используешь какой-то массив, то полность описать его типом, а в описании функции или процедуры просто подставить название типа.
type mas=array[1..n,1..m] of real;
var a:mas;
....
function dfdk(t:mas):boolean;
...
вот так
например массив из целых чисел длины 50.
const n=10;
var a: array[1..n] of integer;
или массив записей
const n=20;
type rec=record
date,month,year:integer
end;
var a: array[1..n] of rec;
или если ты в функции или процедуре используешь какой-то массив, то полность описать его типом, а в описании функции или процедуры просто подставить название типа.
type mas=array[1..n,1..m] of real;
var a:mas;
....
function dfdk(t:mas):boolean;
...
вот так
var a:array[1..10000{сюда вводите большое число, например, 10000}] of integer;
n:integer;
begin
writeln('Vvedite kol-vo elementov massiva');
readln(n);
{Дальнейший текст программы}
n:integer;
begin
writeln('Vvedite kol-vo elementov massiva');
readln(n);
{Дальнейший текст программы}
Похожие вопросы
- Аналог ассоциативного массива в Паскале.
- Разработать программу анализа или преобразования массива в Паскале
- Помогите плиз с массивом по паскалю!!))никак не могу решить(((
- двумерный динамический массив в паскале
- Массивы в паскале
- Помогите,пожалуйста,решить задачу на двумерные массивы,в паскале.(задача вн.)Спасибо.
- 2. Отсортировать массив из n чисел и подсчитать количество уникальных чисел в массиве. на паскале
- вопрос по массивам паскаль
- Двумерный массив/Турбо паскаль/нужна помощь=( А(12)Заменить отрицательные элементы стоящие на чётных местах цифрой 8.
- Как задать двумерный динамический массив в Паскале?
for i:=1 to K do begin
readln (T^);
end;
так?
И можете написать для чего служит getmem и freemem?
for j:=1 to K do begin
readln (T^[j]);
end;