Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_Учимся программировать TURBO PASCAL 7.doc
Скачиваний:
32
Добавлен:
19.08.2019
Размер:
1.62 Mб
Скачать

Var а, в : array[1..N, 1..N] of integer;

K, M, I,J : INTEGER;

BEGIN

WRITE('BBEДИTE РАЗМЕР МАТРИЦЫ М = ');

READLN (M);

WRITELN('ИСХОДНАЯ МАТРИЦА');

К := 1;

FOR I := 1 ТО М DO

FOR J := 1 TO M DO

BEGIN

A[l, J] := K;

K:=K+1;

IF J<M THEN WRITE(A[I, J]: 4)

ELSE WRITELN(A[I, J]: 4)

END;

WRITELN('МАТРИЦА ПОСЛЕ ПОВОРОТА НА 90 ГРАДУСОВ');

FOR I := 1 ТО М DO

FOR J := 1 TO M DO

BEGIN

B[I, J]:=A[M+1- J,I];

IF J<M THEN WRITE(B[I, J] : 4)

ELSE WRITELN(B[I, J] :)

END;

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим размеры массива А и присваиваем значения его эле­ментам;

- присваиваем значения элементам матрицы В и выводим их на экран.

Переменные:

А, В - двумерные массивы;

М - количество строк и столбцов массива;

I, J - переменные цикла;

К. - вспомогательная переменная.

ВВЕДИТЕ РАЗМЕР МАТРИЦЫ М = 4

ИСХОДНАЯ МАТРИЦА

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

МАТРИЦА ПОСЛЕ ПОВОРОТА НА 90 ГРАДУСОВ

13 9 5 1

14 10 6 2

15 11 7 3

16 12 8 4

Рис. 7.4. Результат работы PRG7_6

Задача 7.7 Дана квадратная матрица N x N, состоящая из натуральных чисел. Повернуть ее на 90 градусов против часовой стрелки и вывести результат на экран.

Рассмотрим вначале матрицу 3 х 3 и посмотрим, что происхо­дит с элементами при повороте.

А 11

А 12

А 13

А 13

А 23

А 33

А 21

A 22

А 23

А 12

А 22

А 32

А 31

А 32

А 33

А 11

А 21

А 31

Если считать, что после поворота у нас появилась новая мат­рица В, то соответствие между элементами устанавливается сле­дующим образом:

В 11  А 13

В 12  А 23

В 21  А 12

В 22  А 22 и т. д., т. е. В [I, J] A [L, М].

Внимательно изучив соответствие, можно утверждать, что для элементов матрицы N х N справедлива следующая система урав­нений: Отсюда правило преобразования элементов выглядит следу­ющим образом: В [I, J] = A [J, N + 1 - 1].

Программа, решающая данную задачу, выглядит так:

PROGRAM PRG7_7;

CONST N = 100;

Var а, в : array[1..N, 1..N] of integer;

К, М, I, J : INTEGER;

BEGIN

WRITE('BBEДИTE РАЗМЕР МАТРИЦЫ М = ');

READLN (M);

WRITELN('ИСХОДНАЯ МАТРИЦА');

K:=1;

FOR I := 1 ТО М DO

FOR J := 1 TO M DO

BEGIN

A[I,J]:=K;

К := K+1;

IF J<M THEN WRITE(A[I, J] : 4)

ELSE WRITELN(A[I, J] : 4)

END;

WRITELN('МАТРИЦА ПОСЛЕ ПОВОРОТА НА 90 ГРАДУСОВ');

FOR I := 1 ТО М DO

FOR J := 1 TO M DO

BEGIN

B[l, J] := A[J, M+1-1];

IF J<M THEN WRITE(B[I, J] : 4)

ELSE WRITELN(B[I, J] : 4)

END;

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим размеры массива А и присваиваем значения его эле­ментам;

- присваиваем значения элементам матрицы В и выводим их на экран.

Переменные:

А, В - двумерные массивы;

М - количество строк и столбцов массива;

I, J - переменные цикла;

К - вспомогательная переменная.

ВВЕДИТЕ РАЗМЕР МАТРИЦЫ М = 4

ИСХОДНАЯ МАТРИЦА

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

МАТРИЦА ПОСЛЕ ПОВОРОТА НА 90 ГРАДУСОВ

4 8 12 16

3 7 11 15

2 6 10 14

1 5 9 13

Рис. 7.5. Результат работы PRG7_7

Задача 7.8 Дана квадратная матрица N х N, состоящая из натуральных чисел. Повернуть ее на 180 градусов и вывести результат на экран

Рассмотрим вначале матрицу 3 х 3 и посмотрим, что происхо­дит с элементами при повороте.

А 11

А 12

А 13

А 33

А 32

А 31

А 21

А 22

А 23

А 23

А 22

А 21

А 31

А 32

А 33

А 13

А 12

А 11

Если считать, что после поворота у нас появилась новая мат­рица В, то соответствие между элементами устанавливается сле­дующим образом:

В 11  А 33

В 12  А 32

В 21  А 23

В 22  А 22 и т. д., т. е. В [I, J] А [L, М].

Внимательно изучив соответствие, можно утверждать, что для элементов матрицы N х N справедлива следующая система урав­нений: Отсюда правило преобразования элементов выглядит следу­ющим образом: В [I, J] = A [N + 1 - I, N + 1 - J].

Программа, решающая данную задачу, выглядит следующим образом:

PROGRAM PRG7_8;

CONST N = 100;