ЛАБОРАТОРНАЯ РАБОТА ПММ 5
РЕШЕНИЕ ЗАДАЧ HА ОБРАБОТКУ МАССИВОВ
(2 занятия)
Цель работы: изучение и применение методов программирования действий по обработке одномерных массивов и матриц
Под массивом понимается упорядоченная совокупность конечного числа данных одного типа, обьединенных под общим именем. Имена массивов образуются так же, как и имена простых переменных.
Тип "массив" вводится при помощи ключевого слова ARRAY. Возможны два способа описания массивов:
1) type имя_типа=array[n1..n2] of <тип элементов>; var имя_массива:имя_типа;
2) var имя_массива: array[n1..n2] of <тип элементов>;
Здесь n1..n2 – диапазон индексов массива.
Пример1.Пусть в программе необходимо описать двумерный массив М. Описание этого массива в соответствии с первым способом выглядит следующим образом:
type Mas=array[1..2,1..3] of integer;
var M:Mas; Для второго способа:
var M:array[1..2,1..3] of integer;
Обращение к отдельному элементу массива состоит из общего имени и номера этого элемента, например, m1[5]. Отдельный элемент массива используется точно так же, как и переменная такого типа.
Важно при составлении программы учитывать требование о полной определенности всех величин, в том числе и количества элементов массива. В языке нет конструкции динамических массивов, число элементов которых можно задавать при выполнении программы. Наоборот, число элементов должно быть явно указано при составлении программы.
Выход заключается в указании при описании массивов максимального для некоторого круга задач числа элементов, например, 1000, и использовании дополнительной переменной, которая будет указывать реально используемое число элементов.
Заполнение массива оператором присваивания: m1[0]:=10;
m1[1]:=10;
...
m1[15]:=10;
Заполнение массива в цикле FOR: FOR k:=0 to 15 DO m1[k]:=10;
По этой команде будут выполнены ВСЕ записанные ранее действия. Выигрыш в том, что программист должен записать не 16 строк программы, а всего одну!
Поэтому всегда при составлении программ стараются выделить повторяющиеся действия и запрограммировать их с помощью нескольких строк оператора цикла. Компьютер выполняет по команде оператора цикла ВСЕ действия, но программируются они в сжатой форме, с помощью индекса цикла – номера элемента массива.
Пример1:
Заполнение массива данными с клавиатуры. Program Masive;
var
t:array [1..10] of real;
i:integer;
begin
for i:=1 to 10 do begin
write('Vvedite ',i,' element massiva'); readln(t[i]); end;
writeln(‘Zapolnenyi massiv’);
for i:=1 to 10 do writeln('t[',i:1,']=',t[i]:5:2); readln; end.
Пример2:
Заполнение массива вещественных чисел случайными значениями при помощи генератора случайных чисел.
Program Random_num;
Const N=10;
Var t:array[1..N] of real;
I:integer;
Begin
Randomize;
For i:=1 to N do begin t[i]:=Random;
writeln(‘t[‘,i,’]= ‘,t[i]:0:3);
end; readln; end.
Если необходимо произвести заполнение массива числами из определенного отрезка [a;b], то применяем формулу:
t[i]:= a + random(b-a);
Пример: суммирование всех элементов массива
...
{заполнение массива} s:=0;
FOR i:=0 TO 15 DO s:=s+m1[i];
...
Пример: нахождение максимального элемента матрицы
...
{заполнение элементов матрицы}
mx:=w[1,1];
FOR i:=1 TO 15 DO
FOR j:=1 TO 10 DO
If mx < w[i,j] then mx:=w[i,j];
writeln(mx);
...
Примечание. Если необходимо знание строки и столбца, в которых расположен этот максимальный элемент, то для их хранения в памяти нужно выделить отдельные переменные. Перестановка элементов: a:=t[1]; t[1]:=t[20];
t[20]:=a;
Вопросы текущего контроля:
1. Описать типы данных:
- массив из 20 элементов типа char, нумерация элементов начинается с 0; - массив из 12 элементов типа byte; начальный элемент имеет номер 5; - вещественная матрица 6*8, нумерация элементов начинается с 1.
2. Составить фрагмент программы, в котором всем элементам массива из 6 целых чисел присваивается значение 100.
3. Составить фрагмент программы, в котором элементы массива из 8 чисел типа byte вводятся с клавиатуры.
4. Составить фрагмент программы, в котором массив из 10 вещественных чисел заполняется с помощью генератора случайных чисел (ГСЧ).
5. Дополнить предыдущий фрагмент так, чтобы полученные элементы выводились поочередно на экран.
6. Дополнить предыдущий фрагмент вычислением суммы элементов заполненного массива и выводом результата.
7. Составить фрагмент программы, в котором матрица 7*7 выводится на экран.
ВАРИАНТЫ ЗАДАНИЯ
ЗАДАЧА 1. Для решения задачи варианта составить три варианта программы с использованием различных операторов организации циклов. Результаты вывести на экpан.
1. Элементам массива A[1..10] присвоить значения, равные номеру элемента, умноженному на K. Выполнить действия при K=3, K=10.
2. Массив из 15 целых чисел заполнить случайными целыми числами, принимающими значение от 2 до 8.
3. Массив из 8 целых чисел заполнить вводимыми с клавиатуры данными
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.