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

3 Действия над массивами

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

VAR

A,B:ARRAY[1..20] OF Integer;

C,D:ARRAY [1..4,1..5] OF Integer;

BEGIN

A=B – результатом вычисления этого выражения будет истина, если значение каждого элемента массива А равно соответствующему значению элемента массива В.

A<>B – результатом вычисления этого выражения будет истина, если хотя бы одно значение элемента массива А не равно значению соответствующего элемента массива В.

A:=B – все значения элементов массива В присваиваются соответствующим элементам массива А. Значение элементов массива В остаются неизменными (копирование).

Инициализация массива заключается в присваивании каждому элементу массива одного и того же значения соответствующего его базовому типу.

Для одномерного массива можно написать:

1)Операторы присваивания;

2)Fillchar (P,DL,Z);

3)FOR I:=1 TO 20 DO А[I]:=0;

Для двумерного массива могут быть так же использованы операторы присваивания:

FOR I:=1 TO 4 DO

FOR J:=1 TO 5 DO C[I,J]:=0;

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

1)Одним оператором присваивания C:=D.

2)FOR I:=1 TO 4 DO

FOR J:=1 TO 5 DO C[I,J]:=D[I,J];

Оба массива должны быть идентичны по структуре.

Чтобы перемножить матрицы:

PROGRAM UMN;

CONST Gran=3;

TYPE

Mаtr=ARRAY [1..Gran,1..Gran] OF REAL;

VAR

Matr1,Matr2,Matr3:Matr;

PROCEDURE MU(M1,M2:Matr;VAR M3:Matr);

VAR

I,J,K:Integer;

S:Real;

BEGIN

FOR I:=1 TO Gran DO

FOR J:=1 TO Gran DO BEGIN

S:=0;

FOR K:=1 TO Gran DO S:=S+M1[I,K]*M2[K,J];

M3[I,J]:=S

END

END;

BEGIN

<Ввод значений исходной матрицы Matr1,Matr2>;

MU(Matr1,Matr2,Matr3);

<Вывод результатов>

END.

MU- оператор вызова процедуры MU.

(Matr1,Matr2,Matr3)- список фактических параметров.

Matr- имя типа.

M1,M2:Matr- принимающие параметры.

VAR M3:Matr- возвращающие параметры.

PROGRAM S1;

VAR

I,KN,KP,KO:Integer;

A:ARRAY [1..40] OF Real;

BEGIN

KP:=0;

KN:=0;

KO:=0;

FOR I:=1 TO 40 DO BEGIN

Read(A[I]);

IF A[I]=0 THEN KN:=KN+1

ELSE IF A[I]<0 THEN KO:=KO+1

ELSE KP:=KP+1

END;

Writeln(KP,KO,KN)

END.

PROGRAM S2;

USES DOS, CRT, PRINTER;

VAR

D:ARRAY [1..100] OF Real;

Max:Real;

I,PN:Integer;

BEGIN

CLRSCR;

Writeln(‘Введи D(100)’);

Max:=2E-19;

FOR I:=1 TO 100 DO BEGIN

Read(D[I]);

IF D[I]>Max THEN BEGIN

Max:=D[I];

PN:=I

END

END;

Writeln(‘Max=’,Max:5:2,’PN=’,PN);

Readkey

END.

PROGRAM S3;

USES DOS,CRT,PRINTER;

VAR

I,J,KN,KP,KO:Integer;

A:ARRAY [1..3,1..4] OF Real;

BEGIN

CLRSCR;

Writeln(‘Введи A(3*4)’);

I:=1;

KP:=0;

KN:=0;

KO:=0;

FOR I:=1 TO 3 DO

FOR J:=1 TO 4 DO BEGIN

Read(A[I,J]);

IF A[I,J]>0 THEN KP:=KP+1

ELSE IF A[I,J]=0 THEN KN:=KN+1

ELSE KO:=KO+1

END;

Writeln(‘KO=’,KO,’KN=’,kn,’KP=’,KP);

Readkey

END.