Хелпикс

Главная

Контакты

Случайная статья





Задание на практическую работу №25



Задание на практическую работу №25

1.Ознакомиться с классами Pattern, Matcher и PatternSyntaxException

2. Выбрать IPv4 адреса во всех возможных, представлениях: десятичном, шестнадцатеричном и восьмеричном. С точками и без. Подробнее про IP адреса можно узнать в википедии

3. Составить регулярное выражение, определяющее является ли заданная строка IP адресом, записанным в десятичном виде.
– пример правильных выражений: 127.0.0.1, 255.255.255.0.
– пример неправильных выражений: 1300.6.7.8, abc.def.gha.bcd.

4. Создать запрос для вывода только правильно написанных выражений со
скобками (количество открытых и закрытых скобок должно быть одинаково).
– пример правильных выражений: (3*+*5)*–*9*×*4.
– пример неправильных выражений: ((3*+*5)*–*9*×*4.

Задание на практическую работу №26

1. Реализовать очередь на массиве
• Найдите инвариант структуры данных «очередь». Определите функции, которые необходимы для реализации очереди. Найдите их пред- и постусловия.
• Реализуйте классы, представляющие циклическую очередь с применением массива.
В результате выполнения задания должны быть реализованы следующие классы: класс ArrayQueueModule должен реализовывать один экземпляр очереди с использованием переменных класса, класс ArrayQueueADT должен реализовывать очередь в виде абстрактного типа данных (с явной передачей ссылки на экземпляр очереди), класс ArrayQueue должен реализовывать очередь в виде класса (с неявной передачей ссылки на экземпляр очереди)

В задании у классов должны быть реализованы следующие функции(процедуры) / методы:
 enqueue – добавить элемент в очередь;
 element – первый элемент в очереди;
 dequeue – удалить и вернуть первый элемент в очереди;
 size – текущий размер очереди;
 isEmpty – является ли очередь пустой;
 clear – удалить все элементы из очереди.
Замечания: инвариант, пред- и постусловия записываются в исходном коде в виде комментариев. Также обратите внимание на инкапсуляцию данных и кода во всех трех реализациях.
Напишите тесты реализованным классам.

2. Реализация структуры данных Очередь на связном списке

Для выполнения задания необходимо:
-Определить интерфейс очереди Queue и описать его контракт.
-Реализовать класс LinkedQueue — очередь на связном списке.
-Выделить общие части классов LinkedQueue и ArrayQueue в базовый класс AbstractQueue.
Напишите тесты реализованным классам.
Дополнительные задания
3. Вычисление выражений
3.1. Разработайте классы Const, Variable, Add, Subtract, Multiply, Divide для вычисления выражений с одной переменной.
3.2 Классы должны позволять составлять выражения вида                          
new Subtract(
         new Multiply(
             new Const(2),
             new Variable("x")
             ),
              new Const(3)
        ).evaluate(5)
При вычислении такого выражения вместо каждой переменной подставляется значение, переданное в качестве параметра методу evaluate (на данном этапе имена переменных игнорируются). Таким образом, результатом вычисления приведенного примера должно стать число 7.
3.3. Для тестирования программы должен быть создан класс Main, который вычисляет значение выражения x2−2x+1, для x, заданного в командной строке.
3.4. При выполнение задания следует обратить внимание на:
• Выделение общего интерфейса создаваемых классов.
• Выделение абстрактного базового класса для бинарных операций.
Задание 4
4.1. Доработайте предыдущее задание, так что бы выражение строилось по записи вида          
              x * (y - 2)*z + 1
Для этого реализуйте класс ExpressionParser с методом TripleExpression parse(String).
4.2. В записи выражения могут встречаться: умножение *, деление /, сложение +, вычитание -, унарный минус -, целочисленные константы (в десятичной системе счисления, которые помещаются в 32-битный знаковый целочисленный тип), круглые скобки, переменные (x, y и z) и произвольное число пробельных символов в любом месте (но не внутри констант).
4.3. Приоритет операторов, начиная с наивысшего
• унарный минус;
• умножение и деление;
• сложение и вычитание.
Пример для выражения 1000000*x*x*x*x*x/(x-1) вывод программы должен иметь следующий вид:
 x  f
           0  0
           1  division by zero
           2  32000000
           3  121500000
           4  341333333
           5  overflow



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.