Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Лабораторные работы № 14 – 15
Тема. Работа с двумерными массивами Цель работы: приобретение навыков работы с двумерными массивами Теоретическая часть Двумерный массив можно представить в виде прямоугольной таблицы, например:
2 3 4 5 0 4 8 3 7 1 5 3
Такой массив в программе определяется следующим образом: Var A: array[1..3, 1..4] of integer; Здесь в массиве A первый интервал индексов обозначает индекс номера строки – 1..3, второй интервал индексов обозначает индекс номера столбца – 1..4. Для обращения к элементу двумерного массива необходимо в квадратных скобках сначала указать номер строки, а затем номер столбца. Например: Writeln(A[2, 3]); //будет выведено число 8 Writeln(A[3, 1]); //будет выведено число 7 Writeln(A[1, 1]); //будет выведено число 2
Аналогично одномерному массиву, двумерный также описывается двумя способами: В разделе TYPE TYPE < имя типа> =array[тип индекса] of < тип компонент>; VAR < имя массива1, имя массива2, …, имя массива n>: < имя типа>; Пример: TYPE MAS1=array[1..5, 1..6] of real; VAR A, B, C: MAS1;
2. В разделе VAR даётся полное описание массива: VAR < имя массива1, имя массива2, …, имя массиваn>: array [тип индекса] of < тип компонент>;
Пример:
VAR A, B, C: array[1..5, 1..6] of real; // массивы A, B, C – идентичные
Или
VAR A: array[1..5, 1..6] of real; B: array[1..5, 1..6] of real; C: array[1..5, 1..6] of real; // массивы A, B, C – неидентичные
Решение типовой задачи
Пример 14.1. Дана матрица А(n*n), найти произведение элементов каждого столбца матрицы.
Рисунок 12 – Блок-схема алгоритма решения задачи
Программа:
Program Project1; Type Mas=array [1..8] of real; Mas1=array [1..8, 1..8] of real; Var A: Mas1; I, j, n: integer; P: Mas; Begin
//ввод размера массива Write('n='); Readln(n);
//ввод значений элементов массива //значения элементов каждой строки вводятся в одну строку через пробел //в конце каждой строки нажимается клавиша Enter For i: =1 to n do For j: =1 to n do Read(a[I, j]);
//расчет произведений элементов каждого столбца For j: =1 to n do //начало внешнего цикла Begin P[j]: =1; For i: =1 to n do //начало вложенного цикла P[j]: =P[j]*a[i, j]; //конец вложенного цикла
Writeln('P[', j: 1, ']= ', P[j]: 6: 2); End; //конец внешнего цикла
//вывод матрицы А Writeln('Матрица А: ');
For i: =1 to n do //начало внешнего цикла Begin For j: =1 to n do //начало вложенного цикла Write(a[i, j]: 5: 1); //конец вложенного цикла Writeln; End; //конец внешнего цикла End.
Пример 14.2. Поиск максимального значения и его индексов в массиве a. program Project2; const n= 3; m=4; type m1=array[1..n, 1..m] of real; var a: m1; i, j, n1, n2: integer; max: real; begin for i: =1 to n do for j: =1 to m do read(a[i, j]); // ввод значений массива a
max: =a[1, 1]; n1: =1; n2: =1; for i: =1 to n do for j: =1 to m do if a[i, j]> max then begin max: =a[i, j]; n1: =i; n2: =j; end;
writeln('a_max=', max: 3: 1); // вывод значения максимального элемента writeln('i=', n1, ' j=', n2); // вывод номера максимального элемента readln; readln; end.
При исходных данных 1 2.5 5.2 8 7 8 9.3 6 9 15.5 6 9
Результат работы программы: a_max=15.5 i=3 j=2
Пояснения к программе Массив а – двумерный массив размерностью 3 х 4 (n*m). Значения n и m определены в разделе констант (CONST). Переменные i, j используются для работы с элементами массива. I – индекс строки, j – индекс столбца. Переменные n1, n2 используются для фиксирования индексов максимального элемента массива: n1 – индекс строки, n2 – индекс столбца. Переменная max используется для хранения значения максимального элемента массива. Варианты заданий (2 задания) Задание 1 1. Дана вещественная матрица А, размерностью n*m. Найти наибольший элемент матрицы и номер строки и столбца, в которых он находится. 2. Дана вещественная квадратная матрица А, размерностью n*n. Найти сумму элементов матрицы, расположенных под главной диагональю. 3. Дана вещественная квадратная матрица А, размерностью n*n. Найти сумму элементов матрицы, расположенных над главной диагональю. 4. Дана вещественная матрица А, размерностью n*m. Найти в каждой строке матрицы минимальный элемент. 5. Дана вещественная матрица А, размерностью n*m. Найти в каждой строке матрицы максимальный элемент. 6. Дана вещественная матрица А, размерностью n*m. Найти в каждом столбце матрицы произведение положительных элементов. 7. Дана вещественная матрица А, размерностью n*m. Найти сумму и произведение элементов каждой строки матрицы. 8. Дана вещественная матрица А, размерностью n*m. Найти произведение квадратов отрицательных элементов. 9. Дана вещественная матрица А, размерностью n*n. Найти сумму элементов матрицы, расположенных на главной диагонали. 10. Дана вещественная матрица А, размерностью n*m. Найти сумму положительных элементов матрицы. 11. Дана квадратная матрица А(4, 4). За один просмотр элементов матрицы А(4, 4) сформировать вектор С(4), каждый j -й элемент которого равен произведению элементов j -го столбца исходной матрицы. 12. Дана квадратная матрица А(4, 4). За один просмотр элементов матрицы А(4, 4) сформировать вектор D(4), каждый j-й элемент которого равен сумме соответствующей строки матрицы А. 13. Даны две прямоугольные матрицы А(3, 4) и В(3, 4). Найти матрицу С(3, 4), элементы которой равны сумме соответствующих элементов матриц А и В. 14. В данной целочисленной квадратной матрице А(5, 5) указать индексы всех элементов, имеющих наибольшее значение. 15. Дана вещественная матрица А, размерностью n*m. Найти произведение квадратов положительных элементов. 16. Дана прямоугольная матрица А(3, 4). Произвести транспонирование исходной матрицы в матрицу С(4, 3). 17. Дана вещественная матрица А, размерностью n*n. Найти сумму квадратов элементов матрицы, расположенных на главной диагонали.
Задание 2 1. Дано число k (0< k< 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k -го столбца данной матрицы. 2. Дана матрица размера N x M. Найти суммы элементов всех ее четных строк. 3. Дана матрица размера N x M. Найти минимальное значение в каждой строке. 4. Дана матрица размера N x M. В каждой строке рассчитать среднее арифметическое каждой строки. 5. Дана матрица размера N x M. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент. 6. Дана квадратная матрица порядка M. Найти сумму элементов ее главной диагонали. 7. Дана действительная квадратная матрица М(5, 5). Требуется переставить 2 строки матрицы. 8. Дана действительная квадратная матрица С(7, 7). Найти максимальный элемент в главной диагонали и напечатать элементы строки, в которой он находится. 9. Дана матрица М(7, 4). Определить четные элементы, имеющие нечетную сумму индексов. 10. Дана квадратная целочисленная матрица F(m, m). Найти суммы элементов тех строк, имеющих четные элементы на главной диагонали. 11. Задана квадратная матрица Y(5, 5). Определить, где больше четных элементов: выше или ниже главной диагонали? 12. Дана действительная квадратная матрица С(7, 7). Найти максимальный элемент в главной диагонали и напечатать элементы столбца, в которой он находится. 13. Заполнить квадратную матрицу Х(7, 7) следующим образом: элементы, расположенные на главной диагонали, принять равными 1; выше главной диагонали – сумме индексов; ниже – их разности. 14. Дана матрица размера N x M. В каждой строке найти количество элементов, больших среднего арифметического всех элементов матрицы. 15. Дана матрица В(k, p). Определить сумму элементов, кратных 3, и количество отрицательных элементов. 16. Дана действительная квадратная матрица М(5, 5). Требуется переставить строки матрицы по возрастанию первых элементов строк. Контрольные вопросы 1. Что такое двумерный массив? Назовите способы его описания. 2. Как описать переменные для хранения следующей информации: Массив
Лабораторная работа № 16 Популярное:
|
Последнее изменение этой страницы: 2016-05-03; Просмотров: 810; Нарушение авторского права страницы