Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Леднева_программирование_на_JAVA.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
11.44 Mб
Скачать

Содержание отчета

Готовится один отчет на бригаду в печатном виде для заданий согласно варианту из табл. 6.1. Он должен содержать следующие разделы:

  • титульный лист;

  • задание;

  • словесное описание алгоритма (для второй задачи);

  • схему алгоритма (для первой задачи);

  • текст программы на языке Java.

Контрольные вопросы

1. Что такое сортировка? Для каких данных она применяется?

2. Каковы особенности метода «пузырька» с двумя циклами for?

3. Существуют ли способы ускорения сортировки «пузырьком»?

4. Для чего массивы разбивают на несколько частей?

5. Какой тип будут иметь элементы частей массива?

6. Как объявить и выделить память для частей массива?

7. Почему для частей массива используются индексы, отличные от индексов исходного массива?

Лабораторная работа № 7 обработка двумерных массивов

Цель работы – знакомство с алгоритмами обработки матриц: ввод/вывод, нахождение суммы, количества, минимума/максимума по строкам/столбцам.

Источники: [3, с. 161-164], [4, с. 124-127].

Краткая теория Понятие многомерных массивов. Ввод и вывод матриц

Массив, который в качестве своих элементов содержит другие массивы, называется многомерным массивом. Они имеют два и более индексов.

Объявляются массивы следующим образом:

int[][] mas2; // двумерный – 2 индекса

double[][][] mas3; // трёхмерный массив – 3 индекса

int[][][][] mas4; // четырехмерный – 4 индекса

Чаще всего используются двумерные массивы. Такие массивы можно легко представить в виде матрицы, где строки являются обычными одномерными массивами с равным количеством элементов.

При создании массива можно указать явно размер каждого его уровня, но можно указать только размер первого уровня:

int matr = new int[3][4]; // Матрица из 3 строк и 4 столбцов

int [][] matr2 = new int[5][]; /* Двумерный массив из 5 строк. Сколько элементов будет в каждой строке, пока неизвестно. */

В последнем случае можно будет создать двумерный массив, который не будет являться матрицей из-за того, что в каждой его строке будет разное количество элементов.

Создать многомерный массив можно сразу, явно указав его элементы:

int[][] = {{1, 2, 8, 6}, {1, 2, 3, 4}, {1, 2, 3, 7}}; // матрица

int[][] = {{1, 2}, {1, 2, 3, 4, 5}, {1, 2, 3}}; // неравномерный массив

Обычно рассматриваются двумерные массивы с равным количеством элементов в каждой строке, т.е. матрицы.

Для обработки двумерных массивов используются два вложенных друг в друга цикла с разными счетчиками.

Ввод матрицы приведен на следующем примере.

int [][] x = new int[6][4];

for(int i=0; i<x.length; i++) {

for(int j=0; j<x[i].length; j++) {

x[i][j] = sc.nextInt(); // ввод элементов

}}

Вывод матрицы приведен ниже.

for(int i=0; i<x.length; i++) {

for(int j=0; j<x[i].length; j++) {

System.out.print(x[i][j] + "\t"); // вывод элементов в строку с табуляцией

}

System.out.println(); // переход на следующую строку

}

Типовые алгоритмы обработки матриц

Далее рассмотрено несколько задач с алгоритмами обработки матриц.

Алгоритмы обработки матриц в целом

Задача 7.1. Ввести матрицу а размерностью m*n. Подсчитать сумму всех элементов матрицы, а также сумму и количество положительных элементов.

Укрупненный алгоритм:

1. Ввести матрицу а.

2. Вывести матрицу а построчно.

3.1. Принять общую сумму элементов sum=0.

3.2. Принять сумму положительных элементов sump=0.

3.3. Принять количество положительных элементов kolp=0.

3.4. Для i от 0 до a.length

Для j от 0 до a[i].length

3.4.1. вычислить sum+=a[i][j];

3.4.2. если a[i][j] >0

а). kolp++;

б). sump+=a[i][j];

4. Вывести результаты: sum, sump и kolp.

5. Закончить.

Задача 7.2. Ввести матрицу x размерностью m*n. Найти максимум и минимум среди всех элементов, а также номера строк и столбцов, на пересечении которых они находятся. Поменять максимум и минимум местами.

Укрупненный алгоритм:

1. Ввести матрицу x.

2. Вывести матрицу x построчно.

3.1. Принять номер строки минимума nmini=0.

3.2. Принять номер столбца минимума nminj=0.

3.3. Принять минимум равным начальному элементу min=x[0][0].

3.4. Принять номер строки максимума nmaxi=0.

3.5. Принять номер столбца максимума nmaxj=0.

3.6. Принять максимум равным начальному элементу max=x[0][0].

3.7. Для i от 0 до x.length

Для j от 0 до x[i].length

3.7.1. если x[i][j] <min

nmini=i;

nminj=j;

min=x[i][j];

3.7.2. если x[i][j] >max

nmaxi=i;

nmaxj=j;

max=x[i][j];

3.8. Вывести результаты о максимуме и минимуме.

4. Поменять местами минимальный и максимальный элемент матрицы.

4.1. x[nmaxi][ nmaxj] = min;

4.2. x[nmini][ nminj] = max.

5. Вывести матрицу.

6. Закончить.