Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу.docx
Скачиваний:
107
Добавлен:
24.02.2016
Размер:
2.8 Mб
Скачать

7.3. Примеры часто встречающихся алгоритмов работы с массивами Сумма n элементов одномерного массива:

S:=0; for i:=1 to n do S:=S+a[i];

Сумма модулей всех элементов матрицы:

S:=0;

for i:=1 to m do for j:=1 to n do S:=S+abs(b[i,j]);

Произведение диагональных элементов квадратной матрицы:

p:=1;

For i:=1 to n do p:=p*b[i,i];

Вычислить значение полинома степени n при заданном х:

Используем рекуррентную схему, для чего представим полином в виде P(x)=a0+x(a1+x ■ (a2+x(a3+...x(an-2+x(an-1+x ■ an))..). Фрагмент программы имеет вид:

read(x,n,a);

p:=a[n];

for k:=n-1 down to 0 do

p:=p*x+a[k]; Writeln(p);

Нахождение максимального элемента одномерного массива:

max:=a[1]; for i:=2 to n do

if a[i]>max then max=a[i]; Writeln(max);

Найти номер максимального элемента:

m:=1;

for i:=2 to n do

if a[i]>a[m] then m:=i; Writeln (m,a[m]);

Транспонирование одномерного массива из n элементов:

Требуется в массиве (а^ а2 an-1y an) переставить элементы в обратном порядке, т.е. получить (an an-^ a1). При этом да использовать дополни-

тельный массив.

readln(n,a); i:=1; j:=n; repeat

r:=a[i]; a[i]:=a[j]; a[j]:=r; inc(i); dec(j);

until i>=j; writeln(n, a);

В данном алгоритме для перестановки местами двух элементов в мас­сиве привлекается дополнительная переменная (ячейка памяти) r, тип кото­рой совпадает с типом элементов массива a. Такой прием перестановки до­вольно часто используется в алгоритмах обработки массивов.

Транспонировать двухмерный массив относительно главной диаго­нали:

В квадратной матрице А размерности nxn элементы главной диагонали имеют одинаковые индексы (cii , i=1, n). Каждому элементу, стоящему выше главной диагонали (ац , 1< i < n-1, i+1< j < n), соответствует симметричный ему элемент, стоящий ниже главной диагонали (aj,i , 1 < i < n-1, i+1 < j < n). Транспонировать матрицу - это значит переставить местами эти элементы, например

"1

5

4"

"1

4

8"

4

3

2

=>

5

3

9

8

9

7

4

2

7

for i:=1 to n-1 do for j:=i+1 to n do begin r:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=r; end;

В матрице А размерности mxn переставить местами две строки с номерами к1 и к2:

Readln(k1,k2); for j:=1 to n do begin r:=a[k1,j]; a[k1j]: =a[k2,j]; a[k2j]:=r; end;

Сортировка одномерного массива в порядке возрастания (убывания) элементов. Метод пузырька:

Readln(n, a); for i:=2 to n do for j:=n downto i do if a[j-1]>a[j] then

begin

r:=a[j]; a[j]:=a[j-1]; a[j-1]:=r;

end; Writeln(a);

Для сортировки по убыванию необходимо заменить знак > на < .

ЛЕКЦИЯ 8. ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ

8.1. Статическое и динамическое распределение оперативной памя­ти

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

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