Тема — Массивы. Типовые задачи обработки массивов — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Тема — Массивы. Типовые задачи обработки массивов

2020-08-20 241
Тема — Массивы. Типовые задачи обработки массивов 0.00 из 5.00 0 оценок
Заказать работу

Тема — Массивы. Типовые задачи обработки массивов

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

Для решения этой достаточно простой задачи мы будем вынуждены ввести 20 имен переменных, что, естественно, очень неудобно. Но ведь чисел может быть гораздо больше, чем 20!

Основное предназначение современных компьютеров — обработка большого количества данных. Очень сложно каждой переменной при этом давать собственное имя и не запутаться. Выходом их этой ситуации является использование более сложных по своей конструкции типов данных — составных (или структурированных). Одним из таких типов являются массивы.

Массив — это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элемента в массиве.

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

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

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

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

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

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

var <идентификатор>: array [<тип индекса>] of <тип компонентов>

Здесь:

- array и of — служебные слова, которые буквально можно перевести как «массив» и «из»;

- <тип индекса> — описание индексации (нумерации) элементов массива. В качестве типа индекса можно использовать любые порядковые типы;

- <тип компонентов> — тип величин, непосредственно составляющих массив.

Приведем несколько примеров описаний:

  1. var day: array [1..365] of integer; — массив, состоящий из 365 целых чисел, которые пронумерованы от 1 до 365;
  2. var tem: array [0..11] of real; — массив, состоящий из 12 вещественных, пронумерованных от 0 до 11;
  3. var ocenka: array [–2..2] of char; — массив, состоящий из 5 символьных переменных с номерами от -2 до 2:
  4. const n=10; var slovo: array [1..n] of string; — n строковых величин, пронумерованных от 1 до n;

Для того, чтобы обратиться к элементу массива, нужно записать имя массива и в квадратных скобках индекс нужного элемента, например, day[100].

Рассмотрим основные приемы работы с массивами.

Заполнение одномерного массива значениями

Задать элементам массива значения мы можем:

— вводя значения с клавиатуры;

— случайным образом из некоторого диапазона;

— по формуле.

Но какой бы способ мы ни выбрали, нам обязательно нужно организовать цикл.

Для начала договоримся, что мы имеем дело с массивом из 10 натуральных чисел (хотя тип элементов в данном случае значения не имеет).

Вывод элементов массива на экран

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

Воспользуемся вторым и третьим способами, рассмотренными выше:

Теперь перейдем к задачам обработки массивов.

Сдвиг элементов массива

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

Таким образом при удалении элемента из массива мы можем получить, например, такую ситуацию. Допустим, имеется массив:

Удалим из него элемент с индексом i=4, т. е. a[1]=a[1], a[2]=a[2], a[3]=a[3], a[4]=a[5], a[5]=a[6], a[6]=a[7]. А вот для последнего элемента a[7] новое значение взять неоткуда. Он сохранит свое значение. Получим:

Чтобы избежать такого дублирования последнего элемента обычно на его место ставят число 0.

Программа удаления элемента из массива на языке Паскаль может выглядеть следующим образом:

Сложнее обстоит дело со вставкой элемента внутрь массива. Как мы сказали, при вставке все элементы, расположенные справа от места вставки, сдвигаются вправо. Последнему же элементу сдвигаться некуда, и он пропадет. Чтобы этого не произошло, нужно увеличить размерность массива на 1. Но учесть это надо при описании массива. Второй важный момент заключается в том, что сдвиг значений мы будем производить справа налево до заявленной позиции вставки:

Реверс массива

Реверс массива — это перестановка его элементов в обратном порядке: первый элемент становится последним, а последний — первым.

Из примера видно, что местами меняются 1-й элемент с N-м, второй — с (N–1)-м и т. д. Замечаем, что сумма индексов элементов, участвующих в обмене, равна N+1, поэтому элемент с номером i должен меняться местами с (N+1–i)-м элементом.

Теперь разберемся с организацией цикла. Если мы организуем цикл по всем элементам, то получим:

Все вернулось в исходное состояние, потому что реверс выполнился дважды. Чтобы этого не произошло, нужно остановить процесс обмена на середине массива, т.е. на элементе с индексом (N div 2).

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

Сортировка — один из наиболее распространенных процессов обработки данных.

Под сортировкой массива понимают расстановку элементов массива в заданном порядке.

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

Цель сортировки — ускорить последующий поиск элементов, т. к. нужный элемент легче искать в упорядоченном массиве.

Существует много различных алгоритмов сортировки. Мы рассмотрим некоторые из них на примере сортировки массива целых чисел в порядке неубывания (a[i]<=a[i+1]).

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

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

Рассмотренные алгоритмы сортировки являются достаточно простыми для понимания и запоминания, но на практике применяются редко. Дело в том, что они обладают квадратичной сложностью, т. е. в общем случае число сравнений и обменов сопоставимо с n2, где n — число элементов в массиве.

С примером более эффективного алгоритма сортировки — «быстрой сортировкой» — вы сможете познакомиться в дополнительном материале.

 

Задания к параграфу:

1. Что такое индекс в одномерном массиве?

А. порядковый номер элемента массива

Б. наибольший номер элемента массива

В. размерность массива

Г. имя массива

2. Какие описания массивов записаны верно, а какие — нет?

А. a: array [1..10] real

Б. вa: array [10..1] of byte

В. a: array [1..10] of integer

Г. a: array [1..10] of real and integer

Д. a: aray [1..10] of integer

Е. a: array [10..10] of real

Верно:

Не верно:

3. Значения двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:

for n:=1 to 100 do

A[n]:= n10;

for n:=1 to 100 do

B[n]:= A[n]*n;

Сколько элементов массива B будут иметь положительные значения?

Ответ:

4. Расставьте строки программы в правильном порядке.

А. for i:=1 to n do

Б. end

В. i,n:integer

Г. var a:array[1..100] of integer

Д. begin

Е. readln(a[i])

Ж. end

З. begin

И. for i:=1 to n do

К. write(‘a[’,i,’]=’)

Л. readln(n)

М. write(a[i],’ ‘)

1 2 3 4 5 6 7 8 9 10 11 12
                       

 

5. В массиве Dat хранятся данные измерений среднесуточной температуры за 10 дней в градусах (Dat[1] — данные за первый день, Dat[2] — за второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы.

Var k, m: integer;

Dat: array[1..10] of integer;

Begin

Dat[1]:= 2; Dat[2]:= 5;

Dat[3]:= 7; Dat[4]:= 5;

Dat[5]:= 4; Dat[6]:= 2;

Dat[7]:= 0; Dat[8]:= 2;

Dat[9]:= 4; Dat[10]:= 5;

m:= 0;

for k:= 1 to 10 do

if Dat[k] > 3 then m:= m+1;

Writeln(m);

End.

Ответ:

6. В программе описан одномерный целочисленный массив с индексами от 0 до n. Известно, что в массиве есть несколько элементов с максимальным значением. Дан фрагмент программы:

j:=0;

for i:=1 to n do

if A[i] > A[j] then j:= i;

s:=j;

Чему будет равно значение переменной s после выполнения этого фрагмента программы?

А. значению максимального элемента

Б. количеству элементов в массиве A, имеющих максимальное значение

В. индексу первого элемента в массиве A, имеющего максимальное значение

Г. индексу последнего элемента в массиве A, имеющего максимальное значение

7. В программе описан одномерный целочисленный массив с индексами от 1 до 10, элементы которого вычисляются по формуле:

A[i]=2k1, k=1, …10.

Ниже представлен фрагмент программы, обрабатывающей данный массив:

n:= 10;

for i:= 1 to n do begin

A[n+1–i]:= 2*A[i];

end;

Какие (одно или несколько) из представленных ниже чисел будут встречаться в массиве после выполнения программы два и более раз?

2, 4, 8, 16, 32, 64, 128, 256

Ответ:

 

 

Тема — Массивы. Типовые задачи обработки массивов

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

Для решения этой достаточно простой задачи мы будем вынуждены ввести 20 имен переменных, что, естественно, очень неудобно. Но ведь чисел может быть гораздо больше, чем 20!

Основное предназначение современных компьютеров — обработка большого количества данных. Очень сложно каждой переменной при этом давать собственное имя и не запутаться. Выходом их этой ситуации является использование более сложных по своей конструкции типов данных — составных (или структурированных). Одним из таких типов являются массивы.

Массив — это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элемента в массиве.

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

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

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

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

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

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

var <идентификатор>: array [<тип индекса>] of <тип компонентов>

Здесь:

- array и of — служебные слова, которые буквально можно перевести как «массив» и «из»;

- <тип индекса> — описание индексации (нумерации) элементов массива. В качестве типа индекса можно использовать любые порядковые типы;

- <тип компонентов> — тип величин, непосредственно составляющих массив.

Приведем несколько примеров описаний:

  1. var day: array [1..365] of integer; — массив, состоящий из 365 целых чисел, которые пронумерованы от 1 до 365;
  2. var tem: array [0..11] of real; — массив, состоящий из 12 вещественных, пронумерованных от 0 до 11;
  3. var ocenka: array [–2..2] of char; — массив, состоящий из 5 символьных переменных с номерами от -2 до 2:
  4. const n=10; var slovo: array [1..n] of string; — n строковых величин, пронумерованных от 1 до n;

Для того, чтобы обратиться к элементу массива, нужно записать имя массива и в квадратных скобках индекс нужного элемента, например, day[100].

Рассмотрим основные приемы работы с массивами.


Поделиться с друзьями:

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

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

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.