Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

осень / котлин2

.docx
Скачиваний:
0
Добавлен:
12.04.2025
Размер:
146.28 Кб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

Старший преподаватель

В.И. Ушаков

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ПРАКТИЧЕСКОЙ РАБОТЕ №2

РАЗРАБОТКА КЛАССОВ, НАСЛЕДОВАНИЕ, ПОЛИМОРФИЗМ

по курсу: Разработка мобильных приложений. Основы языка программирования Kotlin

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ гр. №

4116

подпись, дата

инициалы, фамилия

Санкт-Петербург 2023

Задание

Вариант 38

Определить класс Множество символов. Реализовать методы для определения принадлежности заданного элемента множеству; пересечения, объединения, разности двух множеств. Создать методы сложения, вычитания, умножения (пересечения), индексирования, присваивания. Создать массив объектов и передавать пары объектов в метод другого класса, который строит множество, состоящее из элементов, входящих только в одно из-заданных множеств.

Листинг кода:

class МножествоСимволов {

private val множество = mutableSetOf<Char>()

// Метод для добавления символа в множество

fun добавление(el: Char) {

множество.add(el)

}

// Метод для проверки наличия символа в множестве

fun содержит(el: Char): Boolean {

return множество.contains(el)

}

// Метод для вычисления пересечения двух множеств

fun пересечение(второеМножество: МножествоСимволов): МножествоСимволов {

val result = МножествоСимволов()

for (el in множество) {

if (второеМножество.содержит(el)) {

result.добавление(el)

}

}

return result

}

// Метод для вычисления объединения двух множеств

fun объединение(второеМножество: МножествоСимволов): МножествоСимволов {

val result = МножествоСимволов()

result.множество.addAll(this.множество)

result.множество.addAll(второеМножество.множество)

return result

}

// Метод для вычисления разности двух множеств

fun разность(второеМножество: МножествоСимволов): МножествоСимволов {

val result = МножествоСимволов()

for (el in множество) {

if (!второеМножество.содержит(el)) {

result.добавление(el)

}

}

return result

}

// Перегруженный оператор для вычисления пересечения множеств.

operator fun times(второеМножество: МножествоСимволов): МножествоСимволов {

return пересечение(второеМножество)

}

// Перегруженный оператор для вычисления объединения множеств.

operator fun plus(второеМножество: МножествоСимволов): МножествоСимволов {

return объединение(второеМножество)

}

// Перегруженный оператор для вычисления разности множеств.

operator fun minus(второеМножество: МножествоСимволов): МножествоСимволов {

return разность(второеМножество)

}

// Метод для доступа к символу по индексу в множестве

operator fun get(index: Int): Char? {

return if (index in 0 until множество.size) множество.elementAt(index) else null

}

// Метод для присваивания символа по индексу в множестве

operator fun set(index: Int, el: Char) {

if (index in 0 until множество.size) {

val элементы = множество.toMutableList()

элементы[index] = el

множество.clear()

множество.addAll(элементы)

}

}

fun getМножество(): Set<Char> {

return множество.toSet()

}

//переопределение метода toString() для возращения строкового представления множества

override fun toString(): String {

return множество.toString()

}

}

class НовоеМножество {

//Метод для создания нового множества из уникальных символов, входящих только в одно из заданных множеств

fun построитьМножество(пары: Array<Pair<МножествоСимволов, МножествоСимволов>>): МножествоСимволов {

val новоеМножество = mutableSetOf<Char>()

for ((первое, второе) in пары) {

for (el in первое.getМножество()) {

if (!второе.содержит(el) && !новоеМножество.contains(el)) {

новоеМножество.add(el)

}

}

for (el in второе.getМножество()) {

if (!первое.содержит(el) && !новоеМножество.contains(el)) {

новоеМножество.add(el)

}

}

}

val result = МножествоСимволов()

for (el in новоеМножество) {

result.добавление(el)

}

return result

}

}

fun main() {

val множество1 = МножествоСимволов()

множество1.добавление('А')

множество1.добавление('Б')

множество1.добавление('В')

val множество2 = МножествоСимволов()

множество2.добавление('Б')

множество2.добавление('В')

множество2.добавление('Г')

println("Множество 1: $множество1")

println("Множество 2: $множество2")

val пересечениеМножеств = множество1 * множество2

println("Пересечение: $пересечениеМножеств")

val объединениеМножеств = множество1 + множество2

println("Объединение: $объединениеМножеств")

val разностьМножеств1 = множество1- множество2

println("Разность1: $разностьМножеств1")

val разностьМножеств2 = множество2- множество1

println("Разность2: $разностьМножеств2")

println("Второй элемент множества1: ${множество1[1]}")

множество2[1] = 'А'

println("Множество2 после присваивания: $множество2")

val пары = arrayOf(Pair(множество1, множество2))

val new = НовоеМножество()

val результат = new.построитьМножество(пары)

println("Множество из элементов, входящих только в одно из заданных множеств: $результат")

}

Результат работы программы:

Рисунок 1- результат работы программы

Рисунок 2- результат работы программы для других данных

Вывод: в ходе выполнения практической работы была написана программа, которая позволяет работать с множествами, создан класс МножествоСимволов, написан метод добавления элементов в множество; метод, определения принадлежности заданного элемента множеству, методы для вычисления пересечения, объединения и разности двух множеств, также перегруженные операторы вычитания, умножения и сложения; метод для доступа к символу по индексу в множестве; метод для присваивания символа по индексу в множестве; метод для создания нового множества из уникальных символов из других множеств.

Соседние файлы в папке осень