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

Тема № 7 Разработка и отладка программ с использованием структурированных типов данных – двухмерных массивов

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

Двухмерный массив является программным аналогом двухмерной матрицы (набору векторов, прямоугольной таблицы), т.е.

A =  двухмерная матрица (массив).

Каждый элемент матрицы может рассматриваться как отдельная переменная. Индекс элемента в программе может задаваться непосредственно с помощью чисел, а также косвенно с помощью переменных или выражений A[1,1]; B[I,J]; C[I*2,J].

На первом месте стоит индекс, обозначающий номер строки, в которой находится элемент; на втором месте - индекс, обозначающий номер столбца, в котором находится элемент, например X[3,1]  элемент находится в третьей строке и первом столбце.

Как правило, в Паскале двухмерный массив описывается следующим образом:

1) TYPE MATR = ARRAY[1..3,1..4] OF REAL;

VAR A:MATR;

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

Примеры

  1. Ввод/вывод элементов матрицы

PROGRAM PR;

USES CRT;

VAR X:ARRAY[1..40,1..30] OFREAL;

I, J, N, M:INTEGER;

BEGIN

CLRSCR;

{Ввод размерности  количества строк и количества столбцов}

WRITELN(‘Введите N, M’);

READLN(N, M);

{ Ввод матрицы}

WRITELN(‘Введите матрицу’);

FOR I:=1 TO N DO

FOR J:=1 TO M DO READ(X[I,J]);

{Вывод матрицы}

WRITELN(‘Матрица’);

FOR I:=1 TO N DO

BEGIN

WRITELN;

FOR J:=1 TO M DO

WRITE(X[I,J],' ');

END;

END.

2. Cформируйте двухмерный массив по правилу

B = .

PROGRAM MASSIV2;

VAR I,J:INTEGER;

B:ARRAY[1..3,1..3] OF INTEGER;

BEGIN

FOR J:=1 TO 3 DO

BEGIN

B[1,J]:=J; B[2,J]:=3+J; B[3,J]:=6+J; END;

FOR I:=1 TO 3 DO BEGIN

FOR J:=1 TO 3 DO

WRITE(B[I,J]:5); WRINELN;

END; END.

3. Задана целочисленная матрица, вычислите сумму элементов матрицы, имеющих четное значение

PROGRAM SUMMA;

USES CRT;

VAR X:ARRAY[1..10,1..10] OF INTEGER;

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

BEGIN

CLRSCR;

WRITELN(‘N,M’);

READLN(N,M);

FOR I:=1 TO N DO

FOR J:=1 TO M DO READ(X[I,J]);

SUM:=0;

FOR I:=1 TO N DO

FOR J:=1 TO M DO

IF X[I,J] MOD 2=0 ТHEN SUM:=SUM+X[I,J];

WRITELN('SUM=',SUM);

END.

4. Дана матрица А(5,4). Сформируйте вектор В(5) из третьих элементов строк матрицы А.

PROGRAM VECT;

USES CRT;

VAR A:ARRAY[1..5,1..4] OF INTEGER;

B: ARRAY[1..5]OF INTEGER;

I, J:INTEGER;

BEGIN

CLRSCR;

WRITELN(‘Введите матрицу’);

FOR I:=1 TO 5 DO

FOR J:=1 TO 4 DO READ(A[I,J]);

FOR I:=1 TO 5 DO BEGIN

FOR J:=1 TO 4 DO IF J=3 THEN B[I]:=A[I,J];

WRITELN('B[',I,']=',B[I]);

END.

Во всех задачах для краткости вместо термина "двухмерный массив" используется термин "матрица". Для обозначения размерности матрицы используется запись A(M,N), где M - количество строк, а N - количество столбцов матрицы А.

Варианты заданий

  1. Дана матрица С(m, n). Найти норму матрицы .

  2. Дана матрица А(m, n). Сформировать вектор В(m) из максимальных элементов строк матрицы А.

  3. Дана матрица А(5,7). Сформировать вектор В(7) из минимальных элементов столбцов матрицы А.

  4. Дана матрица А(5,5). Изменить матрицу, прибавив к каждому элементу, лежащему выше главной диагонали, симметрично расположенный элемент, лежащий ниже главной диагонали. Остальные элементы не изменять.

  5. Дана матрица В(m, n). Сформировать вектор Т(m) из сумм элементов каждой строки.

  6. Дана матрица В(4,6). Сформировать вектор Т(6) из произведений элементов каждого столбца.

  7. Дана матрица А(n, n). Определить максимальный элемент матрицы и номера строки и столбца этого элемента.

  8. Дана матрица В(6,7). Сформировать вектор Т(6) из средних арифметических элементов в каждой строке.

  9. Получить массив максимальных элементов столбцов матрицы А(3,6).

  10. Определить индексы минимальных элементов каждой строки матрицы В(m, m).

  11. Дана матрица Т(5,7). Найти среднее арифметическое каждого из столбцов матрицы и записать их в массив Р.

  12. Дана действительная матрица С(5,4), в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.

  13. Дана действительная матрица F(6,7). Найти среднее арифметическое наибольшего и наименьшего значений ее элементов.

  14. В данной действительной матрице С(n, n) найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

  15. В данной действительной матрице В(n, m) поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственны.

  16. Дана целочисленная матрица К(n, n). Найти наименьшее из значений элементов столбца, который обладает наибольшей суммой модулей элементов. Если таких столбцов несколько, взять первый из них.

  17. Даны матрица А(5,5) и вектор В(5). Получить их произведение.

  18. Дана матрица В(n, n). Найдите строку и столбец, на пересечении которых расположен максимальный элемент главной диагонали. Замените значения этой строки и столбца на полученное максимальное значение.

  19. Вычислить суммы элементов каждой строки матрицы В(8,8). Определить наименьшее значение этих сумм и номер соответствующей строки.

  20. Найти наибольший элемент каждой строки матрицы А(4,6) и записать их в массив Y.

  21. Переписать первые элементы каждой строки матрицы А(n, n), большие С, в массив В. Если в строке нет элемента, большего С, записать ноль в массив В.

  22. Найти минимальные элементы каждой строки матрицы Х(n, n) и поместить их на главную диагональ, а диагональные элементы записать на место минимальных.

  23. Дана матрица Т(5,6). Найти максимальный из минимальных элементов строк, а также номер строки и столбца, на пересечении которых он находится.

  24. Дана матрица Q(n, n). Расположить в каждой строке матрицы элементы по убыванию.

  25. Дана матрица А(m, n), содержащая только два одинаковых числа. Найти эти числа и их индексы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]