Решение задач hа обработку массивов. Способы описания мaccивов. Изучение и применение методов программирования действий по обработке одномерных массивов и матриц

Страницы работы

Фрагмент текста работы

ЛАБОРАТОРНАЯ РАБОТА ПММ 5

РЕШЕНИЕ ЗАДАЧ HА ОБРАБОТКУ МАССИВОВ

(2 занятия)

Цель работы:  изучение и применение методов программирования действий по обработке одномерных массивов и матриц

Способы описания мaccивов

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

Тип "массив" вводится при помощи ключевого слова 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 целых чисел заполнить вводимыми с клавиатуры данными

Похожие материалы

Информация о работе