ПРАКТИЧЕСКОЕ ЗАНЯТИЕ РАЗРАБОТКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ДВУМЕРНЫХ МАССИВОВ. СОРТИРОВКА ДВУМЕРНЫХ МАССИВОВ

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00409.docx

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ

РАЗРАБОТКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ДВУМЕРНЫХ МАССИВОВ. СОРТИРОВКА ДВУМЕРНЫХ МАССИВОВ

 

1.   ЦЕЛИ ЗАНЯТИЯ

1.1   Познакомиться с приемами работы с двумерными массивами;

1.2   Научиться решать типовые задачи с двумерными массивами.

 

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

Над побочной диагональю

 

3.   ИСПОЛНИТЕЛЬНЫЙ БЛОК

Задание 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

 

 

 

 

 

 

 

 

 

 

 

 



4.   КОНТРОЛЬНЫЕ ВОПРОСЫ

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;

 

5.                                             ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ

Построить блок-схему и написать программу для следующего задания:

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