Описание, объявление и заполнение массивов (матриц)

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

Итак, начнём с видов описания одномерного массива (при описании массивов будет использоваться базовый тип integer (-32768..+32767)):

1) описание в разделе констант:
const a: array[1..10] of integer=(31,546,61,9876,-35,654,1,0,90,-429);

2) описание в разделе var (раздел описания переменных):
var a: array[1..10] of integer;

3) описание типа массив в разделе описания типов или type:
type a=array[1..10] of integer;

Заполнение массивов:

1) заполнение одномерного массива посредством генератора случайных чисел, состоящего из 10-ти элементов и описанного в разделе описаний переменных:

Код Pascal
var a: array[1..10] of integer; i: byte;
begin
randomize   {процедура, которая служит для инициализации (или как ещё называют раскачки) генератора случайных чисел}
for i:=1 to 10 do
begin
a[i]:=random(19);   {функция, генерирующая случайное число от нуля до 18:  random(n+1)} 
write(a[i],'     ');
end;
end.

2) прямое заполнение массива через ввод с клавиатуры с помощью команд read/readln (на этот раз опишем тип массив и переменную данного типа):
type a=array[1..10] of integer; 
var b: a; i: byte;  {переменная i выполняет роль счётчика цикла с параметром, т.е. for}
begin
writeln('введите значения элементов одномерного массива: ');
for i:=1 to 10 do begin
  write('a[',i,'] = ');
  readln(a[i]);   {вот здесь, собственно, и осуществляется ввод очередного значения элемента массива}
end;
end.

3) метод присваивания элементам массива определённых значений с помощью оператора присваивания ":=":
var a: array[1..10] of integer; i: byte;
begin
a[1]:=25;
a[2]:=-65;
a[3]:=0;
a[4]:=12;
a[5]:=-968;
a[6]:=-459;
a[7]:=-21;
a[8]:=54;
a[9]:=901;
a[10]:=2890;
for i:=1 to 10 do   {вывод значений элементов массива на экран}
write(a[i],'    ');    
end.

4) заполнение массива по определённому закону, т.е. с помощью формул:
допустим что очередной элемент массива будет равен разности квадратов двух предыдущих элементов, т.е. a=sqr(a[i-1])-sqr(a[i-2]): [PAS]var a: array[1..10] of integer; i: byte; begin a[1]:=2; {т.к. у нас формула a[i]=sqr(a[i-1]) - sqr(s[i-2]), то понятно, что 1-й и 2-й элементы не будут иметь двух предыдущих элементов, и поэтому мы их заполним с помощью оператора присваивания} a[2]:=3; write(a[1],' ',a[2],' '); for i:=3 to 10 do begin a[i]:=sqr(a[i-1]) - sqr(a[i-2]); write(a[i],' '); end; end.
Существуют ещё несколько способов заполнения массивов, но об этом потом.
Надеюсь моя тема, оказалась полезной и информативной для непросвещённых.

Добавлено через 11 часов 25 минут
5) импорт данных (двоичный типизированный/нетипизированный, текстовый):
для начала рассмотрим двоичный типизированный файл:
т.к. мы считываем инф. из файла, то необходимо его заполнить с помощью следующей программы:
var a: file of integer; i,k: integer;
begin
assign(a,'file.bin');   {установка связи файловой переменной типа integer с двоичным типизированным файлом (содержит элементы типа integer, поэтому типизированный, т.е. тип данных уже определён)}
rewrite(a);  {открываем файл посредством файловой переменной для записи}
for i:=-4 to 5 do   {записывать будем абсолютные значения от -4 до -1 и квадраты значений от 0 до 5}  
begin
if i<0 then k:=abs(i)
else k:=sqr(i);
write(a,k);
end;
close(a);   {обязательно закрываем этот файл после работы с ним}
end.

А вот и программа считывающая данные из файла в ячейки массива:
var a: file of integer; i: byte; mas: array[1..10] of integer;
begin
assign(a,'file.bin');
reset(a);   {открываем файл для чтения}
for i:=1 to n do   {считываем очередное значение в ячейку массива и выводим его на экран}
begin
read(a,mas[i]);
write(mas[i],'   ');
end;
close(a);
end.

Теги:
массив, матрица
Добавлено: 21 Сентября 2013 01:43:41 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...