Назад | Начало урока | Вперед
Содержание

Глава 06

Задачи

6.1 Увеличивающиеся массивы. Массивы имеют фиксированную длину, но мы можем заменить существующий массив большим, если его размер окажется недостаточным. Предположим объявлен массив A, имеющий определенную длину. После попытки добавить в него очередное значение возникла исключительная ситуация arrayOutOfBoundsException. Мы сможем вызвать метод grow, который создаст новый массив на 50% большим, скопирует все значения и вернет ссылку на новый массив. Напишите такой метод и протестируйте его в небольшой программе.

6.2 Таблица расстояний. В атласе часто публикуются таблицы рассотояний между важнейшими городами, названия которых служат заголовками столбцов и колонок. В Java мы не можем создать такую табоицу в виде двумерного массива, поскольку ряды и колонки в ней являются строками, а не целыми числами. Решение заключается в применении хеш-таблицы, где ключами являются названия городов, а значениями - числа, которые послужат индексами для двумерной матрицы расстояний между городами (то есть каждому городу будет присвоен номер, а по двум номерам-индексам можно будет обращаться к двумерному массиву). Напишите программу, которая:

- охватывает до 20 городов и случайным образом генерирует значения рассояний от 50 до 1000 километров.

- использует интерфейс класса Display для задания расстояний между любыми двумя городами.

6.3 Кто в какой группе?

Модернизируйте программу 4.8 ( в которой определялся средний возраст) так, чтобы в объект вводились такие значения как имена детей, их возрвст и название группы (буквы от А до Г), а сами объекты хранились в массиве. Отсортируйте элементы массива по значениям возраста и задайте вывод информации о детях. Сможете ли вы отсортировать элементы массива по именам и по обозначениям групп?

6.4 Оценка преподавательских качеств лектора.

В университете Саванны разработана схема определения уровня преподавательского мастерства лекторов. Преподаватели оцениваются по нескольким критериям: объем знаний, манера вести лекции, умение увлечь аудиторию, использование дополнительных источников (видео, пособий, экспонатов, устройств и тд). При оценивании студенты используют пятибалльную шкалу, причем каждый балл соответствует определенному значению. Например фрагмент анкеты может выглядеть следующим образом:

Голос

живой и разнообразный
достаточно живой
удовлетворительный
скорее скучный
монотонный

Объем подаваемого

удовлетворительный
чрезмерный
хотелось бы больше
слишком много
недостаточный

Пять баллов дается за первый ответ, четыре за второй и тд. Ответы представлены в фалйе, где для каждого вопроса уже подсчитано количество студентов, выставивших свою оценку. Например:

Р.Н. Смит
6 ноября 2000 г
COS101 Принципы программирования
80 студентов
Голос 16 35 20 9 0
Материал 37 20 11 10 2

Возможный вариант вывода:

Р.Н. Смит
6 ноября 2000 г
COS101 Принципы программирования
Голос

А живой и разнообразный 20% ************
Б довольно живой 44% **********************
В удовлетворительный 25% ***************
Г скорее скучный 11% ******
Д монотонный 0%

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

- Решите, какие файлы потребуются для данных и в каком формате выводить данные.
- Определите, какой должна быть конструкция класса для хранения вводимой информации во время выполнения программы.
- Решите, что вам потребуется в программе: массивы, хеш-таблицы, обе структуры или ни одна из них.
- Напишите программу и протестируйте ее надлежащим образом.

6.5 Главы книг.

6.6 Всенародные праздники.

Используя хеш-таблицу, создайте программу, позволяющую вводить и сохранять даты всенародных праздников вашей страны для текущего года. С помощью класса Display реализуйте следующую функцию: пользователь вводит название праздника и получает взамен дату.

Эта программа написана.

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

6.7 Средняя величина напряжения.

Для определения среднего напряжения в электросети показания вольтметра фиксируются каждый час в течение 72 часов. На основе этих данных и вычисляется искомая величина. Напишите программу, в которой предусмотрен ввод 72 показаний вольтметра, и определите

- среднее напряжение в сети - часы, когда отклонение вольтажа от среднего значения превысило 10% - любые смежные часы, когда разница между показаниями вольтметра превысила 15% от средней величины напряжения

Программа должна выводить на экран график вольтажа за 72 часа. Используйте для этого класс Graph.

6.8 Полезные методы. Напишите класс, методы которого принимали бы в качестве одного из параметров массив целых чисел и могли бы выполнить следующее:

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

В этот класс мы хотели бы так же добавить методы, позволяющие:

- найти максимальный элемент, и если таких элементов несколько, зафиксировать их позиции - определить диапазон значений массива

Подумайте, почему труднее создать эти два метода и какой вариант взаимодействия между массивом и классом подойдет для реализации поставленной задачи?

6.9 Максимальный "непроходной" балл.

6.10 Из какой страны судья? В примере 6.2 вместо номеров судей мы хотели бы выводить названия стран, из которых они прибыли. Используйте массив для создания перечня стран, представители которых занимаются судейством, и модифицируйте программу так, чтобы ее вывод был более информативным. Подумайте что лучше - иметь в классе Dive массив названий стран вместе с массивом выставленных баллов, или создать другой класс, включающий названия стран и баллы?

Программа написана!

6.11 Рост населения.

6.12 Календарь на двух языках. Разработайте программу, которая выводит на экран календарь, где названия месяцев размещаются одно под другим. Используя хеш-таблицу создайте версию, в которой все названия месяцев и дней недели указаны на иностранном языке (например французском или немецком). Предоставьте пользователю возможность выбирать на каком языке должен быть выведен календарь.

6.13 Множество лампочек.

Модифицируйте Программу 6.4 так, чтбы она могла считывать некоторое количество значений из файла и использовала класс Display. Затем расширьте ее так, чтобы можно было ввести данные, полученные от 10 различных производителей лампочек, и вычислить для каждого из них среднее значение и стандартное отклонение. Начертите соответствующие гистограммы. При желании используйте генератор случайных чисел.

6.14 Сравнение показателей.

6.15 График дней рождения.

6.16 Сумма квадратов.

6.17 Онлайновое бронирование номеров.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz