Алгоритмы обработки массивов

Слайд 2

Пример: Вычислить значение функции Zi k =xi • yk X= x1x2x3

Пример: Вычислить значение функции Zi k =xi • yk
X= x1x2x3 и

Y= y1y2…y10
x1y1 x1y2…x1y10
x2y1 x2y2…x2y10
x3y1 x3y2…x3y10

Дома:
Разработать алгоритм
и отладить программу
построения таблицы
Пифагора

Z=

Несколько
операторов

Слайд 3

Структурированные типы данных. Массив Структура описания: ТУРЕ =array[диапазон _ индексов]of TYPE

Структурированные типы данных. Массив

Структура описания:
ТУРЕ <имя>=array[диапазон _ индексов]of<базовый тип>

TYPE array10=array[1..10] of integer; {из 10 целых чисел} array11=array[11..21] of real; {из 11 вещ.чисел}
VAR V: array[-3..2] of char; {из __ символов}

Пример: TYPE
DIAP=1..5;
VECTOR = array[DIAP] of real;
PRIZ = array[Boolean] of char;
VAR D: array[3..8] of byte;
p : priz; V: vector;

TYPE
VECTOR= array[1..5] of real;
MATRIX= array[1..10] of VECTOR;
или
MATRIX= array[1..10] of array[1..5] of real;
или
MATRIX= array[1..10,1..5] of real;

Слайд 4

При описании массивов в разделе TYPE в разделе Var для объявления

При описании массивов в разделе TYPE в разделе Var для объявления

переменных данного типа указывается лишь его имя (название)
Var A, B: vector;
M: matrix;
P: priz;

Структуры задания n-мерного массива
Array[диап. инд.1] of array[диап. инд.2 ]of…
of array [диап. инд. N] of[простой тип];
Array[Диап.1,диап.2,…, диап. N] OF <простой тип>;

Var
V: array [0..10,`A`..`C`, Boolean] of char; {разные типы диапазонов}

B[3] V[1,`B`, False] M[1,1]
V[1] [`B`] [False] P[True]

M [i, j] M [2+i,i+5] M [2, 4] M [i] [j]

FOR i:=1 TO 10 DO B [i]:= 0;
Var X: PACKED Array[1..10] of real;

К типу массив применима лишь
одна операция присваивания
А:=В;

Слайд 5

Вычислить максимальное значение в массиве из 10 чисел Алгоритм перевода целого

Вычислить максимальное значение в массиве из 10 чисел

Алгоритм перевода целого двоичного
числа

в десятичную систему счисления
аi - цифры двоичного числа

N-1
S10 = Σ ai2i
i=0

1 0 1 1
23 22 21 20
а3 а2 а 1 а 0
23.1+22.0+21.1+20.1=
8 + 0 + 2 + 1 =11

Слайд 6

Пример 1. Тема: генерация элементов целого типа, 2-мерные массивы. Сформировать двумерный

Пример 1. Тема: генерация элементов целого типа, 2-мерные
массивы.
Сформировать двумерный

массив по правилу: на главной диагонали - нули, ниже главной диагонали - отрицательные числа, выше - положительные}
Program Mass1;
VAR i,j,N :byte; {N - размер квадратной матрицы}
A:array[1..40,1..40] of integer;
BEGIN
Writeln('Введи размер квадратной матрицы');
READ(n);
Writeln(' квадратная матрица ',N,' порядка');
For i:=1 to N do
Begin
For j:=1 to N do
Begin
if i=j then a[i,j]:=0
else
if i else a[i,j]:= -Random(10)-1; {ниже}
write(a[i,j]:4)
End;
Writeln;
End
END.

0 2 4 6
-1 0 1 5
-3 -2 0 3
-1 -5 -4 0

Random(Х) -> 0..Х

Слайд 7

Типизированные константы Сonst = ; изменять в программе нельзя, например: CONST

Типизированные константы

Сonst <идентификатор>=<значение>;
изменять в программе нельзя, например: CONST а1=45; b=23.11;

CONST

<идентификатор>:<тип>=<значение>;

CONST
C1:integer=311; {простые типы}
C2:real=3.14;
C3:boolean=false;
C4:char='A';
C5:string='строка'; {строковый тип}

vector:array[0..4] of byte=(0,1,2,3,4);

vec:array[-1..2] of char='abcd'; или vec:array[-1..2] of char=('a','b','c','d');

При объявлении многомерных констант-массивов множество констант заключается в скобки

CONST
matr:array[1..2,1..4] of byte=((0,1,2,3),(4,5,6,7)); cub:array[0..1,1..2,1..3] of byte=(((0,1,2),(3,4,5)),
((6,7,8),(9,10,11)));

Слайд 8

Константы-множества перечисляются в квадратных скобках: TYPE days=set of 1..31; CONST s:days=[1..5,8..12,15..19,22..26,29..31];

Константы-множества перечисляются в квадратных скобках:
TYPE days=set of 1..31;
CONST s:days=[1..5,8..12,15..19,22..26,29..31];


Константы-записи
<идентификатоp>:<тип_записи >=(<список зн.полей>)

Список значения полей имеет вид - <имя_поля>:<константа>

Дома:
1) Разработать алгоритм и отладить программу
Нахождения элемента, ближайшего к среднему в одномерном массиве
2) Написать программу перевода целого десятичного числа в двоичную систему счисления

TYPE point= record
x, y: real;
end;
CONST t: point =(x:0; y: -1);