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

Var a : array[1..T, 1..S] of char;

N, M, I, J, К : INTEGER;

TEMP: CHAR;

BEGIN

WRITE('BBEДИTE КОЛИЧЕСТВО СТРОК N = ');

READLN(N);

WRITE('BBEДИTE КОЛИЧЕСТВО СТОЛБЦОВ М = ');

READLN(M);

WRITELN('BBEДИTE', M*N,' БУКВ');

FOR I := 1 TO N DO

FOR J := 1 TO M DO

READ(A[I, J]);

FOR I := 1 TO N DO

BEGIN

FOR К := 1 ТО М-1 DO

FOR J := К ТО М DO

IF A[l, K]>A[I, J] THEN

BEGIN

TEMP := A[l, К];

A[l, К] := A[l, J];

A[l, J] := TEMP ;

END;

END;

FOR I := 1 TO N DO

BEGIN

FOR J := 1 TO M DO

WRITE(A[I, J]);

WRITELN

END;

END.

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

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

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

- просматриваем строки массива и упорядочиваем их;

- выводим матрицу на экран.

Переменные:

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

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

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

TEMP - текущий минимум (буква).

Задача 7.5 Дана матрица N х N, состоящая из натуральных чисел. Расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию

PROGRAM PG7_5;

CONST T = 100;

Var a : array[1..T, 1..T] of integer;

В : ARRAY[1..T, 1..2] OF INTEGER;

N, K, I, J : INTEGER;

BEGIN

WRITE('BBEДИTE РАЗМЕР МАССИВА N = ');

READLN(N);

FOR I := 1 TO N DO

BEGIN

WRITELN('BBEДИTE', N,' ЧИСЕЛ');

FOR J := 1 TO N DO

READ(A[I, J])

END;

FOR I := 1 TO N DO

B[l, 1] := A[l, 1];

FOR I := 1 TO N-1 DO

FOR J := I TO N DO

IF B[l, 1]<B[J, 1] THEN BEGIN

К := B[l, 1];

B[l, 1] := B[J, 1];

B[J, 1] := К

END;

FOR I := 1 TO N DO

BEGIN

IF A[l, 1]<>B[I, 1] THEN

BEGIN

FOR J := 1 TO N DO

IF A[J, 1] = B[l, 1] THEN B[l, 2] := J;

END

ELSE B[l, 2] := I;

END;

FOR I := 1 TO N DO

BEGIN

К := B[l, 2];

FOR J := 1 TO N DO

WRITE(A[K, J] : 4);

WRITELN

END;

END.

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

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

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

- присваиваем значения вспомогательному массиву В по пер­вому столбцу А;

- просматриваем первый столбец массива В и упорядочиваем его;

- заполняем значения второго столбца В - B[i, 2] - местополо­жение элемента B[i, 1] в массиве А;

- выводим строки матрицы А на экран в зависимости от по­рядка, указанного в B[i, 2].

Переменные:

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

В - вспомогательный массив;

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

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

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

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

Основная задача, которую нужно в этом случае решить, состо­ит в определении преобразования индексов элементов матрицы. Рассмотрим вначале матрицу 3 х 3 и посмотрим, что происходит с элементами при повороте.

А 11

А 12

А 13

А 31

А 21

А 11

А 21

A 22

А 23

А 32

А 22

А 12

А 31

А 32

А 33

А 33

А 23

А 13

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

В 11  А 31

В 12  А 21

В 21  А 32

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

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

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

PROGRAM PRG7_6;

CONST N = 100;