ТОП 10:

Для обращения к элементу массива надо указать имя массива и порядковый номер элемента (индекс).



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

 

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

а[i] а[i+1] a[i+2] а[i+3] ...

 

При работе с массивами нужно придерживаться следующей схемы:

1) объявление массива;

2) ввод массива, задание начальных значений элементам массива;

3) работа с элементами массива;

4) вывод результатов.

 

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

Перед использованием массив, как и любая переменная, должен быть объявлен в разделе объявления переменных. В общем виде объявление массива выглядит так:

имя: array [нижний _индекс … верхний_индекс]ofтип переменных

Где:

-имя – имя переменной массива;

- array - ключевое слово, обозначающее, что переменная является массивом;

- нижний-индекс и верхний-индекс - целые числа, определяющие диапазон изменения индексов (номеров) элементов массива и, неявно, количество элементов (размер) массива;

- тип - тип элементов массива.

При меры объявления массивов :

Vartemper : array [1..31] of real; -массив из 31 вещественных числа

Var D : array [1..12] of integer; - массив из 12 целых чисел

Varname : array [1..31] of string [25];

Задание начальных значений

Для работы с элементами массива очень удобно использовать цикл. Пусть объявлен массива, состоящий из 5 элементов типа integer. Тогда значения могут быть заданы следующими способами:

С клавиатуры   С помощью Генератора случайных чисел
for i:=1 to 5 do begin write (‘введите число’); readln (a[i]); end; или for i:=1 to 5 do begin write (‘a[‘, i ,’]=’); readln(a[i]); end; Randomize for i:=1 to 5 do begin a[i] := Random(10); write (‘a[‘, i ,’]=’ ,a[i],’ ‘); end;  

 

 

Ввод значений массива по условию:

for i:= 1 to 5 do

Begin

a [i] := 3* i+2;

writeln ( a[i] );

end;

 

Работа с элементами массивов

Нахождение суммы (произведения) с поиском.

 

Вычисление суммы элементов.

Summa := 0;

Fori:=1 tondo

Summa := summa + a[i];

 

1.2 Найти сумму положительных элементов массива:

Summa := 0;

Fori:=1 tondo

Ifa[i] >0ThenSumma := summa + a[i];

 

Найти сумму элементов делящихся на 5

Summa := 0;

Fori:=1 tondo

Ifa[i] mod 5 = 0ThenSumma := summa + a[i];

Найти произведение элементов массива стоящих на нечётных местах (чётных)

p := 1

Fori:=1 tondo

Ifi mod 2 = 1Thenp:= p * a[i];

(2 = 0)

 

 

Составные задачи на поиск в массиве.

Найти все элементы массива больше его среднего арифметического

summa := 0;

Fori:=1 tondo

summa := summa + a[i];

Sred_Arif := summa / n

Fori:=1 tondo

Ifa[i] > Sred_Arif Then Writeln ( a[i] );

2.2 Нахождение МАКС/МИН значения массива и его адреса (темпера туры за месяц).

max := а[1]; { max - максимальный, элемент}

Nmax := 1 ; { Nmax- номер макс. элемента}

Fori:=1 tondo

Ifa[i] > max Then ( Ifa[i] < min Then )

Begin

max := a[i];

Nmax := [i];

еnd;

1)если в условии знак > то мы находим максимальный элемент, если знак <то минимальный.

2) если неравенство строгое (>или <) то мы находим первый максимальный или минимальный элемент, а если нестрогое (>=или<=) то последний.

Изменение элементов массива.

Пример: увеличить вдвое каждый элемент массива.

Fori:=1 tondo

a [i] := a[i] * 2;

 

Нахождение количества элементов по условию.

Пример: найти количество чётных элементов массива. Коl:=0;

Fori:=1 tondo

Ifa[i] mod 2 = 0Thenkol:= kol + 1;

 

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

Метод прямого выбора.

For k :=1 to 5 do read(a[k]); {ввод массива}

For i:=to 5-1 do

Begin

min := i;

for c := i + 1 to 5 do

 

if a[c] < a[min] then min := c;

buf := a[i];

a[i] := a[min];

a[min] := buf;

For k :=1 to 5 do write (a[k],’ ‘); {вывод массива}

Writeln;

 

End;

buf- буфер обмена,

с- элемент сравниваемый с минимальным

min - номер минимального элемента в части от i до верхней

границы массива.

k - номер элемента массива.

Принцип поиска:

- просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый на место минимального.

- просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй на место минимального.

- и так далее.

 

Метод «пузырька».

 

For k :=1 to 5 do read(a[k]); {ввод массива}

For i:=to 5-1 do

Begin

for k := i to 5-1 do

Begin

if a[k] > a[k+1] then

Begin

buf := a[k];

a[k] := a[k+1];

a[k+1] := buf;

End;

End;

For k :=1 to 5 do write (a[k],’ ‘); {вывод массива}

Writeln;

End;

Принцип поиска:

Обмен соседних элементов массива. Каждый элемент с первого,

сравнивается со следующим и если он больше следующего, то

элементы меняются местами.

Элементы с меньшими значениями продвигаются к началу, а с

большим значением к концу массива.

Процесс повторяется количество раз на 1 меньше чем элементов в массиве.

Вывод массива.

Fori:=1 tondo Writeln (a[i]); - вывод массива в столбец.

 

Fori:=1 tondo Write (a[i]);-вывод массива в строку.

 

Fori:=1 tondo Writeln (‘a[‘,i,’]=’,a[i]); - вывод массива с указанием номера элемента в столбец.

 

 

Многомерные массивы

Исходные данные для решения многих задач удобно представляются в табличной форме.

Колонки и строки таблицы, как правило, содержат однородную информацию, если использовать терминологию Turbo Pascal - данные одинакового типа. Поэтому в программе для хранения и обработки табличных данных можно использовать совокупность одномерных массивов. Так таблица может быть представлена как совокупность одномерных массивов следующим образом:

array [1..4] of integer; Х[1.1] X[1.2] X[1.3] X[1.4]

array [1..4] of integer; Y[1.1] Y[1.2] Y[1.3] Y[1.4]

array [1..4] of integer; Z[1.1] Z[1.2] Z[1.3] Z[1.4]

 

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

Двумерный массив состоит из строк и столбцов. Каждый элемент двумерного массива можно представить индексированной переменной с двумя индексами:

Х[1.1] X[1.2] X[1.3] X[1.4]

X[2.1] X[2.2] X[2.3] X[2.4]

X[3.1] X[3.2] X[3.3] X[3.4]

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

 

1) Описание массива

В общем виде описание двумерного массива выглядит так:

Имя: array [ Нижняя Граница Индекса 1. . Верхняя Граница Индекса 1,

Нижняя Граница Индекса 2. . ВерхняяГраницаИндекса2] of Тип

Где:

Имя – имя массива;

array - служебное слово обозначающее, что объявляемый элемент является массивом;

Нижняя Граница Индекса 1 . . Верхняя Граница Индекса 1,

Нижняя Граница Индекса2 . . ВерхняяГраницаИндекса2 – целые константы, определяющие диапазоны изменения индексов и, следовательно, количество элементов массива;

Тип — тип элементов массива.

Пример описания массива:

VAR

a : array [1 . . 3, 1 . . 4] of integer;

baza : array[1..3, 1..4] of real;

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

CONST n = 3; m = 4

VAR a : array [1 . . n, 1 . . m] of integer;

baza : array[1..n, 1..m] of real;

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

 

Количество элементов массива может быть вычислено по формуле:

(ВархняяГраницаИндекса1- НижняяГраницаИндекса1+1)* (ВерхняяГраницаИндекса2 – НижняяГраницаИндекса2 +1)

Таким образом, массив a состоит из 12 элементов типа integer.

 

Чтобы обратится к элементу массива, нужно указать имя массива и индексы элемента. Первый индекс соответствует номеру строки массива, второй – номеру колонки. (Каждый элемент массива описывается, как а [i,j] где a-имя массива; i-номер строки;j-номер столбца.) Пример : а [1,1].

Так как границы индексов массива заранее определены, а шаг изменения индекса равен 1, для выполнения однотипных операций со всеми элементами массива удобно использовать цикл со счётчиком (параметром) FOR…TO…DO. При работе с двумерными массивами – вложенные циклы.

Значения элементов двумерных массивов выводят на экран и вводят с клавиатуры, как правило, по строкам, т.е. сначала все элементы первой строки, затем второй и т.д. Это удобно выполнять при помощи вложенных инструкций for . Так как границы индексов массива заранее определены, а шаг изменения индекса равен 1, для выполнения однотипных операций со всеми элементами массива удобно использовать цикл со счётчиком (в случае двумерных массивов вложенные циклы).

Каждый раз, когда внутренний цикл завершается, внешний цикл увеличивает i на единицу, и внутренний цикл выполняется вновь. Таким образом выводятся все компоненты массива.

2) Ввод двумерного массива - задание начальных значений

ввод с клавиатуры:


for i:=1 to 3 do

Begin

for j:=1 to 4 do

Begin

write (‘введите число’);

readln (a[i,j]);

end;

end;

 

 

for i:=1 to 3 do

Begin

for j:=1 to 4 do

Begin

write (‘a[’,I,’,’,j,’]=’);

readln (a[i,j]);

end;

end;


генерация случайных чисел:

Randomize

for i:=1 to 3 do

Begin

for j:=1 to 4 do

Begin

a[i,j] := Random(10);

write (a[i,j] ,’ ‘);

end;

writeln;

end;

используются числа в промежутке от 0 до 9

 

 

Randomize

for i:=1 to 3 do

Begin

for j:=1 to 4 do

Begin

a[i,j] := Random(30)-10;

write (a[i,j] ,’ ‘);

end;

writeln;

end;

Используются числа в промежутке от -10 до 19, (30-количественный диапазон чисел, 10-сдвиг по числовой шкале относительно 0 указывающий с какого числа используются числа.


3)Вывод на экран значения элементов массива по строкам:

For i:=1 to 3 do

Begin

For j:= 1 to 4 do

write ( a[i, j] ‘ ‘) ;

writeln; {перевод курсора на новую строку}

end;

4) Работа с элементами массивов

 







Последнее изменение этой страницы: 2016-04-08; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.207.102.38 (0.017 с.)