4. использование и обработка массивов


Скачать 88.04 Kb.
Название4. использование и обработка массивов
ТипДокументы
Тема 4. ИСПОЛЬЗОВАНИЕ И ОБРАБОТКА МАССИВОВ

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

Когда мы имеем дело с большим количеством данных одного типа, то обозначать их различными именами и обрабатывать становится затруднительно. Например, пусть имеется совокупность действительных чисел 1.6, 14.9,-5.6,8.5,0.46.
Конечно, можно каждое число обозначить своим именем, например А1, SB, M, NIC, NUM. Но можно для всей совокупности чисел ввести одно обобщающее имя, а индексом отметить конкретное число, например, A1,A2,A3,A4,A5.

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

Под массивом понимается конечная совокупность данных одного типа, упорядоченная по значению индекса. Каждый элемент массива обозначается именем массива с индексом. Массив описывается при помощи задания типа его компонентов и типа индексов. При задании типа индексов фактически указывается число компонентов массива, поэтому тип индексов может быть любым скалярным или ограниченным. При задании типа индексов нельзя использовать вещественный тип данных. Число компонентов массива фиксируется при описании и в процессе выполнения программы не меняется. Тип компонентов массива может быть простым или сложным.
ОДНОМЕРНЫЙ МАССИВ (ВЕКТОР)

Общий вид описания одномерного массива:

type имя типа = array [тип индекса] of тип компонент;
var идентификатор: имя типа;

Например:
type vectl = array [1..12] of real;

var o,b,/: vectl;

Массив может быть описан и без представления типа в разделе описания типов данных:

var идентификатор: array [тип индексов] of тип компонент;

Например:

var mas : array[1.. 10] of integer;
Если в программе используется несколько массивов одного типа, то в разделе описаний типов идентификаторы этих массивов перечисляются через занятую, затем следует описание типа.
var g, h : array [0..4] of real;

m, n: array [1703..2003] of real;
Для ссылок на отдельные элементы массива используется переменная с индексом. Переменная с индексом - это имя переменной, обозначающей массив, вслед за которым в квадратных скобках стоит выражение, определяющее индекс элемента, например:
a[1];b[i]; c[2*n+l];f[k div2];
т.е. в качестве индекса можно использовать константу, переменную или арифметическое выражение, но обязательно того же типа, что и указанный в описании массива тип индекса, иначе ЭВМ выдаст сообщение об ошибке.

Элементы массива могут стоять как в левой части оператора присваивания, так и в выражениях. Над переменной с индексом можно производить любые операции, а также использовать в качестве аргументов в стандартных функциях, которые допустимы для данных его базового типа (типа компонентов массива). Если базовый тип есть real, то допустимы все операции над данными вещественного типа, включая и стандартные функции.

Ввод и вывод элементов одномерного массива выполняется поэлементно с использованием оператора цикла for, который определяет порядок заполнения (вывода) массива.

Пример. Программа, в которой вводится с клавиатуры и затем
выводится на дисплей вектор а, состоящий из 10 действительных чисел.
uses crt;

var a : array [1 ..10] of real;
i: integer;
begin clrscr;

for i := 1 to 10 do read(a[i]);
for i := 1 to 10 do write(a[i] : 7 : 2)
end.
При составлении программ с использованием одномерных массивов некоторые задачи встречаются особенно часто. Ниже приведены фрагменты соответствующих программ.
Часто встречающиеся задачи на одномерный массив

Пусть задан вектор а, состоящий из п действительных элементов.
Задача 1. Найти сумму элементов вектора а.
sum := 0;
for i := 1 to n do sum := sum + a[i];

Задача 2. Найти произведение элементов вектора а.

p:=1;

for i := 1 to n do p := р*a[i];
Задача 3 . Найти количество отрицательных элементов вектора а.

k:=0;

for i:= 1 to п do
if a[i]<0 then k:=k + 1;
Задача 4. Найти максимальный элемент вектора a,
max := а [1];
for i := 2 to n do
if a[i] > max then max :=a[i];
Задача 5.Найти максимальный элемент вектора а с указанием его индекса.

Max:=a[1];k:=1;

For i:=2 to n do

If a[i]>max then

begin max :=a[i];k:=i;

end;
Пример. Заданы векторы f и g, каждый из 8 действительных чи­сел. Найти вектор h=f+g вычислить его модуль.

program masl;

var f, g, h: array [ 1 ..8] of real;
i: integer;
modh: real;
begin clrscr;
Writeln ('введи вектор f :');

for i := 1 to 8 do read(f[i]);

writeln(‘введите число g:');
for i :=1 to 8 do read(g[i]);
modh := 0;
for i:=1 to 8 do
begin h[i]:=f[i]+g[i];

modh : = modh + sqr(h[i])

end;

modh := sqrt(modh);

writeln(‘вектор h:’);

for i:= l to 8 do write(h[i]);

writeln;

writeln('modh =’, modh : 7 : 2)

end.

Использование и обработка двумерного массива (матрицы)

Двумерный массив, или матрица, является более сложной струк­турой, чем вектор, так как представляет собой таблицу, состоящую из

определенного количества строк и столбцов. При определении элемен­та матрицы необходимо указать два индекса: номер строки и номер столбца.

Общий вид описания двумерного массива:

array [тип индекса 1, тип индекса 2] of тип компонентов;

Тип индекса, так же как и при описании одномерного массива, может быть любым скалярным или ограниченным, кроме действитель­ного и неограниченного целого. Тип индекса 1 определяет число строк в матрице, а тип индекса 2 - число столбцов. Тип компонентов можег быть любым простым или сложным.

Двумерный массив можно описать различными способами.

Пусть матрица а с действительными компонентами состоит из 10 строк и 12 столбцов.

Приведем примеры описания матрицы а.

  1. type matr:= array [1 .. 10,1 .. 12 ] of real; var a: matr;

  2. type vect = array [1 .. 12 ] of real;

matr - array [1.. 10 ] of vect; var a: matr;

3. var a : array [1 ... 10,1 .. 12 ] of real;

Для обращения к отдельным элементам матрицы применяется пе­ременная с индексами. Сначала записывается идентификатор матрицы, затем в квадратных скобках через запятую два индексных выражения, первое из которых обозначает позицию строки, второе - столбца.

Выражение должно определять значение того же типа, что и ука­занные в описании массива типы индексов, иначе ЭВМ выдаст сообще­ние об ошибке.

Элементы массива могут стоять как н левой части оператора присваивания, так и в выражениях. Над переменной с индексом можно производить любые операции, которые допустимы для данных его базового типа (типа компонентов массива). Если базовый тип есть rеal, то допустимы все операции над данными вещественного типа, включая и стандартные функции.

Ввод и вывод элементов двумерного массива выполняется с ис­пользованием двойного цикла с параметром.

Ввод массива a(10, 10):

for i := 1 to 10 do

begin writeln ('введи элементы', i,' строки');

for j := 1 to 10 do

read ( a [i,j]);

end;

Вывод массива а(10, 10)

writeln ('вывод массива А(10, 10)');

for i::= 1 to 10 do

begin for i : 1 to 10 do

write(a[i,j] : 7 : 1);

writeln

end;

Часто встречающиеся задачи на двумерный массив

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

Пусть для примера дана матрица а(4, 4).

Задача 1. Найти сумму элементов матрицы а.

sum := 0;

for i: = 1 to 4 do

for j: = 1 to 4 do

sum : = sum + a[i,j];

Задача 2 . Найти максимальный элемент матрицы а.

max : = а[1, 1];

for i: = 1 to 4 do

for j: = 1 to 4 do

if a[i,j] > max then max : = a[i,j];

Примечание: при вычислении минимального элемента матрицы знак неравенства меняется на противоположный и переменную следует назвать min.

Задача 3 . Найти максимальный элемент матрицы а с запоминанием его индексов.

max : = а[1, 1]; к:=1; т: =1;

for i: = 1 to 4 do

for j: = 1 to 4 do

if a[i,j] > max then max : = a[i,j]; k: = i; m: =j; end;

Задача 4 . Найти количество положительных элементов матри­цы а.

k:=0;

for i: = 1 to 4 do

for j: = 1 to 4 do if a[i,j] >0 then к:=к+ 1;

Задача 5. Получить вектор b из положительных элементов, расположенных в четных строках матрицы а. Фактическое число эле­ментов вектора b неизвестно, т.к. оно зависит от значений элементов матрицы а. В описании вектора b необходимо указать максимально возможное число положительных элементов в четных строках матрицы а.

var a : array [1..4, 1..4] of real;

b : array [1 .. 8 ] of real; {2 строки с четными номерами

по 4 элемента в каждой строке}

...........................................

k:=0;

for i: = 1 to 4 do

for j: = 1 to 4 do

if (a[i,j] > 0) and (i mod 2 = 0 ) then

begin k : = k + 1; b[k] : = a[i,j];

end;

{Фактическое число элементов вектора b определяется

значением переменной к}

writeln('вывод вектора b');

for i:= 1 to k do write(b[i] : 5 : 2);

Задача 6 . Сформировать вектор b из сумм элементов столбцов матрицы а. Количество элементов в массиве b равно числу столбцов матрицы а.

Var a : array [1..4, 1..4] of real;

b : array [1 .. 4 ] of real;

.......................................

for j := 1 to 4 do

begin

b[j] := 0;

for i: = 1 to 4 do b[j]:= b[j] + a[i,j];

end;

writeln('вывод вектора b');

for i:= 1 to 4 do write(b[i] : 5 : 2);

Задача 7. Найти произведение элементов 2-го столбца матри­цы а(4,4).

for I := 1 to 4 do p:=p*a[i,2];
Задачи с использованием главной или побочной диагонали матрицы

Существует множество задач, в которых необходимо использовать элементы главной или побочной диагонали матрицы (эти понятия имеют смысл только для квадратных матриц!).

Пусть дана матрица a(4, 4).



a11,a22,a33,a44 - элементы главной диагонали матрицы. На глав­ной диагонали индексы строки и столбца равны, то есть i = j. Элемент главной диагонали можно обозначать как a[i,j].

У элементов матрицы, лежащих выше главной диагонали, i <j, а у тех, которые ниже, i <j,

a14,a23,a32,a41 - элементы побочной диагонали матрицы. На по­бочной диагонали сумма индексов строки и столбца постоянна и на единицу больше размера матрицы, то есть для матрицы a(4, 4) i+j = 5, поэтому элемент побочной диагонали можно обозначать как а[i,5 - i].

У элементов a[i,j], лежащих выше побочной диагонали, i+j<5, а у элементов a[i,j], лежащих ниже побочной диагонали, i +j > 5.

Задача 1 . Найти сумму элементов, лежащих на главной диаго­нали матрицы а.

sum := 0;

for i:=1 to 4 do

sum := sum + a[it i];

Задача 2 . Найти сумму элементов матрицы а, расположенных выше ее главной диагонали.

sum = 0;

for i: = 1 to 4 do

for j : = 1 to 4 do

if i <j then sum + a[i,j];

Задача 3. Найти сумму элементов побочной диагонали матрицы а.

sum = 0;

for i: = 1 to 4 do

sum : = sum + a[i, 5-i];

Задача 4. Найти сумму элементов матрицы а, лежащих выше ее побочной диагонали.

sum = 0;

for i: = 1 to 4 do

for j : = 1 to 4 do

if i + j< 5 then

sum : = sum + a[i,j];
Пример выполнения задания 4
Дана матрица а(4,4). Получить матрицу b(4,4) по правилу:



а также произведение элементов строки, содержащей наименьший эле­мент матрицы,

program lab4;

uses crt;

var k,i,j: integer;

b, a : array [1 .. 4,1 .. 4] of real;

p, min : real;

begin clrscr ;

writeln ( 'введите матрицу a');

for i: 1 to 4 do

for j := 1 to 4 do

read(a[i,j]);
min := a[1,1]; k:=1;

{формирование матрицы b}

{ поиск минимального элемента и номера строки, в которой он нахо­дится}

for i := 1 to 4 do
for j := 1 to 4 do
begin
if a[i,j] > 0 then b[i,j] := 2*a[i, j] else

if a[I,j]< min then

begin min:=a[i,j]; k:-i

end

end;

p:=1;

for j:=1 to 4 do

p:= p*a [k,j]; {вычисление произведения k-ой строки}
writeln(' вывод b(4,4)');

for i:= 1 to 4 do

begin

for j:= 1 to 4 do write(b[i,y]; 6 : 2,' ');

writeln

end;

writeln (' минимальн. элемент =', min : 7 :2 );

writeln ('произведение элементов', к: 2,' строки =', p:7:2)

end.

Похожие:

4. использование и обработка массивов icon2. обработка бланков ответов №1
Первичная обработка бланков, проводимая в рцои, включает в себя совокупность следующих процедур

4. использование и обработка массивов iconМетодические указания по выполнению дипломного проекта для специальности...
«Обработка металлов давлением»/ Авторы – составители: И. М. Курлова, О. И. Макушина. – Магнитогорск: гапоу чо «Политехнический колледж»,...

4. использование и обработка массивов iconМетодическая разработка аудиторного занятия По мдк 01. 01 «Обработка...
Тема. Практическое занятие 27. Обработка и вручение отправлений с наложенным платежом

4. использование и обработка массивов iconМассивы в
Целью настоящей работы является изучение методов программирования на java с использованием массивов

4. использование и обработка массивов iconСправочник примечаний статусов 5 4 Прием и обработка заявлений с...
Заявление «Выдача дубликата свидетельства о регистрации залога взамен утраченного, непригодного для использования» 38

4. использование и обработка массивов iconМетодические указания к практическим занятиям по дисциплине «Распределенная...
Учебный план по специальности 09. 05. 01 «Применение и эксплуатация автоматизированных систем специального назначения» предполагает...

4. использование и обработка массивов iconМетодические указания для выполнения практической работы
К таким средствам можно отнести использование команд поиска, фильтрации и использование запросов. Простейшим способом поиска информации...

4. использование и обработка массивов iconУрока фио: Полиенко Елена Олеговна Предмет
Цель урока: Создание условий для формирования представлений об обработке двумерных массивов

4. использование и обработка массивов iconОказание услуг по сервисной поддержке промышленных дисковых массивов emc symmetryx dmx 4
Извещение о проведении открытого запроса предложений в электронной форме №332-2013/2ДП

4. использование и обработка массивов iconРазработка и внедрение системы Динамической сегментации с использованием...
Разработка и внедрение системы Динамической сегментации с использованием массивов неструктурированных данных (Big Data) для увеличения...

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск