Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod3O.doc
Скачиваний:
15
Добавлен:
14.08.2019
Размер:
6.93 Mб
Скачать

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

Пусть задан массив а, состоящий из 10 действительных элементов.

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

sum:=0;

for i:=1 to 10 do sum:=sum + a[i];

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

p:=1;

for i:=1 to 10 do p:=p*a[i];

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

k:= 0;

for i:=1 to 10 do

if a[i] <0 then k:=k+l;

Задача 4. Найти максимальный элемент массива а.

max:=a[1];

for i:=2 to 10 do

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

Задача 5. Найти максимальный элемент массива a с указанием его индекса.

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

for i:=2 to 10 do

if a[i] > max then

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

end;

Задача 6. Сформировать новый массив b из положительных элементов массива а и вывести его на экран.

k:=0;

for i:=1 to 10 do

if a[i] >0 then

begin k:=k+l;

b[k]:= a[i]

end;

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

Задача 7. Расположить элементы массива a в порядке возрастания (выполнить сортировку элементов массива по возрастанию).

for i:=l to 9 do

for j:=i+1 to 10 do

if a[i] > a[j] then

begin с:=a[i];

a[i]:=a[j];

a[j]:=c

end;

При этом служебная переменная с того же типа, что и элементы вектора а.

При сортировке элементов вектора по убыванию знак неравенства меняется на противоположный.

Задача 8. Составить программу: заданы массивы 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 := 1 to 8 do write(h[i]:8:2);

writeln;

writeln(modh =, modh:7:2);

readkey

end.

2.4.3. Использование и обработка двумерного массива

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

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

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

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

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

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

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

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

var a:matr;

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

matr=array [1 .. 10] of vect;

var a: matr;

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

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

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

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

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

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

writeln (введи элементы вектора a(10,10)’);

for i:=1 to 10 do

for j:=1 to 10 do read (a[i, j]);

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

writeln (вывод массива a(10, 10));

for i:=l to 10 do

begin for j:= to 10 do

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

writeln

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]