PascalABC.NET Одномерные числовые массивы.
1.40M
Категория: ПрограммированиеПрограммирование

Лабароторная_№9_Двухмерные_массивы_PascalABC_NET_

1. PascalABC.NET Одномерные числовые массивы.

Лабораторная
работа№ 7
PASCALABC.NET
ОДНОМЕРНЫЕ ЧИСЛОВЫЕ МАССИВЫ.
Дисциплина:
«Основы алгоритмизации и программирования.»
Преподаватель: Шадрин Валерий Георгиевич

2.

Порядок выполнения лабораторной работы.
1. Открыть рабочею папку Ваших работ на рабочем столе :
2. Скачать из папки преподавателя работу:
«лабораторная работа №__»
с методическим материалом, с заданием и примерами для
выполнения лабораторной работы.
Sol_Pascal
группа
Фамилия
3. Изучить методический материал и задание для
выполнения Лабораторной работы
4. Выполнить вначале задание для лабораторной работы
Сохранить все результаты в созданной Вами папке :
Sol_Pascal
группа
Фамилия
5. Для закрепления материала:
выполнить дополнительные задания
2

3.

Теоретическая часть: двумерные
массивы
Структура данных в языке Паскаль для хранения табличных данных называется
двумерным массивом. Описать такой массив можно двумя способами:
Var A: Array[1..20] of Array [1..30] of Integer;
или
Var A : Array [1..20,1..30] Of Integer;
В обоих случаях описан двумерный массив, соответствующий таблице, состоящей из 20
строк и 30 столбцов. Отдельный элемент двумерного массива адресуется двумя
индексами. Например, элемент, находящаяся в 5-й строке и 6-м столбце будет
обозначаться A[5,6].
В двумерном массиве у каждого элемента имеются два индекса.
В математике такие массивы называют матрицами.
3

4.

Если мы будем заносить в таблицу данные о температуре в нескольких городах,
то получится двумерный массив, где в каждой ячейке будет храниться
переменная с двумя индексами t[i,j], где i – номер строки, а j – номер
столбца.
Матрицы могут быть прямоугольными или квадратичными (в которых
количество строк и столбцов равны).
4

5.

Теоретическая часть: двумерные
массивы
Именно квадратные матрицы наиболее интересны для решения задач на программирование,
в связи с тем, что у них имеются главная и вспомогательная диагонали.
главная диагональ
вспомогательная диагональ
На главной диагонали лежат элементы, у которых i = j.
На вспомогательной диагонали - элементы, у которых i = n – j + 1
где n – количество строк (столбцов).
5

6.

Теоретическая часть: двумерные
массивы
Пример описания двумерного массива (4 – строки, 6 - столбцов):
Var A: array [1 … 4, 1 … 6] of real;
Для указания границ массива можно применять константы:
Const a=4; b=6;
Var A: array [1 … a, 1 … b] of integer;
Обработку массивов производят с помощью циклов.
Вопросы:
1. В чём отличие двумерных массивов от одномерных?
2. Почему именно квадратные матрицы наиболее часто используются
для решения задач на программирование?
3. Опишите условие принадлежности элемента квадратной матрицы главной
диагонали?
4. Опишите условие принадлежности элемента квадратной матрицы
вспомогательной диагонали?
5. Как осуществляется доступ к элементам двумерного массива?
6. Как производят обработку массивов?
6

7.

АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ ЗАДАЧ
ПО ОБРАБОТКЕ ДВУМЕРНЫХ МАССИВОВ
Ввод и вывод элементов двумерного массива (матрицы) представляют собой
циклический процесс, при этом нужно организовать два цикла, один из которых
отвечает за перебор значений индекса строк, а второй – за перебор значений
индекса столбцов.
Блок-схема алгоритма
ввода элементов
двумерного массива
Блок-схема
алгоритма вывода
элементов
двумерного
массива
7

8.

АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ ЗАДАЧ
ПО ОБРАБОТКЕ ДВУМЕРНЫХ МАССИВОВ
Программа ввода матрицы вручную:
Program VvodVruch;
const n=4; m=3; var a: array [1..n,1..m] of integer;
i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
begin
readln(a[i,j]);
end;
end;
for i:=1 to n do
begin
for j:=1 to m do
begin
write(a[i,j]:3);
end;
writeln;
end;
end.
8

9.

Вычисление суммы всех элементов двумерного
массива.
Задана матрица А(m,n), состоящая из m строк и n
столбцов.
Найти сумму всех ее элементов:
Вычисление сум выполняется по формуле: S = S + a
9

10.

Программа вычисление следа матрицы
(вычисления суммы элементов главной диагонали квадратной
матрицы)
Program SummGlavDiag;
const n=3;
var a: array [1..n,1..n] of integer;
s,i,j:integer;
begin
s:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(101);
write(a[i,j]:5);
if i=j then s:=s+a[i,j];
end;
writeln;
end;
writeln('Сумма эл. главной диаг.',s);
end.
10

11.

Вычисление сумм элементов для каждой строки
матрицы
Суммы элементов строк матрицы
А(m,n)
вычисляют по формуле:
Program Summ;
const m=10; n=10;
var a: array [1..m, 1..n] of integer;
S: integer;
Begin
for i:=1 to m do
for j:=1 to n do
read(a[i,j]); {ввод элементов матрицы с
клавиатуры}
for i:=1 to m do
begin
S:=0;
for j:=1 to n do
S:=S + a[i,j]; {вычисление суммы элементов
каждой строки}
d[i]:=S;
{матрицы}
end;
for i:=1 to m
writeln(' d[' , i, ' ]= ', d[i]);
end.
11

12.

Варианты задания
Составить структурную блок-схему решения задачи из указанного варианта
используя операторы цикла.
Набрать программу для решения задачи из указанного варианта, используя составленную
блок-схему и используя любой, подходящий для ее решения, оператор цикла.
1. Дан двумерный числовой массив Аmxn, содержащий положительные,
отрицательные и нулевые элементы. Найти произведение ненулевых элементов и
определить его знак. Вывести на чистый экран массив, произведение и его знак.
2. Дан двумерный числовой массив Хmxn, сформировать из него массив Ymxn,
умножив все элементы массива Х на заданное число m ≠ 0. Вычислить сумму
квадратов отрицательных элементов полученного массива Ymxn. Вывести на
чистый экран массив Хmxn, Ymxn и сумму.
3. Вычислить сумму и произведение тех элементов двумерного числового
массива Аmxn, которые меньше заданного числа М. Определить, что больше –
сумма или произведение. Вывести на чистый экран массив, сумму, произведение
и результат сравнения.
12

13.

Варианты задания
4. Дан двумерный числовой массив Аmxn, вычислить сумму его положительных и
отрицательных элементов. Определить, какая из сумм является большей по модулю.
Вывести на чистый экран массив, обе суммы и результат сравнения.
5. Вычислить сумму тех элементов двумерного числового массива Хmxn, у которых
произведение индексов является четным числом. Определить знак суммы. Вывести на
чистый экран массив, сумму и указать ее знак (положительная , отрицательная).
6. Дан двумерный числовой массив Xmxm, вычислить сумму его диагональных
элементов. Сформировать из массива Xmxm новый массив Ymxm, разделив элементы
каждой строки массива X на диагональный элемент этой строки. Вывести на чистый
экран массив Xmxm, полученную сумму, затем массив Ymxm.
7. Из двумерного числового массива Аmxn сформировать новый массив Вmxn,
разделив все элементы каждой строки массива А на первый элемент этой строки.
Вычислить сумму положительных элементов полученного массива Вmxn. Вывести на
чистый экран оба массива и сумму.
13

14.

Варианты задания
8. Сформировать два двумерных числовых массива Хmxn и Уmxn. Элементы массивов
задать как целые числа не большие 10, используя функцию random(N), которая
генерирует случайные целые числа из промежутка [0, N-1]. Сформировать из массивов
массива Хmxn и Уmxn третий массив Zmxn, сложив соответствующие элементы
массивов Х и У. Вывести на чистый экран три массива.
9. Дан двумерный числовой массив Xnxn, вычислить среднее арифметическое
элементов его главной диагонали. Сформировать из массива Xnxn новый массив Уnxn,
вычитая из каждого элемента массива Х найденное среднее арифметическое. Вывести
на чистый экран массив Хnxn, среднее арифметическое элементов его главной
диагонали и массив Уnxn.
10. Вычислить сумму и произведение тех ненулевых элементов двумерного числового
массива Сmxn, у которых сумма индексов является нечетным числом. Определить, что
больше сумма или произведение. Вывести на чистый экран массив, сумму,
произведение и результата сравнения.
14

15.

Варианты задания
15. Сформировать двумерный числовой массив Аmxn, задав его элементы как целые числа не
большие 10, используя функцию random(N), которая генерирует случайные целые числа из
промежутка [0, N-1]. Определить, имеется ли в массиве Аmxn элемент, равный заданному числу 1 <Х
<10. Если – да, найти сумму элементов, находящихся в массиве после найденного, если нет – найти
сумму всех элементов массива. Вывести на чистый экран массив, результат поиска и сумму.
16. Сформировать двумерный квадратный массив Хnxn, задав его элементы как действительные
числа из промежутка [0,1) используя функцию random(), которая генерирует случайные
действительные числа из промежутка [0,1). Из массива Хnxn, сформировать массив Уnxn, заменить
все элементы Хnxn, находящиеся ниже главной диагонали минус единицей, выше диагонали плюс
единицей, на самой диагонали – нулями. Вывести на чистый экран оба массива. Элементы в первом
массиве выводить с двумя знаками после запятой.
17. Вычислить сумму S1 модулей отрицательных элементов двумерного числового массива Хnxn,
находящихся выше главной диагонали, и сумму S2 модулей отрицательных элементов, находящихся
ниже главной диагонали. Определить, какая из сумм больше. Вывести на чистый экран массив, обе
суммы и результат сравнения.
18. Дан квадратный двумерный числовой массив Znxn, вычислить произведение ненулевых
элементов двумерного Znxn, находящихся выше главной диагонали, и произведение ненулевых
элементов, находящихся ниже главной диагонали. Определить, какое из произведений больше.
Вывести на чистый экран массива, оба произведения и результат сравнения.
15

16.

Варианты задания
11. Дан двумерный числовой массив Аmxn, содержащий положительные и отрицательные
элементы. Сформировать из него два одномерных массива В и С, взяв в массив В только
положительные элементы массива А, в массив С – только отрицательные. Вывести на чистый
экран все три массива.
12. Сформировать двумерный числовой массив Аmxn, задав его элементы как целые числа не
большие 15, используя функцию random(N), которая генерирует случайные целые числа из
промежутка [0, N-1]. Сформировать из массива Аmxn новый массив Вmxn, поменяв в массиве
А k-тую и l-тую строки местами, где k и l заданные числа, меньшие m. Вывести на чистый
экран оба массива.
13. Сформировать двумерный числовой массив Хmxn, задав его элементы как целые числа не
большие 13, используя функцию random(N), которая генерирует случайные целые числа из
промежутка [0, N-1]. Сформировать из массива Хmxn новый массив Уmxn, поменяв в массиве
Х k-тый и l-тый столбец местами, где k и l заданные числа, меньшие n. Вывести на чистый
экран оба массива.
14. Из числового двумерного массива Аmxn, сформировать новый массив Вmxn, заменив все
отрицательные элементы Аmxn их модулями. Вычислить среднее арифметическое и среднее
геометрическое ненулевых членов массива Вmxn, и определить, какое среднее больше.
Вывести на чистый экран оба массива, среднее арифметическое и среднее геометрическое и
результат сравнения.
16

17.

Варианты задания
15. Сформировать двумерный числовой массив Аmxn, задав его элементы как целые числа не большие 10,
используя функцию random(N), которая генерирует случайные целые числа из промежутка [0, N-1].
Определить, имеется ли в массиве Аmxn элемент, равный заданному числу 1 <Х <10. Если – да, найти
сумму элементов, находящихся в массиве после найденного, если нет – найти сумму всех элементов
массива. Вывести на чистый экран массив, результат поиска и сумму.
16. Сформировать двумерный квадратный массив Хnxn, задав его элементы как действительные числа из
промежутка [0,1) используя функцию random(), которая генерирует случайные действительные числа из
промежутка [0,1). Из массива Хnxn, сформировать массив Уnxn, заменить все элементы Хnxn,
находящиеся ниже главной диагонали минус единицей, выше диагонали плюс единицей, на самой
диагонали – нулями. Вывести на чистый экран оба массива. Элементы в первом массиве выводить с двумя
знаками после запятой.
17. Вычислить сумму S1 модулей отрицательных элементов двумерного числового массива Хnxn,
находящихся выше главной диагонали, и сумму S2 модулей отрицательных элементов, находящихся ниже
главной диагонали. Определить, какая из сумм больше. Вывести на чистый экран массив, обе суммы и
результат сравнения.
18. Дан квадратный двумерный числовой массив Znxn, вычислить произведение ненулевых элементов
двумерного Znxn, находящихся выше главной диагонали, и произведение ненулевых элементов,
находящихся ниже главной диагонали. Определить, какое из произведений больше. Вывести на чистый
экран массива, оба произведения и результат сравнения.
17

18.

Варианты задания
19. Сформировать двумерный числовой массив Аmxn, задав его элементы как целые числа не большие 12,
используя функцию random(N), которая генерирует случайные целые числа из промежутка [0, N-1]. Определить,
есть ли в массиве Аmxn элементы, большие заданного числа 2 < Х < 12. Если – есть, подсчитать их количество.
Если таких элементов больше, чем 2, то вычислит их сумму. Если таких элементов – нет, вычислить сумму всех
элементов массива. Вывести на чистый экран массив, количество найденных элементов и сумму.
20. Сформировать двумерный числовой массив Zmxn, задав его элементы как целые числа не большие 100,
используя функцию random(N), которая генерирует случайные целые числа из промежутка [0, N-1]. Определить,
сколько элементов в Zmxn больше заданного числа 1 <Х <80, но меньше заданного числа У, если Х <У <100. Если
таких элементов больше, чем 3, то найти их среднее арифметическое, если таких элементов нет, найти среднее
арифметическое всех элементов массива. Вывести на чистый экран массив, количество найденных элементов и
среднее арифметическое.
21. Сформировать двумерный числовой массив Zmxn, задав его элементы как целые числа не большие 100,
используя функцию random(N), которая генерирует случайные целые числа из промежутка [0, N-1]. В массиве
Zmxn найти сумму элементов каждой строки и определить, сумма какой строки является максимальной. Вывести
на чистый экран массив, суммы строк и номер строки с наибольшей суммой.
22. Сформировать двумерный числовой массив Аmxn, задав его элементы как целые числа не большие 50,
используя функцию random(N), которая генерирует случайные целые числа из промежутка [0, N-1]. В массиве
Аmxn найти сумму элементов каждого столбца и определить, сумма какого столбца является минимальной.
Вывести на чистый экран массив, суммы столбцов и номер столбца с минимальной суммой.
18

19.

Варианты задания
23. Сформировать двумерный числовой массив Хmxn, задав его элементы как целые числа не
большие 20, используя функцию random(N), которая генерирует случайные целые числа из
промежутка [0, N-1]. Найти в массиве произведение четных элементов каждой строки и
определить, произведение какой строки является наименьшим. Вывести на чистый экран массив,
произведения строк и номер строки с наибольшим произведением.
24. Сформировать двумерный числовой массив Уmxn, задав его элементы как целые числа не
большие 100, используя функцию random(N), которая генерирует случайные целые числа из
промежутка [0, N-1]. В массиве Уmxn найти максимальный и минимальный элемент и поменять
их местами. Вывести на чистый экран исходный массив, полученный массив и найденные
элементы.
25. Сформировать два двумерных числовых массива Аmxn и Вmxn. Элементы массива Аmxn
задать как целые числа не большие 10, а элементы массива Вmxn задать как целые числа не
большие 100, используя функцию random(N)+1, которая генерирует случайные целые числа из
промежутка [1, N]). Сформировать из массивов Аmxn и Вmxn новый массив Сmxn, поместив в
него mхn решений уравнения ах = b, выбирая поочередно параметр а из массива Аmxn, а параметр
b из массива Вmxn с одной и той же позиции. Вывести на чистый экран все три массива.
19

20.

Варианты задания
26. Дан двумерный числовой массив Аmxn, содержащий положительные и отрицательные элементы.
Сформировать из него два одномерных массива В и С, взяв в массив В только положительные элементы
массива А, в массив С – только отрицательные. Вывести на чистый экран все три массива.
27. Сформировать двумерный числовой массив Аmxn, задав его элементы как целые числа не большие
15, используя функцию random(N), которая генерирует случайные целые числа из промежутка [0, N-1].
Сформировать из массива Аmxn новый массив Вmxn, поменяв в массиве А k-тую и l-тую строки
местами, где k и l заданные числа, меньшие m. Вывести на чистый экран оба массива.
28. Сформировать двумерный числовой массив Аmxn, задав его элементы как целые числа не большие 10,
используя функцию random(N), которая генерирует случайные целые числа из промежутка [0, N-1].
Определить, имеется ли в массиве Аmxn элемент, равный заданному числу 1 <Х <10. Если – да, найти
сумму элементов, находящихся в массиве после найденного, если нет – найти сумму всех элементов
массива. Вывести на чистый экран массив, результат поиска и сумму.
29. Сформировать двумерный квадратный массив Хnxn, задав его элементы как действительные числа из
промежутка [0,1) используя функцию random(), которая генерирует случайные действительные числа из
промежутка [0,1). Из массива Хnxn, сформировать массив Уnxn, заменить все элементы Хnxn, находящиеся
ниже главной диагонали минус единицей, выше диагонали плюс единицей, на самой диагонали –
нулями. Вывести на чистый экран оба массива. Элементы в первом массиве выводить с двумя знаками
после запятой.
20

21.

Варианты задания
30. Вычислить сумму S1 модулей отрицательных элементов двумерного числового
массива Хnxn, находящихся выше главной диагонали, и сумму S2 модулей
отрицательных элементов, находящихся ниже главной диагонали. Определить, какая из
сумм больше. Вывести на чистый экран массив, обе суммы и результат сравнения.
31. Дан квадратный двумерный числовой массив Znxn, вычислить произведение
ненулевых элементов двумерного Znxn, находящихся выше главной диагонали, и
произведение ненулевых элементов, находящихся ниже главной диагонали. Определить,
какое из произведений больше. Вывести на чистый экран массива, оба произведения и
результат сравнения.
32. Из двумерного числового массива Аmxn сформировать новый массив Вmxn, разделив
все элементы каждой строки массива А на первый элемент этой строки. Вычислить
сумму положительных элементов полученного массива Вmxn. Вывести на чистый экран
оба массива и сумму.
33. Сформировать двумерный числовой массив Zmxn, задав его элементы как целые числа
не большие 100, используя функцию random(N), которая генерирует случайные целые
числа из промежутка [0, N-1]. В массиве Zmxn найти сумму элементов каждой строки и
определить, сумма какой строки является максимальной. Вывести на чистый экран
массив, суммы строк и номер строки с наибольшей суммой.
21

22.

Дополнительные задания для самостоятельной работы
1. Заменить положительные элементы двумерного массива на 1, а отрицательные на 0.
2. В двумерном массиве числа, кратные n, заменить частными от деления на n. Если таких чисел нет,
то вывести на экран сообщение об этом.
3. Следом квадратной матрицы называют число, равное сумме элементов главной диагонали.
Составить программу нахождения следа квадратной матрицы порядка n.
4. В двумерном массиве найти сумму всех тех элементов, сумма индексов которых равна n.
5. Из данной прямоугольной таблицы вывести на экран строки, содержащие хотя бы один нулевой
элемент.
6. Составить программу для определения номера строки и номера столбца прямоугольной матрицы,
на пересечении которых находится наибольший по абсолютной величине элемент этой матрицы.
7. Составить программу нахождения максимального элемента в каждом столбце и минимального в
каждой строке квадратной матрицы.
8. Составить программу обмена местами максимального и минимального элементов главной
диагонали матрицы.
9. Дана матрица NхN. Вывести на экран дисплея элементы той строки, сумма элементов которой
максимальна.
22

23.

Дополнительные задания для самостоятельной работы
10. Дана квадратная матрица порядка n. Составить программу вычисления количества
положительных элементов в нижнем левом треугольнике, включая диагональные элементы.
11. Сформировать и вывести на экран в виде таблицы массив А[1..4,1..6], заполнив его целыми
случайными числами из интервала [30,75]. Найти среднее арифметическое каждого столбца.
12. В массиве В[1..4,1..4] найти сумму элементов главной диагонали.
13. В двухмерном массиве хранится информация о количестве учеников в каждом классе каждой
параллели школы с первой по одиннадцатую (в первой строке – информация о классах первой
параллели, во второй – второй параллели и т.д.). В каждой параллели школы имеются 4 класса.
Определить: а) общее число учеников в параллели 5-х классов; б) самый большой по
наполняемости класс в параллели 9-х классов и его порядковый номер.
14. Найти наибольший и наименьший элементы данного двумерного массива. Указать их индексы.
15. В двумерном массиве числа, кратные 2, заменить частными от деления на 2. Если таких чисел
нет, то вывести на экран сообщение об этом.
16. Составить программу для построения массива, элементы которого вычисляются по формуле
аi,j=min(i,j).
17. Составить программу для определения номера строки и номера столбца прямоугольной
матрицы, на пересечении которых находится наименьший по абсолютной величине элемент этой
матрицы.
23

24.

Дополнительные задания для самостоятельной работы
18. Составить программу нахождения минимального элемента в каждом столбце и
максимального в каждой строке квадратной матрицы.
19. Составить программу обмена местами максимального и минимального элементов
главной диагонали матрицы.
20. Дана матрица N x N . Вывести на экран дисплея элементы той строки, сумма
элементов которой максимальна.
21. Дана квадратная матрица порядка n. Составить программу вычисления количества
четных элементов в нижнем левом треугольнике, включая диагональные элементы.
22. Вывести на экран матрицу 5x5. Определить сумму минимальных элементов столбцов
матрицы.
23. Вывести на экран матрицу 4x5. Определить номера столбцов, содержащих более
половины положительных элементов.
24. Вывести на экран матрицу 6x6, элементами которой являются целые случайные числа
из интервала [20,50]. Определить сумму минимальных элементов строк матрицы.
25. Вывести на экран матрицу 5x5, элементами которой являются целые случайные числа
из интервала [19,49]. Найти сумму нечетных элементов каждого столбца.
24

25.

Дополнительные задания для самостоятельной работы
26. Вывести на экран матрицу 4x6, элементами которой являются целые случайные числа из
интервала [25,50]. Определить произведение максимальных элементов столбцов матрицы.
27. Вывести на экран матрицу 8x5, элементами которой являются целые случайные числа из
интервала [20,40]. Определить номер строки, содержащей не менее 2-х чѐтных чисел.
28. Вывести на экран матрицу 3x6, элементами которой являются целые случайные числа из
интервала [10,90]. Определить номер минимального элемента в каждой строке.
29. Вывести на экран матрицу 5х5, элементами которой являются целые случайные числа из
интервала [-19,49]. Найти сумму четных элементов каждого столбца.
30. Вывести на экран матрицу 8x8, элементами которой являются целые случайные числа из
интервала [-9,9]. Определить максимальный элемент в каждой строке и поменять его местами с
последним элементом строки.
31. Вывести на экран матрицу 3х4, элементами которой являются целые случайные числа из
интервала [19,99]. Определить минимальный элемент в каждой строке и поменять его местами с
первым элементом строки .
32. Вывести на экран матрицу 5х4, элементами которой являются целые случайные числа из
интервала [30,70]. Определить номер минимального элемента в каждом четном столбце и номер
максимального элемента в каждом нечетном столбце.
33. Вывести на экран матрицу 4x6. Найти сумму элементов каждой строки. Вывести результат в
виде одномерного массива и найти его максимальный элемент.
25

26.

26
English     Русский Правила