Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массив записей

Автор: -=АнЮтА=- 3.06.2007 15:30

    Program mas_rec;
uses crt;
type rec=record
nam:string[20];
snam:string[15];
nom:integer;
end;
var zap:rec;
i,n:integer;
m:array[1..n] of zap;
begin
end.

При такой форме записи ругается на неизвестное n. Сама понимаю что в записи ошибка, но как сделать возможность n-мерного массива не могу дотумкать...подскажите плз.... blink.gif

Автор: volvo 3.06.2007 15:43

Ругается как раз не на неизвестное n, а на то, что n - не константа...

Program mas_rec;
uses crt;
type
rec=record
nam:string[20];
snam:string[15];
nom:integer;
end;

const n = 10;
var
zap:rec;
i:integer;
m:array[1..n] of zap;

begin
end.


Ругаться не будет...

P.S.
Кстати, это не n - мерный массив, а одномерный, но длинны n

Автор: -=АнЮтА=- 3.06.2007 15:54

Так я делала. Прошу прошения, неверно сформулировала вопрос. N хочу вводить с клавиатуры. Так ск-ть регулировать длину массива.

Автор: volvo 3.06.2007 16:02

Ну, тогда тебе надо динамический массив:

{$R-}
type
rec=record
nam:string[20];
snam:string[15];
nom:integer;
end;

pmy_array = ^my_array;
my_array = array[1 .. 1] of rec;

var
dyn_array: pmy_array;

begin
readln(n);
getmem(dyn_array, n * sizeof(rec));

{ работать так: }
dyn_arr^[1].nam := ...

{ удалять после окончания работы: }
freemem(dyn_array, n * sizeof(rec));
end.


Автор: -=АнЮтА=- 3.06.2007 16:05

Спасибо) Думаю мне пригодицца)) give_rose.gif