Пиши Дома Нужные Работы

Обратная связь

В Паскале, кроме простых типов данных (integer, real, char и т.д.), имеются и сложные типы. К ним относятся массивы.

Массив (array,от французского – сплошной) – это область памяти, в которой размещается совокупность конечного числа данных одного типа с одним именем. Каждый элемент такой совокупности обозначается именем массива с индексом (номером элемента в массиве).

Элемент массива – отдельная переменная, входящая в массив;

Индекс (index) – это числовая константа или целочисленное арифметическое выражение (частный случай - целочисленная переменная), которым снабжаются элементы массива, чтобы отличать их друг от друга.

Индекс элемента массива – номер элемента в массиве.

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

a11 a12 a1n
a21 a22 a2n
am1 am2 amn

В зависимости от количества используемых индексов, массивы могут быть одномерные (строка), двухмерные (таблица), трехмерные и т.д.

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

В двухмерном массиве – два индекса, для строк и граф.

Размерность массива определяется количеством индексов.

Размермассива – диапазон изменения индексов массива.

Размер одномерного массива – количество элементов, которое содержит массив.

Размер двухмерного массива - количество элементов в сроках и графах таблицы и т.д.

Описание массивов:

Описание массива  
1 способ 2 способ  
одномерный: Type t=array[1..n] of тип; Var a:t; Var a: array[1..n] of тип;
двухмерный Type р=array[1..n,1..m] of тип; Var a:р; Var а=array[1..n,1..m] of тип;
трехмерный Type р=array[1..n,1..m,1..k] of тип; Var a:р; Var a=array[1..n,1..m,1..k] of

Пример описания одномерного массива размерностью 20:



type mas=array[1..20] of integer; var a : mas; mas – имя типа, a – имя переменной типа массив. Границы изменения индексов - от 1 до 20, т.к. размерность 20 элементов
const mas : array [1..7] of byte=(31,–7,4,3,25,–3,2); Массив, объявленный как константа, т.е. совмещается объявление массива и занесение в него констант.

Следует помнить, что значением переменной a является весь массив!

Элемент массива обозначается указанием имени массива, за которым в квадратных скобках следует индекс массива. Например, a[1] – первый элемент одномерного массива; с[5] – пятый элемент одномерного массива; a[i] – i-тый элемент одномерного массива или для двухмерных массивов: с[1,5] – пятый элемент первой строки массива; a[i,j] – j-тый элемент i-й строки двухмерного массива.

В двухмерном массиве первый индекс - номер строки, второй - номер столбца.

Двухмерные массивы иногда называют матрицами. Двухмерные массивы могут быть прямоугольными (количество строк и столбцов разное) или квадратными (одинаковое количество строк и столбцов). В двухмерных массивах элементы, у которых номер строки совпадает с номером столбца, называются диагональными или элементами главной диагонали. Главная диагональ начинается с первой с роки первого столбца и заканчивается на последней строке последней графы. Кроме главной диагонали существует побочная диагональ - с последней графе первой строки до первой графы последней строки.

Базовые алгоритмы работы с одномерными массивами

Будем считать, что объявили массив из 10 элементов, тип элементов в данном случае значение не имеет:

1. заполнение одномерного массива:

Ø заполнение с клавиатуры:

for i:=1 to 10 do

begin

writeln (‘Введите значение элемента’);

readln(a[i]);

end;

Ø заполнение случайным образом:

for i:=1 to 10 do

a[i]:=random(n); {n должно быть задано заранее}

заполнение натуральными числами:

for i:=1 to 10 do

a[i]:=i;

Ø поменять местами два заданных элемента массива:

c:=a[i]; a[i]:= a[j]; a[j]:=c;

Ø заполнение по формуле (например, ai=sin i):

for i:=1 to 10 do

a[i]:=sin(i);

2. вывод массива на экран:

for i:=1 to 10 do

writeln (‘элемент ’, i, ‘ массива ’,a[i]);

3. нахождение суммы элементов одномерного массива:

s:=0;

for i:=1 to 10 do

s:=s+a[i];

4. подсчёт количества элементов, удовлетворяющих заданному условию (например, положительных элементов):

k:=0;

for i:=1 to 10 do

if a[i]>0 then k:=k+1;

5. поиск максимального элемента одномерного массива и его номера:

max:=a[1];

n:=1;

for i:=2 to 10 do

if a[i]>max then begin max:=a[i]; n:=i; end;

Задача MaxMin. Программа для поиска максимального и минимального элемента массива, с указанием их номеров (maxmin.pas).

program maxmin;

uses crt;

var a: array[1..5] of integer; i,max,nmax,min,nmin:integer;

begin

clrscr;

for i:=1 to 5 do { ввод данных }

begin writeln ('Введите значение элемента');

readln (a[i]);

end;

for i:=1 to 5 do { выдача массива на экран } writeln (a[i]:7);

nmax:=1; { задание начальных значений }

max:=a[1];

nmin:=1;

min:=a[1];

for i:=1 to 5 do{ нахождение минимума и максимума}

if a[i]>max then begin max:=a[i]; nmax:=i; end;

if a[i]<min then begin min:=a[i]; nmin:=i; end;

end;

writeln ('Максимальный элемент=',max);

writeln ('Номер максимального элемента=',nmax);

writeln ('Минимальный элемент=',min);

writeln ('Номер минимального элемента=',nmin);

repeat until keypressed; end.

Сортировка массивов

Сортировка массива – это упорядочение по возрастанию/убыванию значений его элементов.

Сортировка методом «пузырька»

Сущность метода: Начиная с 1-го или последнего элемента, производится попарное сравнение элементов и, если предыдущий больше последнего, то они меняются местами. Фрагмент.

for i:=1 to n-1 do

for j:=i+1 to n do

if f[j]<f[i] then

begin

a:=f[i];

f[i]:=f[j];

f[j]:=a;

end;

Сортировка методом выбора

Сущность метода: Находится минимальный элемент, затем 1-ый и минимальный меняются местами, затем ищется минимальный со 2-го по последний и 2-ой с минимальным меняются местами и т.д.

Задача: Сдвинуть элементы массива влево на одну позицию.

uses crt;

const n=10;

var a: array[1..n] of integer;i, c:integer;

begin

for i:=1 to n do { заполнение массива и его вы вод на экран}

begin

a[i]:=random(50); write (a[i]:5);

end;

c:=a[1];

for i:=1 to n-1 do a[i]:=a[i+1];

a[n]:=c; writeln;

for i:=1 to n do write(a[i]:5);

repeat until keypressed; end.

Поиск элемента в упорядоченном массиве

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

Поиск ведется методом дихотомии.

Алгоритм:

Находится округлённое значение полусуммы начальных и конечных индексов массива, т.е. индекс среднего элемента.

Вводится искомая величина (m) и сравнивается со средним элементом. Если a[i]>m, то заданный элемент – в левой половине и поэтому индекс k правой границы устанавливается =i, иначе искомый элемент в правой половине и сдвигается начальный индекс p и p:=i.

Процесс повторяется пока (k-p)<=1, т.е. пока p и k не сдвинутся вплотную. При этом величина искомого индекса =p.

Примеры программ:

Задача. Из массива a составить массив b, который содержит только чётные элементы массива a.

program massiv1;

uses crt;

type mas=array[1..5] of integer;

var a,b:mas; i,k,nmin:integer; min:integer;

begin

clrscr;

textcolor (15);

for i:=1 to 5 do {Блок заполнения массива}

begin

writeln ('Введите значение элемента');

readln (a[i]);

end;

k:=0;

for i:=1 to 5 do if a[i] mod 2=0 then {Поиск чётного элемента}

begin k:=k+1; b[k]:=a[i]; end; {Формирование нового массива}

if k=0 then

begin textcolor (12); writeln ('Чётных элементов нет.'); writeln ('Формирование нового массива невозможно!');

end

else begin nmin:=1; min:=b[1]; {Поиск минимального в новом массиве}

for k:=1 to k do if b[k]<min then

begin min:=b[k]; nmin:=k; end;

for i:=1 to 5 do {Вывод элементов массива а}

begin textcolor (14); writeln ('Элемент ',i, ' массива a ',a[i]);

end;

for i:=1 to k do {Вывод элементов массива b}

begin

textcolor (9); writeln ('Элемент ',i, ' массива b ',b[i]);

end;

textcolor (10);

writeln ('Минимальный элемент среди чётных элементов массива=',min);

writeln ('Номер этого элемента=',nmin);

end;

repeat until keypressed; end.






ТОП 5 статей:
Экономическая сущность инвестиций - Экономическая сущность инвестиций – долгосрочные вложения экономических ресурсов сроком более 1 года для получения прибыли путем...
Тема: Федеральный закон от 26.07.2006 N 135-ФЗ - На основании изучения ФЗ № 135, дайте максимально короткое определение следующих понятий с указанием статей и пунктов закона...
Сущность, функции и виды управления в телекоммуникациях - Цели достигаются с помощью различных принципов, функций и методов социально-экономического менеджмента...
Схема построения базисных индексов - Индекс (лат. INDEX – указатель, показатель) - относительная величина, показывающая, во сколько раз уровень изучаемого явления...
Тема 11. Международное космическое право - Правовой режим космического пространства и небесных тел. Принципы деятельности государств по исследованию...



©2015- 2024 pdnr.ru Все права принадлежат авторам размещенных материалов.