- •Часть 1
- •Часть 1
- •Введение
- •Лабораторная работа № 1 разработка схем алгоритмов
- •Краткая теория Этапы решения задач на эвм
- •Определение алгоритма и способы его описания
- •Правила оформления схем алгоритмов
- •Типы алгоритмов
- •Задания
- •Построение схем алгоритмов с помощью текстового редактора word
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 2 работа в среде netbeans. Создание простейших программ с линейным алгоритмом
- •Краткая теория Установка ide NetBeans
- •Общие правила создания приложений
- •Работа с проектом NetBeans
- •Пример создания простейшего приложения
- •Общие правила построения класса
- •Типы данных
- •Объявление переменных
- •Оператор присваивания
- •Приведение типов
- •Организация ввода данных
- •Организация вывода данных
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 3 разработка простейших приложений на базе разветвляющихся алгоритмов
- •Краткая теория Средства переименования в среде NetBeans
- •Отладка кода в среде NetBeans
- •Условный оператор if-else
- •Условный оператор switch
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 4 разработка программ с циклами со счетчиком
- •Краткая теория Циклы со счетчиком
- •Особенности алгоритмов и программ с накапливанием
- •Методы класса Math
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 5 работа с итерационными циклами. Одномерные массивы
- •Краткая теория Итерационные циклы
- •Цикл while
- •Цикл do-while
- •Одномерные массивы
- •Подсчет суммы, количества и среднего значения в одномерных массивах
- •Нахождение минимума и максимума
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 6 алгоритмы сортировки и разбиения одномерных массивов
- •Краткая теория Сортировка одномерных массивов
- •Разбиение одномерных массивов
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 7 обработка двумерных массивов
- •Краткая теория Понятие многомерных массивов. Ввод и вывод матриц
- •Типовые алгоритмы обработки матриц
- •Алгоритмы обработки матриц в целом
- •Алгоритмы обработки матриц по строкам и столбцам
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 8 диагонали матрицы, умножение матриц
- •Краткая теория Обработка главной и побочной диагоналей матриц
- •Работа с диагоналями матриц выше и ниже главной/побочной
- •Умножение матриц
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 9 обработка строк класса string
- •Краткая теория Создание объектов класса String
- •Методы класса String
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 10 алгоритмы и программы обработки фрагментов строк класса string
- •Краткая теория Сравнение символов строк класса String
- •Типовые задачи обработки массивов строк (слов из текста)
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 11 разработка алгоритмов и программ с использованием классов StringBuffer/StringBuilder
- •Краткая теория Создание и обработка объектов классов stringbuffer и stringbuilder
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 12 разработка собственных методов
- •Краткая теория Общие правила создания методов класса
- •Описание методов класса
- •Вызов методов класса
- •Передача параметров
- •Содержание
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Программирование на Java
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •443100, Г. Самара, ул. Молодогвардейская, 244. Корпус № 8
Содержание отчета
Готовится один отчет на бригаду в печатном виде для заданий по вариантам из табл. 7.1. Он должен содержать следующие разделы:
титульный лист;
задание;
словесное описание алгоритма;
текст программы на языке Java.
Контрольные вопросы
1. Что представляют собой многомерные массивы и для чего они используются?
2. Как объявляются многомерные массивы в Java и как для них выделяется память?
3. Могут ли многомерные массивы иметь разную длину строк?
4. Каковы основные правила обработки матриц? Какие алгоритмы для этого используются?
5. Как осуществляется ввод и вывод матрицы по строкам?
6. Каковы особенности алгоритмов обработки матрицы в целом?
7. Каковы особенности алгоритмов обработки матрицы по строкам?
8. Каковы особенности алгоритмов обработки матрицы по столбцам?
9. Есть ли отличия в алгоритмах подсчета сумм и нахождения минимума и максимума в строках?
10. Есть ли отличия в алгоритмах подсчета сумм и нахождения минимума и максимума в столбцах?
Лабораторная работа № 8 диагонали матрицы, умножение матриц
Цель работы – знакомство с алгоритмами обработки матриц: ввод/вывод диагоналей матриц, формирование элементов при умножении матриц.
Источники: [3, с. 161-164], [4, с. 124-127].
Краткая теория Обработка главной и побочной диагоналей матриц
Понятие диагоналей применимо только для квадратных матриц, у которых количество строк и столбцов одинаковое. На рис. 8.1 представлена квадратная матрица размером n*n.
-
b00
b01
b02
b03
b04
b05
…
b0(n-1)
b10
b11
b12
b13
b14
b15
…
b1(n-1)
b20
b21
b22
b23
b24
b25
…
b2(n-1)
b
B =
30b31
b32
b33
b34
b35
…
b3(n-1)
b40
b41
b42
b43
b44
b45
…
b4(n-1)
b50
b51
b52
b53
b54
b55
…
b5(n-1)
…
…
…
…
…
…
…
…
b(n-1)0
b(n-1)1
b(n-1)2
b(n-1)3
b(n-1)4
b(n-1)5
…
b(n-1)(n-1)
Рис. 8.1
Главная диагональ матрицы проходит от верхнего левого к нижнему правому углу. Она содержит следующие элементы:
b00, b11, b22, b33, …, b(n-1)(n-1).
Побочная диагональ, напротив, расположена от верхнего правого к нижнему левому углу. Она включает в себя такие элементы:
b0(n-1), b1(n-2), b2(n-3), …, b(n-1)0.
Очевидно, что обе диагонали представляют собой одномерные массивы. Номер последнего элемента строки или столбца вместо (n – 1) принято обозначать через параметр длины массива (b.length – 1). Для их обработки необходим один цикл, параметром которого является, например, первый индекс. При этом второй индекс j (номер столбца) можно вычислять через первый i (номер строки) следующим образом:
– так как элементы главной диагонали имеют одинаковые индексы (номер строки равен номеру столбца), обращение к элементу, стоящему на этой диагонали, можно записать bii;
– для элементов побочной диагонали сумма индексов для любого из них равна b.length – 1 (номер строки + номер столбца=n – 1). Поэтому при известном первом индексе i второй может быть вычислен как n – 1 – i. Другими словами, обращение к элементу побочной диагонали можно записать так: bi,n-1-i.
Задача 8.1. Ввести матрицу x размерностью m*m. Вывести элементы ее главной и побочной диагоналей. Для заполнения массива использовать объект класса Random, генерирующий целые числа в интервале от 0 до 3.
public class VivodDiag {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("Введите размер квадратной матрицы => ");
int m=sc.nextInt();
// Заполнение массива случайными числами с использованием класса Random
Random rn= new Random();
int x[][]=new int [m][m];
for (int i = 0; i < x.length; i++)
for (int j = 0; j < i+1; j++)
x[i][j]=rn.nextInt(3);
// Вывод массива
System.out.println("\n Матрица:");
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < x[i].length; j++)
System.out.print("\t"+ x[i][j]);
System.out.println("");
}
System.out.println("Главная диагональ:");
for (int i = 0; i < x.length; i++) {
System.out.print("\t"+x[i][i]);
}
System.out.println("\nПобочная диагональ:");
for (int i = 0; i < x.length; i++) {
System.out.print("\t"+x[i][x.length – i –1]);
}
}
}
