ПРАКТИЧЕСКОЕ ЗАНЯТИЕ
РАЗРАБОТКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ДВУМЕРНЫХ МАССИВОВ. СОРТИРОВКА ДВУМЕРНЫХ МАССИВОВ
1.1 Познакомиться с приемами работы с двумерными массивами;
1.2 Научиться решать типовые задачи с двумерными массивами.
|
Описание двумерного массива, здесь n-количество строк, m – количество столбцов, mas – тип, обозначающий двумерный массив 5 х 6, A – переменная типа mas, т.е. переменная типа двумерный массив из 5 строк и 6 столбцов |
Const n=5, m=6; Type mas=array[1..n, 1..m] of integer; Var A:mas; |
|
Ввод элементов двумерного массива с клавиа- туры |
For I:=1 to n do For J:=1 to m do Read(A[I, J]); |
|
Вывод элементов двумерного массива на экран |
For I:=1 to n do Begin For J:=1 to m do write(A[I, J],’ ‘); Writeln; End; |
|
Заполнение элементов двумерного массива с помощью генератора случайных чисел |
For I:=1 to n do Begin For J:=1 to m do Begin A[I, J]:=Random(50); write(A[I, J],’ ‘); End; Writeln; End; |
|
Преобразование элементов массива, т.е. измене- ние значений элементов массива |
For I:=1 to n do For J:=1 to m do A[I, J]:= A[I, J]*2; |
|
Определение суммы элементов двумерного мас- сива |
S:=0; For I:=1 to n do For J:=1 to m do S:=S+A[I, J]; |
|
Определение количества элементов двумерного массива, удовлетворяющих некоторому усло- вию |
K:=0; For I:=1 to n do For J:=1 to m do If A[I, J] > 4 Then K:=K+1; |
|
Определение экстремума (максимального или минимального элемента массива) |
Min:=A[1,1]; For I:=1 to n do For J:=1 to m do If A[I, J] < Min Then Min:= A[I, J]; |
Для квадратных двумерных массивов существует понятие главной и побочной диагонали.
|
Условие (соотношение индексов строки и столбца) |
Положение элемента A[i, j] в мас- сиве |
|
i=j |
На главной диагонали |
|
i>j |
Под главной диагональю |
|
i<j |
Над главной диагональю |
|
i=N-j+1 |
На побочной диагонали |
|
i>N-j+1 |
Под побочной диагональю |
|
i<N-j+1 |
Над побочной диагональю |
Задание 1. Заполнить двумерный массив с помощью генератора случайных чисел, определить, сколько процентов от общего числа элементов массива со- ставляют нулевые элементы.
Проценты можно подсчитать по формуле P:=k/(n*m)*100, где k – количе- ство нулевых элементов, n*m – общее количество элементов массива из n строк и m столбцов.
Но перед этим, чтобы определить k необходимо каждый элемент массива
А[i,j] проверить на равенство нулю (см. информационный блок).
Задание 2. Обнулить элементы главной диагонали
Алгоритм решения задачи состоит из трех действий:
1. Ввести массив;
2. Обнулить элементы, расположенные на главной диагонали;
3. Вывести массив.
Пример работы программы
|
Исходный массив |
Результат |
||||||
|
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
|
2 |
2 |
2 |
2 |
2 |
0 |
2 |
2 |
|
3 |
3 |
3 |
3 |
3 |
3 |
0 |
3 |
|
4 |
4 |
4 |
4 |
4 |
4 |
4 |
0 |
Для элементов главной диагонали справедливо условие i=j (номер строки и номер столбца совпадают), т.е. если такое условие выполняется, то элемент А[i,j] находится на главной диагонали.
Чтобы обнулить элемент нужно выполнить действие А[i,j]:=0.
Задание 3. По предложенной блок-схеме написать
программу для следую- щего задания:
определить сумму элементов строки и столбца, на пересечении которых
находится максимальный элемент
массива.
Пример работы программы
|
Исходный массив |
Результат |
|||
|
4 0 |
3 4 |
-2 7 |
8 9 |
Максимальный эле- мент=15, находится в строке 3, столбце 2 |
|
3 |
15 |
6 |
8 |
Сумма элементов равна |
|
0 |
0 |
-3 |
-4 |
54 |
![]() |
1) Приведите пример, как можно использовать генератор случайных чисел для получения дробных отрицательных чисел.
2) Как определить, что элемент двумерного массива находится над побоч- ной диагональю? под главной диагональю?
3) Что означает следующий фрагмент программы, где А(N, M) – двумерный массив?
For I:=1 to n do A[I, 5]:=0;
4) В следующем фрагменте программы определяется количество нулевых элементов двумерного массива А(N, M) в каждой строке. Что необходимо изменить, чтобы это количество определялось для каждого столбца? За- пишите в тетрадь указанный фрагмент программы с учетом изменений.
For I:=1 to n do begin
K:=0;
For J:=1 to m do
If A[I,J]=0 Then k:=k+1;
Writeln(‘кол-во нулевых элементов в ’,i,’ строке равно
’,k);
End;
Построить блок-схему и написать программу для следующего задания:
1) В каждом столбце прямоугольной матрицы поменять местами первый и последний элементы.
2) Удвоить наименьший элемент на главной диагонали квадратной мат-
рицы.
3) Дана прямоугольная матрица, создать одномерный массив, каждый элемент которого – сумма соответствующей строки матрицы.
4) Заполнить матрицу NxN по следующему образцу:
|
1 |
1 |
1 |
… |
1 |
1 |
1 |
|
1 |
1 |
0 |
… |
0 |
1 |
1 |
|
1 |
0 |
1 |
… |
1 |
0 |
1 |
|
. . . |
. . . |
. . . |
1 |
. . . |
. . . |
. . . |
|
1 |
0 |
1 |
… |
1 |
0 |
1 |
|
1 |
1 |
0 |
… |
0 |
1 |
1 |
|
1 |
1 |
1 |
… |
1 |
1 |
1 |
5) В двумерном массиве найти введенное с клавиатуры число и вывести на экран индексы всех чисел, равных введенному. Массив должен заполняться во время работы программы случайными числами 0…25.
6) Заполните константный массив 5х5 числами 1…5. Выведите на экран этот массив, а также транспонированный массив, т.е. такой, значения строк ко- торого являются значениями столбцов первоначального массива.
7) Найти сумму элементов столбца и строки массива, на пересечении ко- торых находится максимальный элемент.
8) Заполнить массив NxN значениями 1…N2 по спирали, начиная с верх- него левого угла.
9) Отсортировать каждую строку двумерного массива по возрастанию.
10) Отсортировать каждый столбец двумерного массива по убыванию.
11) Отсортировать главную диагональ квадратной матрицы по возраста-
нию.
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.