Занятие – продолжение и закрепление изученного материала по двумерным массивам на занятии 17. Проведем классификацию типовых задач обработки двумерных массивов.
Задачи на замену элементов массива по какому-либо признаку.
Задачи на поиск и вывод элементов массива по какому-либо признаку.
Задачи на нахождение сумм и подсчет количества элементов, удовлетворяющих какому-либо признаку.
Задачи на нахождение сумм элементов строк, столбцов и диагоналей.
Задачи на формирование одномерных массивов из элементов двумерных массивов по какому либо признаку.
Задачи на поиск наибольших (наименьших) элементов строк (столбцов) двумерных массивов.
Этот список будет продолжен на последующих уроках.
Чаще всего Вы будете работать с квадратными матрицами, поэтому вначале своих программ запросите у пользователя:
INPUT” Введите размерность матрицы”; n
Затем определите массив так:
DIM x(n,n)
Затем присвойте элементам массива значения. Т.к. мы не решаем конкретных технических задач, то рекомендуется присваивать элементам массива случайные значения из какого-либо интервала, концы которого задавайте оператором LET.
Заполнение массива проведите, например, так:
a = -9: b = 9
FOR i = 1 TO n: FOR j = 1 TO n: x(i, j) = INT(a + (b - a) * RND)
NEXT j, i
И не торопитесь приступать собственно к решению задачи, а выведите матрицу на печать так:
FOR i = 1 TO n: FOR j = 1 TO mLOCATE 3 + i * 2, 20 + j * 5: PRINT x(i, j)
NEXT j, i
А теперь приступайте собственно к задаче.
Например, так.
Задача. Дана квадратная матрица. Сформировать и распечатать два одномерных массива: один составлен из сумм элементов строк матрицы, второй - из наибольших элементов строк этой матрицы
SCREEN 9: RANDOMIZE TIMER
COLOR 14, 1: CLS
PRINT TAB(5); : INPUT "Введите размерность матрицы"; n
DIM x(n, n): '**объявляем двумерный массив***
DIM s(n), m(n): '**объявляем два одномерных массива***
a = -9: b = 9: '*присвоение значений концам интервала, из которого
'***будут принимать значения элементы массива*****
FOR i = 1 TO n: FOR j = 1 TO n
x(i, j) = INT(a + (b - a) * RND): '*присвоение значений элементам массива
NEXT j, i
'***распечатали двумерный массив ********
COLOR 10
FOR i = 1 TO n: FOR j = 1 TO n
LOCATE 1 + i * 2, 15 + j * 5: PRINT x(i, j)
NEXT j, i
COLOR 14
FOR i = 1 TO n: '**открываем цикл по строкам по параметру i****
s = 0: '***обнулили суммы элементов каждой строки********
m = x(i, 1): '***объявили наибольшим первый элемент каждой строки********
FOR j = 1 TO n: '**открываем цикл по столбцам по параметру j****
s = s + x(i, j): '*прибавили к сумме элемент i-той строки*******
IF m < x(i, j) THEN m = x(i, j): '*переопределили максимальный элемент***
NEXT j: '*закрытие цикла по столбцам, если j > n, то из этого цикла
'*вышли с переменной s, имеющей значение суммы элементов i-той строки
'***и переменной m, имеющей значение наибольшего элемента i-той строки
s(i) = s: '**присвоение элементу одномерного массива суммы элементов i-той строки
m(i) = m: '**присвоение элементу одномерного массива значения наибольшего элемента i-той строки
NEXT i: '**закрытие цикла по строкам
COLOR 4
PRINT "Массив, составленный из сумм элементов строк:"
FOR i = 1 TO n
PRINT s(i); : NEXT i
COLOR 7
PRINT "Массив, составленный из наибольших элементов строк:"
FOR i = 1 TO n
PRINT m(i); : NEXT i
А теперь самостоятельно приступайте к разработке задач:
18.1 Задачи вывода элементов по условию.
-вывести элемент, расположенный в правом верхнем углу массива;
-вывести наибольший (наименьший ) элемент массива;
-вывести любой элемент второй строки массива, определив столбец случайно;
-вывести все элементы третьей строки массива;
-вывести все элементы второго столбца массива;
18.2 Задачи на расчеты и вывод результатов.
-найти сумму элементов массива;
-найти среднее арифметическое элементов массива;
-суммы элементов строк массива, занести эти суммы в одномерный массив;
-суммы элементов столбцов массива, занести эти суммы в одномерный массив;
-определить произведение элементов, указанной пользователем строки;
-подсчитать количество элементов, превышающих среднее арифметическое элементов массива;
-определить есть ли среди элементов массива элементы, равные заданному пользователем числу;
18.3.Задачи на замены.
-все четные элементы массива увеличивать на 1;
-из всех нечетных элементов массива вычесть последний элемент соответствующего столбца;
-все элементы массива, суммы индексов которых четна, заменить числом –1;
И т.д.
Наиболее часто приходится работать с квадратными матрицами, у которых число строк равно числу столбцов. Часть приведенных в п 18.4 задач разобрать на уроке, другую часть Вам предлагается выполнить дома.
18.4 Дана квадратная матрица a(n,n). В этой матрице:
1. вычислить сумму всех ее элементов.
2. вычислить сумму элементов над главной диагональю.
3. вычислить сумму элементов под главной диагональю
4. вычислить сумму элементов главной диагонали.
5. вычислить сумму элементов вспомогательной диагонали.
6. вычислить сумму элементов строки, номер строки задает пользователь.
7. вычислить сумму элементов столбца, номер столбца задает пользователь.
8. определить наибольший и наименьший элементы с их индексами.
9. определить суммы положительных и отрицательных элементов.
10. определить сумму элементов, больших заданного числа t.
11.сформировать массив a(n,n), элементы которого образованы по правилу b(i,j)=(2a(i,j)+3)(3a(i,j)-2).
12. найти среднее значение сумм диагональных элементов.
13. сформировать одномерный массив из элементов главной диагонали.
14. все элементы главной диагонали заменить наибольшим элементом всего массива.
15.ко всем четным элементам массива прибавить 1.
16.все элементы, сумма индексов которых четна заменить на -1.
17. заменить элементы второго столбца суммой элементов этого столбца.
18. вставить после второй строки строку, состоящую из единиц.
19. все отрицательные элементы записать в одномерный массив.
20. все отрицательные элементы записать в один одномерный массив, положительные в другой.
21. все четные элементы записать в один одномерный массив, нечетные - в другой.
22. записать в одномерный массив по возрастанию элементы данной матрицы.
23. заменить нулем все элементы кроме элементов первых и последних строк и столбцов.
24. вывести на печать индексы нулевых элементов или выдать сообщение о том, что таковых нет.
Какие знания, умения и навыки Вы приобрели на занятии №18?