Описание, принцип работы с одномерными массивами
Массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Элементами массива могут быть данные любого типа, число элементов массива задается при описании и в процессе выполнения программы не может быть изменено. Доступ к каждому элементу массива осуществляется также путем индексирования элементов массива. Компоненты массива могут быть любого, в том числе и структурированного типа (за исключением файлового). Таким образом, одномерный массив - это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой индекс (порядковый номер).
Описать массив можно в разделе описания переменных или в разделе описания типов данных. Описание массива определяет имя, размер массива и тип элементов и имеет формат
1) в разделе описания типов:
TYPE_имя-типа=ARRAY[тип индекса]_OF_тип элементов массива;
Тогда в разделе описания переменных можем записать VAR_имя массива1, имя массива2, … :имя типа;
Например:
TYPE mas=ARRAY[1..20] OF real;{ объявляется тип пользователя – массив, все элементы которого действительные числа}
VAR a, b: mas; {объявляются переменные a и b, относящиеся к типу mas }
2) в разделе описания переменных:
VAR_имя массива:АRRАY[тип индекса]_OF_базовый тип;
Например: объявление массива из пяти элементов целого типа
VAR а:ARRAY[1..5] OF integer;
К любому элементу массива можно обратиться, указав имя массива, а затем в квадратных скобках номер требуемого элемента. Например, а[3] - обращение к 3-му элементу массива а. С элементами массива можно выполнять все действия, которые допустимы для переменных того же типа.
Заполнение одномерных массивов.
Заполнить элементы одномерного массива значениями можно:
1) вводя значения с клавиатуры;
2) случайными числами;
3) вычисляя значение по формуле.
Во всех трех случаях не обойтись без организации цикла.
Будем считать, что объявили массив из 10 элементов (тип элементов в данном случае значения не имеет).
1) Заполнение с клавиатуры.
for i:=1 to 10 do begin
writeln(‘введите значение элемента’);
readln(a[i])
end;
2) Заполнение случайными числами. Для этого мы должны использовать функцию RANDOM, которая генерирует случайные числа.
for i:=1 to 10 do
a[i]:=random(n); {n должно быть заранее задано}
3) Заполнение по формуле. Например, каждый элемент массива должен быть рассчитан по формуле аi = sin(i)-cos(i)
for i:=1 to 10 do
a[i]:=sin(i)-cos(i)
Примеры.
1. Вычисление суммы элементов массива.
Program example1;
Var a:array[1..100] of real;
i,n:integer;
s:real;
begin
writeln(‘введите число элементов массива’);
readln(n);
s:=0;
for i:=1 to n do
Begin
Writeln(‘a[‘,i,’]=’);
Readln(a[i])
End;
for i:=1 to n do
S:=s+a[i];
writeln(‘s=’,s:5:2)
end.
2. Поиск минимального (максимального) элемента массива.
Program example2;
Var a:array[1..100] of integer;
i, n, min, nmin:integer;
begin
writeln(‘введите число элементов массива’);
readln(n);
for i:=1 to n do
Begin
Writeln(‘a[‘,i,’]=’);
Readln(a[i])
End;
Min:=a[1]; {в качестве минимального элемента полагаем первый элемент массива}
Nmin:=1; {номер минимального элемента}
for i:=2 to n do
if a[i]<min {проверяем, если очередной элемент меньше минимального}
then begin
min:=a[i]; {тогда его полагаем минимальным}
nmin:=i; {запоминаем номер этого элемента}
end;
writeln(‘минимальный элемент a[’,nmin,’]=’,min);
writeln(‘номер минимального элемента=’, nmin);
end.
3. Программа, подсчитывающая количество пар равных соседних элементов в массиве целых чисел.
Program example3;
Var a:array[1..100] of integer;
i,n,k: integer;
real;
begin
writeln(‘введите число элементов массива’);
readln(n);
for i:=1 to n do
Begin
Writeln(‘a[‘,i,’]=’);
Readln(a[i])
End;
k:=0;
for i:=1 to n-1 do begin
if a[i]=a[i+1] {если соседние элементы равны}
then k:=k+1 {количество равных соседних элементов увеличиваем на единицу}
end;
Writeln(‘k=’, k)
end.
4. Сортировка массива по убыванию методом поплавка.
Program example4;
uses crt;
const n=15;
var a:array [1..n] of integer;
i,j,b:integer;
begin
clrscr;
writeln(' ввод массива');
for i:=1 to n do begin
a[i]:=random(50);
write(a[i]:4)
end;
writeln;
{ сортировка по убыванию}
for i:=1 to n-1 do begin
for j:=1 to n-i do begin
if a[j]<a[j+1] then{сравнение рядом стоящих элементов}
begin b:=a[j]; {перестановка элементов}
a[j]:=a[j+1];
a[j+1]:=b
end
end;
end;
writeln('массив после сортировки');
for i:=1 to n do write(a[i]:4);
end.
Упражнения.
1. В массиве A(20) подсчитать среднее арифметическое отрицательных элементов, сумму квадратов четных элементов.
2. Вычислить сумму где, - параметры, меняющиеся одновременно с номером элемента массива: - от 0,2 с шагом 0,5; - от 1 с шагом 0,25.
3. Вычислить сумму где: - параметр, меняющийся одновременно с номером элемента массива от 0 с шагом 0,05.
4. В массиве В(100) подсчитать сумму каждого десятка элементов. Из найденных элементов сформировать отдельный массив.
5. В массиве В(20) найти элементы, кратные трем, их порядковые номера, количество и сумму. Из найденных элементов сформировать отдельный массив.
6. В массиве А(20) найти максимальное и минимальное значения среди элементов и их среднее арифметическое. Значения элементов массива задаются формулой: При делении на 0 значение элемента массива принять равным 1.
7. Для вектора (х1, х2,…………., х20), имеющего положительные и отрицательные элементы. Вычислить среднее арифметическое положительных элементов массива и сумму элементов, стоящих на четных местах.
8. Составить программу для упорядочивания элементов вектора (х1, х2,…………., х100), расположив их в порядке возрастания в том же массиве.
9. Дан вектор М(20). Расположить элементы вектора по увыбанию.
10. В массиве С(100) найти количество элементов, лежащих в диапазоне от А до В, где А и В – заданные чмсла.
11. В массиве M(100) найти максимальное и минимальное значения элементов и их порядковые номера. Элементы массива вычисляются по формуле
при делении на 0 значение элемента принять равным десяти.
12. В массиве В(30) найти элементы, кратные двум, их порядковые номера, количество и сумму. Из найденных элементов сформировать отдельный массив.
13. Найти количество элементов массива, стоящих между максимальным и минимальным элементами.
14. Найти минимальный элемент массива В(50) среди четных элементов этого массива.
15. Написать программу, которая удаляет из массива В(18) элементы, меньшие заданной величины и освободившиеся места заполняет нулями.
16. Найти произведение отрицательных элементов массива
А(20).
17. Найти сумму положительных элементов массива A(25), расположенных до максимального элемента.
18. Найти сумму элементов массива A(45), расположенных после первого нулевого элемента.
Двумерные массивы.