Цель работы: научиться заполнять и выводить одномерные массивы различными способами, научиться составлять алгоритмы на обработку одномерных массивов
Наряду с простыми типами данных в Pascal существует возможность использования структурных (составных) типов данных, которые предоставляют достаточно гибкие возможности. Одним из таких типов данных являются массивы.
Линейный массив (вектор) – это совокупность пронумерованных данных одного типа обозначенных одним именем.
Линейный массив очень удобно представить в виде таблицы. Например, если бы меня интересовала бы информации о средней температуре воздуха каждого месяца за 2019 год, то эту информацию можно бы было представить в виде следующей таблицы:
|
|
|
|
Месяц |
|
|
||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
t0,C |
-21,2 |
-20,5 |
-14,6 |
-5,4 |
+7,0 |
+15,2 |
+21,7 |
+20,1 |
+10,8 |
-2,3 |
-15,4 |
-17,9 |
Таким образом, в данном примере, данные о температуре представляют собой линейный массив.
Каждый элемент в линейном массиве однозначно идентифицируется его номером. А сам массив (в концепции Pascal) обладает именем и типом (подразумевается тип данных, которые будут храниться в нѐм).
Прежде, чем начать работу с линейным массивом его следует объявить в разделе var следующим образом:
var <имя>:array [<нач. №> . . <кон. №>] of <тип элементов>;
<имя> - имя массива (по правилам именования переменных);
<нач. №> - номер первого элемента в массиве;
<кон. №> - номер последнего элемента;
Количество элементов в массиве называется размерностью массива.
Нумерация элементов массива осуществляется одним из скалярных типов данных.
Например,
var tem: array [1..12] of real;
описывает массивы с именем tem в котором 12 элементов номера которых начинаются с 1, а заканчиваются 12, причѐм каждый элемент может содержать в себе число типа real. Размерность массива равна 12 элементам.
Обращение (чтение, запись) в массиве возможно только к одному его элементу в данный момент времени. Например,
tem[3]:=-14.6;
придание значения элементу или writeln(tem[10]);
вывод значения элемента на экран.
Существуют несколько способов заполнения массива.
Приведѐм примеры заполнения некоторыми из них:
1. Заполнение вводом с клавиатуры:
Опишем массив и переменную для цикла:
var p: array [0..5] of integer; i: byte;
Заполним массив:
for i:=0 to 5 do begin write('Введите номер ',i,'-го элемента: '); readln(p[i]); end;
2. Заполнение случайными числами (например, в интервале от -17 до 68): Опишем массив и переменную для цикла:
var i:byte;
er:array [3..25] of integer;
Заполним массив:
for i:=3 to 25 do er[i]:=random(86)-17;
3. Заполнение с использованием закономерностей (например, 1, 2, 4, 8, 16, 32, …):
Опишем массив и переменную для цикла:
var i: byte;
po: array [0..10] of integer;
Заполним массив: po[0]:=1; for i:=1 to 10 do po[i]:=po[i-1]*2; 4. Описание предустановленных массивов.
Описание осуществляется в разделе описания констант, где указывается не только размерность массива, но и значение каждого его элемента, например, так: const arr1: array [1..5] of byte=(2,4,8,16,32);
5. Заполнение данными из внешнего файла.
Вывод элементов массива на экран.
Это можно сделать тоже с помощью цикла. Например, для 3-го случая заполнения фрагмент программы вывода элементов массива на экран примет следующий вид: for i:=0 to 10 do writeln(po[i]);
В некоторых случаях (2,3,4) можно также осуществлять вывод симметрично с заполнением. Например, для 2-го случая фрагмент программы преобразится к следующему виду: for i:=3 to 25 do begin
er[i]:=random(86)-17;
writeln(er[i]); end;
Задания для самостоятельного выполнения:
1. Организуйте ввод чисел в массив с клавиатуры, а вывод в столбик.
2. Организуйте ввод чисел в массив с клавиатуры, а вывод в строчку.
3. Заполните массив из пятнадцати элементов случайным образом:
3.1 целыми значениями х (-50<=x<110);
3.2 целыми значениями х (120<=x<230);
3.3 целыми значениями х(10<=x<100) Вывод организуйте в столбик
4. Заполните массив из десяти элементов значениями, вводимыми с клавиатуры, вывод организуйте в столбик.
5. Заполните массив числами,
5.1 изменяющими по зависимости A[I]=(I2+1)/sinI.
5.2 изменяющими по зависимости A[I]=(I+1)/(I*2) 5.3 изменяющими по зависимости A[I]=(I+3)/(I*I). Вывод оформите в строчку.
6. Для массива Х(N) в котором есть отрицательные, положительные и нулевые значения элементов массива, вычислить:
6.1 сумму значений элементов, стоящих на четных местах;
6.2 сумму значений элементов, стоящих на четных местах;
6.3 среднее арифметическое элементов массива, значения которых меньше 15;
6.4 среднее арифметическое элементов массива, значения которых больше 10;
6.5 среднее арифметическое элементов массива, значения которых меньше 5;
6.6 количество значений положительных, отрицательных элементов массива;
6.7 минимальный элемент массива;
6.8 максимальный элемент массива;
6.9.количество положительных, отрицательных и равных нулю элементов массива,
6.10 количество четных элементов в заданном массиве.
7.В массиве хранится информация о количестве побед, одержанных 20 футбольными командами. Определить номера команд, не имеющих побед.
8.Оценки, полученные спортсменом в соревнованиях по фигурному катанию (в баллах), хранятся в массиве их 18 элементов. В первых шести элементах записаны оценки по обязательной программе, в седьмом – двенадцатом – по короткой программе, в остальных – по произвольной программе. Выяснить, по какому виду программы спортсмен показал лучший результат.
9.В массиве хранится информация о численности книг в каждом из 10 разделов библиотеки. Выяснить, верно, что общее число книг в библиотеки больше 10000? 10. В массиве хранится информация о численности студентов в каждой из 24 групп техникума. Выяснить, верно ли, что общее число студентов техникума есть трехзначное число.
11. В массиве хранятся сведения о стоимости 12 различных предметов.
Определить общую стоимость всех предметов
12. В массиве хранится информация о массе каждого из 10 предметов, загружаемых в грузовой автомобиль, грузоподъемность которого известна. Определить, не превышает ли общая масса всех предметов грузоподъемность автомобиля.
Вариант |
Задание 1 |
Задание 2 |
Задание 3 |
1. |
1 |
6.1 |
7 |
2. |
2 |
6.2 |
8 |
3. |
3.1 |
6.3 |
9 |
4. |
3.2 |
6.4 |
10 |
5. |
3.3 |
6.5 |
11 |
6. |
4 |
6.6 |
12 |
7. |
5.1 |
6.7 |
7 |
8. |
5.2 |
6.8 |
8 |
9. |
5.3 |
6.9 |
9 |
10. |
1 |
6.10 |
10 |
11. |
2 |
6.1 |
11 |
12. |
3.1 |
6.2 |
12 |
13. |
3.2 |
6.3 |
7 |
14. |
3.3 |
6.4 |
8 |
15. |
4 |
6.5 |
9 |
16. |
5.1 |
6.6 |
10 |
17. |
5.2 |
6.7 |
11 |
18. |
5.3 |
6.8 |
12 |
19. |
1 |
6.9 |
7 |
20. |
2 |
6.10 |
8 |
21. |
3.1 |
6.1 |
9 |
22. |
3.2 |
6.2 |
10 |
23. |
3.3 |
6.3 |
11 |
24. |
4 |
6.4 |
12 |
25. |
5.1 |
6.5 |
7 |
1. Какая форма организации данных называется массивом?
2. Для чего нужно описывать массив?
3. Чем отличается номер элемента массива от его значения?
4. Как организовать вывод одномерного массива в строчку? В столбик?
5. Как можно ввести значения элементов массива в память?
6. Как подсчитать сумму, количество и произведение значений элементов массива?
7. Как присвоить значения элементам массива датчиком случайных чисел на интервале [-150;250]
© ООО «Знанио»
С вами с 2009 года.