ПРОГРАММИРОВАНИЕ ЗАДАЧ С ОДНОМЕРНЫМИ МАССИВАМИ
Цель работы: научиться составлять программы на языке Pascal для программирования задач с одномерными массивами.
Оборудование: персональный компьютер типа IBM PC с процессором не ниже Intel Pentium I.
Дидактический материал: плакаты, раздаточный материал.
Одномерные массивы
Массив – упорядоченный набор нумерованных величин одинакового типа. Массивы бывают одномерные (вектор-строка, вектор-столбец), дву- мерные (матрица) и многомерные (тензор).
Вектор-строка имеет вид: A = {a1; a2 ;…; an }.
Пример 1. A = {1; 2; 3; 4; - 7,3}.
Вектор-столбец имеет вид:
æ a1 ö
ç ÷
A = ç a2 ÷ .
ç ⁝ ÷
Пример 2.
æ 1 ö
ç ÷
A = ç 2 ÷
10 ÷
ç ÷
è an ø
ç- 7,3÷
è ø
Элемент массива – величина, входящая в состав массива. Индекс – по- рядковый номер элемента в одномерном массиве (целое число типа inte- ger). Размерность массива – количество элементов в массиве.
Одномерные массивы обычно обозначаются так:
A = (ai ) ;
A(n), где A –
массив; n – размерность массива; i – индекс элемента; ai
сива A .
– i-тый элемент мас-
Описание одномерного массива в разделе описания переменных (Var) на языке Pascal имеет вид:
где array – массив, of – из, Mas – имя массива, IMin – минимальное
значение индекса, IMax – максимальное значение индекса, T – тип элемен- тов.
Это означает, что переменная Mas является массивом, который мо- жет иметь индексы от IMin до IMax у элементов типа T .
Пример 3. Var A:array[1..100] of real;
Это означает, что переменная A – массив, который может содержать от 1 до 100 элементов вещественного типа.
Доступ к элементу массива на языке Pascal имеет вид:
где Mas – имя массива, Ind – индекс.
Это означает доступ к элементу массива Mas с индексом Ind . Пример 4. a[1]; b[3]; c[i]; d[n]; f[k+1].
Это означает 1-й элемент массива A и т.д.
Порядок выполнения
1. Зайти в Borland Pascal (или Pascal ABC).
2. Набрать текст программы для решения задачи № 1 и получить ответ для контрольного примера.
3. Исправить программу так, чтобы она находила сумму и количество поло- жительных элементов.
4. Исправить программу так, чтобы она находила произведение и среднее значение всех элементов.
5. Исправить программу так, чтобы она находила максимальное и минималь- ное значение в массиве.
Пример задачи
Задача 1. Дан одномерный массив A из n элементов. Найти сумму элементов массива: n s = åai = a1 + a2 +…+ an . i=1 |
Program Lab7a; Var A:array[1..100] of real; i,n:integer; s:real; Begin writeln('Введи n'); read(n); s:=0; writeln('Введи массив A'); for i:=1 to n do begin read(A[i]); s:=s+A[i]; end; writeln('s=',s:10:3); End. |
Контрольный пример. Исходные данные: n = 5 ; A = {1;2;3;5;-1}. Ручной счёт: s =1+ 2 + 3 + 5 -1 =10. Результат: s =10 . |
Экран пользователя. Введи n 5 Введи массив A 1 2 3 5 -1 s= 10.000 |
Дополнительное задание
1. Дан массив L(n). Найти количество элементов, больших корня из суммы положительных элементов.
2. Дан массив G(q). Найти произведение неотрицательных элементов и сум- му элементов в диапазоне от 10 до 20.
3. Дан массив A(n). Найти сумму и количество элементов, равных среднему значению.
4. Дан массив C(m). Найти отношение максимального к минимальному эле- менту.
5. Дан массив D(n). Найти минимальный среди элементов, больших суммы, и найти количество элементов, не равных максимальному.
6. Дан массив A(n). Сформировать новый массив B умножением элементов массива A на 100. В новом массиве переставить местами третий и предпо- следний элементы.
7. Дан массив A(n). Положительные элементы массива заменить на их сумму, а отрицательные элементы уменьшить на минимальный.
8. Дан массив A(n). Найти сумму элементов на чётных местах и произведение элементов, кратных 3.
9. Дан массив A(n). У нечётных элементов отбросить дробную часть числа, а у элементов с индексами, дающими остаток 1 при делении на 3, отбросить целую часть числа.
10. Сформировать массив случайных чисел в диапазоне от -10 до 20 и округлить значения элементов, по модулю меньших 1.
Фрагменты вычисления характеристик одномерного массива
Характеристика |
Для всех элементов ai |
Для части элементов ai > z |
1. Сумма s |
s:=0; for i:=1 to n do s:=s+A[i]; |
s:=0; for i:=1 to n do if A[i]>z then s:=s+A[i]; |
2. Количество k |
k:=n; |
k:=0; for i:=1 to n do if A[i]>z then k:=k+1; |
3. Произведение p |
p:=1; for i:=1 to n do p:=p*A[i]; |
p:=1; for i:=1 to n do if A[i]>z then p:=p*A[i]; |
4. Максимальное значение max |
max:=A[1]; for i:=2 to n do if A[i]>max then max:=A[i]; |
max:=-1E10; for i:=1 to n do if (A[i]>max) and (A[i]>z) then max:=A[i]; |
5. Минимальное зна- чение min |
min:=A[1]; for i:=2 to n do if A[i]<min then min:=A[i]; |
min:=1E10; for i:=1 to n do if (A[i]<min) and (A[i]>z) then min:=A[i]; |
6. Среднее значение sr |
s:=0; for i:=1 to n do s:=s+A[i]; sr:=s/n; |
s:=0; k:=0; for i:=1 to n do if A[i]>z then begin s:=s+A[i]; k:=k+1; end; sr:=s/k; |
Фрагменты операций с одномерными массивами
1. Ввод элементов массива |
writeln('Введи массив A'); for i:=1 to n do read(A[i]); |
2. Вывод элементов массива |
writeln('Массив A'); for i:=1 to n do writeln(A[i]:10:3); |
3. Замена элементов массива на величину z |
for i:=1 to n do A[i]:=z; |
4. Увеличение элементов массива на вели- чину z (аналогично уменьшение, умножение, деление) |
for i:=1 to n do A[i]:=A[i]+z; |
5. Вычисление нового массива B прибав- лением к элементам массива A величи- ны z (аналогично вычитанием, умножением, делением) |
for i:=1 to n do B[i]:=A[i]+z; |
6. Вычисление индекса максимального элемента imax (аналогично минимального) |
max:=A[1]; imax:=1; for i:=2 to n do if A[i]>max then begin max:=A[i]; imax:=i; end; |
7. Перестановка 1-го и 2-го элементов массива |
c:=A[1]; A[1]:=A[2]; A[2]:=c; |
Контрольные вопросы
1. Объясните понятие массива, его элемента, индекса, размерности? Пере- числите виды массивов.
2. Как обозначаются и описываются массивы и их элементы? Приведите примеры.
3. Чем отличается вычисление суммы всех элементов от вычисления суммы части элементов?
4. Чем отличается вычисление суммы части элементов от вычисления коли- чества части элементов?
5. Чем отличается вычисление суммы элементов от вычисления произведе- ния элементов?
6. Чем отличается вычисление суммы элементов от вычисления среднего значения элементов?
7. Чем отличается вычисление максимального элемента от вычисления ми- нимального элемента?
8. Чем отличается ввод элементов от их вывода?
9. Чем отличается увеличение элементов на какую-либо величину от замены элементов на эту величину?
10. Чем отличается увеличение элементов на какую-либо величину от ана- логичного вычисления нового массива?
11. Чем отличается вычисление максимального элемента от вычисления его индекса?
12. Почему для перестановки элементов используется три оператора?
13. Напишите, что означает каждая строка в вышеприведённой программе.
14. Напишите программу к одной из задач дополнительного задания.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.