Листинг 2.9. Треугольник Паскаля.




Лабораторная работа 5. Работа с многмерными массивами

Цель работы: Использование многомерных массивов при работе с Java

Форма предоставления отчета: демонстрация результатов выполнения работы и защита подготовленного отчета согласно представленному варианту индивидуального задания.

Краткая теория по теме.

МНОГОМЕРНЫЕ МАССИВЫ

Массив может состоять не только из элементов какого-то встроенного типа (int, double и пр.), но и, в том числе, из объектов какого-то существующего класса и даже из других массивов.

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

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

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

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

int[] d1; //Обычный, одномерныйint[][] d2; //Двумерныйdouble[][] d3; //Трёхмерныйint[][][][][] d5; //Пятимерный

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

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

Но можно указать только размер первого уровня:

int[][] dd2 = int[5][]; /* Матрица из 5 строк. Сколько элементов будет в каждой строке пока не известно. */

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

for(int i=0; i<5; i++) { dd2[i] = new int[i+2];}

В результате получим массив:

0 00 0 00 0 0 00 0 0 0 00 0 0 0 0 0

Можно создать массив, явно указав его элементы. Например, так:

int[][] ddd2 = {{1,2}, {1,2,3,4,5}, {1,2,3}};

При этом можно обратиться к элементу с индексом 4 во второй строке ddd2[1][4], но если мы обратимся к элементу ddd2[0][4 ] или ddd2[2][4] — произойдёт ошибка, поскольку таких элементов нет. Притом ошибка — это будет происходить уже во время исполнения программы (т.е. компилятор её не увидит).

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

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

Пример (заполняем двумерный массив случайными числами от 0 до 9 и выводим его на экран в виде матрицы):

int[][] da = new int[6][4];for(int i=0; i<da.length; i++) { for(int j=0; j<da[i].length; j++) { da[i][j] = (int)(Math.random()*10); }}for(int i=0; i<da.length; i++) { for(int j=0; j<da[i].length; j++) { System.out.print(da[i][j] + "\t"); } System.out.println(); // Переходим на следующую строку}

В листинге 2.9 приведен пример программы, вычисляющий первые 10 строк треугольника Паскаля, заносящей их в треугольный массив и выводящей его элементы в консоль.

Листинг 2.9. Треугольник Паскаля.

 

+Задание

Создать классы, спецификации которых приведены ниже. Определить конструкторы и методы set Тип (), get Тип (), toString(). Определить дополнительно методы в классе, создающем массив объектов. Задать критерий выбора данных и вывести эти данные на консоль. В каждом классе, обладающем информацией, должно быть объявлено несколько конструкторов.

 

№ варианта Задание
  Student: id, Фамилия, Имя, Отчество, Дата рождения, Адрес, Телефон, Факультет, Курс, Группа. Создать массив объектов. Вывести: список студентов заданного факультета, списки студентов для каждого факультета и курса.
  Customer: id, Фамилия, Имя, Отчество, Адрес, Номер кредитной карточки, Номер банковского счета. Создать массив объектов. Вывести: список покупателей в алфавитном порядке, список покупателей, у которых номер кредитной карточки находится в заданном интервале.
  Patient: id, Фамилия, Имя, Отчество, Адрес, Телефон, Номер медицинской карты, Диагноз. Создать массив объектов. Вывести: список пациентов, имеющих данный диагноз, список пациентов, номер медицинской карты которых находится в заданном интервале.
  Abiturient: id, Фамилия, Имя, Отчество, Адрес, Телефон, Оценки. Создать массив объектов. Вывести: список абитуриентов, имеющих неудовлетворительные оценки, список абитуриентов, у которых сумма баллов выше заданной.
  Book: id, Название, Автор (ы), Издательство, Год издания, Количество стра- ниц, Цена, Тип переплета. Создать массив объектов. Вывести: список книг заданного автора, список книг, выпущенных заданным издательством, список книг, выпущенных после заданного года.
  House: id, Номер квартиры, Площадь, Этаж, Количество комнат, Улица, Тип здания, Срок эксплуатации. Создать массив объектов. Вывести: список квартир, имеющих заданное число комнат, список квартир, имеющих заданное число комнат и расположенных на этаже, который находится в заданном промежутке, список квартир, имеющих площадь, превосходящую заданную.
  Phone: id, Фамилия, Имя, Отчество, Адрес, Номер кредитной карточки, Дебет, Кредит, Время городских и междугородных разговоров. Создать массив объектов. Вывести: сведения об абонентах, у которых время внутригородских разговоров превышает заданное, сведения об абонентах, которые пользовались междугородной связью, сведения об абонентах в алфавитном порядке.
  Car: id, Марка, Модель, Год выпуска, Цвет, Цена, Регистрационный номер. Создать массив объектов. Вывести: список автомобилей заданной марки, список автомобилей заданной модели, которые эксплуатируются больше n лет, список автомобилей заданного года выпуска, цена которых больше указанной.
  Product: id, Наименование, Производитель, Цена, Срок хранения, Количество. Создать массив объектов. Вывести: список товаров для заданного наименования, список товаров для заданного наименования, цена которых не превосходит заданную.
  Train: Пункт назначения, Номер поезда, Время отправления, Число мест (общих, купе, плацкарт, люкс). Создать массив объектов. Вывести: список поездов, следующих до заданного пункта назначения, список поездов, следующих до заданного пункта назначения и отправляющихся после заданного часа.
  Bus: Фамилия и инициалы водителя, Номер автобуса, Номер маршрута, Марка, Год начала эксплуатации, Пробег. Создать массив объектов. Вывести: список автобусов для заданного номера маршрута, список автобусов, которые эксплуатируются больше заданного срока.
  Airline: Пункт назначения, Номер рейса, Тип самолета, Время вылета, Дни недели. Создать массив объектов. Вывести: список рейсов для заданного пункта назначения, список рейсов для заданного дня недели.
  Student: id, Фамилия, Имя, Отчество, Дата рождения, Адрес, Телефон, Факультет, Курс, Группа. Создать массив объектов. Вывести: список студентов, родившихся после заданного года, список учебной группы.
  Abiturient: id, Фамилия, Имя, Отчество, Адрес, Телефон, Оценки. Создать массив объектов. Вывести: выбрать заданное число n абитуриентов, имеющих самую высокую сумму баллов (вывести также полный список абитуриентов, имеющих полупроходную сумму).
  Train: Пункт назначения, Номер поезда, Время отправления, Число мест (общих, купе, плацкарт, люкс). Создать массив объектов. Вывести: список поездов, отправляющихся до заданного пункта назначения и имеющих общие места
  Bus: Фамилия и инициалы водителя, Номер автобуса, Номер маршрута, Марка, Год начала эксплуатации, Пробег. Создать массив объектов. Вывести: список автобусов, пробег у которых больше заданного расстояния.
  Airline: Пункт назначения, Номер рейса, Тип самолета, Время вылета, Дни недели. Создать массив объектов. Вывести, список рейсов для заданного дня недели, время вылета для которых больше заданного.
  Product: id, Наименование, Производитель, Цена, Срок хранения, Количество. Создать массив объектов. Вывести: список товаров, срок хранения которых больше заданного, список товаров заданного производителя.
  Создать суперкласс Учащийся и подклассы Школьник и Студент. Создать массив объектов суперкласса и заполнить этот массив объектами. Показать отдельно студентов и школьников.
  Создать базовый класс Садовое дерево и производные классы Яблоня, Вишня, Груша и другие. С помощью конструктора автоматически установить номер каждого дерева. Принять решение о пересадке каждого дерева в зависимости от возраста и плодоношения.


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: