From f155c48dc74baa7768e007ba46a1c4e4fe4cbeec Mon Sep 17 00:00:00 2001 From: HackDwenture Date: Thu, 30 Jan 2025 13:36:21 +0300 Subject: [PATCH 1/3] Delete Tasks1.java --- Tasks1.java | 341 ---------------------------------------------------- 1 file changed, 341 deletions(-) delete mode 100644 Tasks1.java diff --git a/Tasks1.java b/Tasks1.java deleted file mode 100644 index f5f2b70..0000000 --- a/Tasks1.java +++ /dev/null @@ -1,341 +0,0 @@ - -import java.util.Arrays; -import java.util.Scanner; - -public class Tasks1 { - - public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - - while (true) { - System.out.println("\nВыберите задачу (1-20) или 0 для выхода:"); - int choice = scanner.nextInt(); - scanner.nextLine(); - - switch (choice) { - case 0 -> { - System.out.println("Выход из программы."); - return; - } - case 1 -> task1(scanner); - case 2 -> task2(scanner); - case 3 -> task3(); - case 4 -> task4(scanner); - case 5 -> task5(scanner); - case 6 -> task6(scanner); - case 7 -> task7(scanner); - case 8 -> task8(scanner); - case 9 -> task9(scanner); - case 10 -> task10(scanner); - case 11 -> task11(scanner); - case 12 -> task12(scanner); - case 13 -> task13(scanner); - case 14 -> task14(scanner); - case 15 -> task15(scanner); - case 16 -> task16(scanner); - case 17 -> task17(scanner); - case 18 -> task18(scanner); - case 19 -> task19(scanner); - case 20 -> task20(scanner); - default -> System.out.println("Неверный выбор. Попробуйте еще раз."); - } - } - } - // Задача 1: Четное или нечетное число - public static void task1(Scanner scanner) { - System.out.println("Введите целое число:"); - int number = scanner.nextInt(); - if (number % 2 == 0) { - System.out.println("Число " + number + " четное."); - } else { - System.out.println("Число " + number + " нечетное."); - } - } - - // Задача 2: Минимальное из трех чисел - public static void task2(Scanner scanner) { - System.out.println("Введите три целых числа:"); - int num1 = scanner.nextInt(); - int num2 = scanner.nextInt(); - int num3 = scanner.nextInt(); - int min = Math.min(Math.min(num1, num2), num3); - System.out.println("Минимальное число: " + min); - } - - // Задача 3: Таблица умножения на 5 - public static void task3() { - System.out.println("Таблица умножения на 5:"); - for (int i = 1; i <= 10; i++) { - System.out.println("5 * " + i + " = " + (5 * i)); - } - } - // Задача 4: Сумма чисел от 1 до N - public static void task4(Scanner scanner) { - System.out.println("Введите целое число N:"); - int n = scanner.nextInt(); - int sum = 0; - for (int i = 1; i <= n; i++) { - sum += i; - } - System.out.println("Сумма чисел от 1 до " + n + ": " + sum); - } - // Задача 5: Числа Фибоначчи - public static void task5(Scanner scanner) { - System.out.println("Введите целое число N:"); - int n = scanner.nextInt(); - if (n <= 0) { - System.out.println("N должно быть больше 0."); - return; - } - int[] fib = new int[n]; - if (n >= 1) { - fib[0] = 0; - } - if (n >= 2) { - fib[1] = 1; - } - - for (int i = 2; i < n; i++) { - fib[i] = fib[i - 1] + fib[i - 2]; - } - System.out.println("Первые " + n + " чисел Фибоначчи: " + Arrays.toString(fib)); - } - - // Задача 6: Проверка простого числа - public static void task6(Scanner scanner) { - System.out.println("Введите целое число:"); - int number = scanner.nextInt(); - if (number <= 1) { - System.out.println(number + " не является простым числом."); - return; - } - boolean isPrime = true; - for (int i = 2; i <= Math.sqrt(number); i++) { - if (number % i == 0) { - isPrime = false; - break; - } - } - if (isPrime) { - System.out.println(number + " является простым числом."); - } else { - System.out.println(number + " не является простым числом."); - } - } - - // Задача 7: Обратный порядок чисел - public static void task7(Scanner scanner) { - System.out.println("Введите целое число N:"); - int n = scanner.nextInt(); - System.out.println("Числа от " + n + " до 1 в обратном порядке:"); - for (int i = n; i >= 1; i--) { - System.out.print(i + " "); - } - System.out.println(); - } - // Задача 8: Сумма четных чисел в диапазоне - public static void task8(Scanner scanner) { - System.out.println("Введите два целых числа A и B:"); - int a = scanner.nextInt(); - int b = scanner.nextInt(); - int sum = 0; - for (int i = Math.min(a, b); i <= Math.max(a, b); i++) { - if (i % 2 == 0) { - sum += i; - } - } - System.out.println("Сумма четных чисел в диапазоне от " + a + " до " + b + ": " + sum); - } - // Задача 9: Реверс строки - public static void task9(Scanner scanner) { - System.out.println("Введите строку:"); - String input = scanner.nextLine(); - String reversed = new StringBuilder(input).reverse().toString(); - System.out.println("Строка в обратном порядке: " + reversed); - } - // Задача 10: Количество цифр в числе - public static void task10(Scanner scanner) { - System.out.println("Введите целое число:"); - int number = scanner.nextInt(); - int count = 0; - if (number == 0) { - count = 1; - }else{ - number = Math.abs(number); - while (number > 0) { - number /= 10; - count++; - } - } - System.out.println("Количество цифр в числе: " + count); - } - // Задача 11: Факториал числа - public static void task11(Scanner scanner) { - System.out.println("Введите целое число N:"); - int n = scanner.nextInt(); - long factorial = 1; - if (n < 0) { - System.out.println("Факториал не определен для отрицательных чисел."); - return; - } - for (int i = 1; i <= n; i++) { - factorial *= i; - } - System.out.println("Факториал числа " + n + ": " + factorial); - } - // Задача 12: Сумма цифр числа - public static void task12(Scanner scanner) { - System.out.println("Введите целое число:"); - int number = scanner.nextInt(); - int sum = 0; - number = Math.abs(number); - while (number > 0) { - sum += number % 10; - number /= 10; - } - System.out.println("Сумма цифр числа: " + sum); - } - // Задача 13: Палиндром - public static void task13(Scanner scanner) { - System.out.println("Введите строку:"); - String input = scanner.nextLine(); - String cleanInput = input.replaceAll("[^a-zA-Z0-9]", "").toLowerCase(); - String reversed = new StringBuilder(cleanInput).reverse().toString(); - if (cleanInput.equals(reversed)) { - System.out.println("Строка является палиндромом."); - } else { - System.out.println("Строка не является палиндромом."); - } - } - - // Задача 14: Найти максимальное число в массиве - public static void task14(Scanner scanner) { - System.out.println("Введите размер массива:"); - int size = scanner.nextInt(); - int[] array = new int[size]; - System.out.println("Введите элементы массива:"); - for (int i = 0; i < size; i++) { - array[i] = scanner.nextInt(); - } - int max = array[0]; - for (int i = 1; i < size; i++) { - if (array[i] > max) { - max = array[i]; - } - } - System.out.println("Максимальное число в массиве: " + max); - } - - // Задача 15: Сумма всех элементов массива - public static void task15(Scanner scanner) { - System.out.println("Введите размер массива:"); - int size = scanner.nextInt(); - int[] array = new int[size]; - System.out.println("Введите элементы массива:"); - for (int i = 0; i < size; i++) { - array[i] = scanner.nextInt(); - } - int sum = 0; - for (int num : array) { - sum += num; - } - System.out.println("Сумма всех элементов массива: " + sum); - } - // Задача 16: Количество положительных и отрицательных чисел - public static void task16(Scanner scanner){ - System.out.println("Введите размер массива:"); - int size = scanner.nextInt(); - int[] array = new int[size]; - System.out.println("Введите элементы массива:"); - for (int i = 0; i < size; i++) { - array[i] = scanner.nextInt(); - } - int positiveCount = 0; - int negativeCount = 0; - for (int num : array) { - if (num > 0) { - positiveCount++; - } else if (num < 0) { - negativeCount++; - } - } - System.out.println("Количество положительных чисел: " + positiveCount); - System.out.println("Количество отрицательных чисел: " + negativeCount); - } - // Задача 17: Простые числа в диапазоне - public static void task17(Scanner scanner) { - System.out.println("Введите два целых числа A и B:"); - int a = scanner.nextInt(); - int b = scanner.nextInt(); - System.out.println("Простые числа в диапазоне от " + a + " до " + b + ":"); - for (int i = Math.min(a, b); i <= Math.max(a, b); i++) { - if (isPrime(i)) { - System.out.print(i + " "); - } - } - System.out.println(); - } - // вспомогательный метод проверки числа на простоту для задачи 17 - public static boolean isPrime(int number) { - if (number <= 1) { - return false; - } - for (int i = 2; i <= Math.sqrt(number); i++) { - if (number % i == 0) { - return false; - } - } - return true; - } - // Задача 18: Подсчет гласных и согласных в строке - public static void task18(Scanner scanner){ - System.out.println("Введите строку:"); - String input = scanner.nextLine().toLowerCase(); - int vowelCount = 0; - int consonantCount = 0; - String vowels = "aeiouyаеёиоуыэюя"; - for (char c : input.toCharArray()) { - if (Character.isLetter(c)) { - if (vowels.contains(String.valueOf(c))) { - vowelCount++; - } else { - consonantCount++; - } - } - } - System.out.println("Количество гласных: " + vowelCount); - System.out.println("Количество согласных: " + consonantCount); - } - // Задача 19: Перестановка слов в строке - public static void task19(Scanner scanner) { - System.out.println("Введите строку, состоящую из нескольких слов:"); - String input = scanner.nextLine(); - String[] words = input.split("\\s+"); // Разбиваем строку на слова - System.out.println("Слова в обратном порядке:"); - for (int i = words.length - 1; i >= 0; i--) { - System.out.print(words[i] + " "); - } - System.out.println(); - } - // Задача 20: Число Армстронга - public static void task20(Scanner scanner) { - System.out.println("Введите целое число:"); - int number = scanner.nextInt(); - int originalNumber = number; - int n = String.valueOf(number).length(); - int sum = 0; - - while (number > 0) { - int digit = number % 10; - sum += Math.pow(digit, n); - number /= 10; - } - - if (sum == originalNumber) { - System.out.println(originalNumber + " является числом Армстронга."); - } else { - System.out.println(originalNumber + " не является числом Армстронга."); - } - } - -} From eda522c6937bccc3f95681642bbab921a4d0469f Mon Sep 17 00:00:00 2001 From: HackDwenture Date: Thu, 30 Jan 2025 13:36:28 +0300 Subject: [PATCH 2/3] Delete Tasks2.dart --- Tasks2.dart | 511 ---------------------------------------------------- 1 file changed, 511 deletions(-) delete mode 100644 Tasks2.dart diff --git a/Tasks2.dart b/Tasks2.dart deleted file mode 100644 index fea256f..0000000 --- a/Tasks2.dart +++ /dev/null @@ -1,511 +0,0 @@ -import 'dart:io'; -import 'dart:math'; - -// 1. Функция для нахождения максимума -int findMax(int a, int b) { - if (a == b) { - throw Exception("Числа равны"); - } - return a > b ? a : b; -} - -// 2. Калькулятор деления -double divide(double a, double b) { - if (b == 0) { - throw ArithmeticException("Деление на ноль недопустимо"); - } - return a / b; -} - -// 3. Конвертер строк в числа -int stringToInt(String str) { - try { - return int.parse(str); - } on FormatException { - throw NumberFormatException("Невозможно преобразовать строку в число"); - } -} - -// 4. Проверка возраста -void checkAge(int age) { - if (age < 0 || age > 150) { - throw IllegalArgumentException("Некорректный возраст"); - } -} - -// 5. Нахождение корня -double findSquareRoot(double number) { - if (number < 0) { - throw IllegalArgumentException("Нельзя извлечь корень из отрицательного числа"); - } - return sqrt(number); -} - -// 6. Факториал -int factorial(int n) { - if (n < 0) { - throw Exception("Факториал не определен для отрицательных чисел"); - } - if (n == 0) { - return 1; - } - int result = 1; - for (int i = 1; i <= n; i++) { - result *= i; - } - return result; -} - - -// 7. Проверка массива на нули -void checkArrayForZeros(List arr) { - if (arr.contains(0)) { - throw Exception("Массив содержит нули"); - } -} - -// 8. Калькулятор возведения в степень -double power(double base, int exponent) { - if (exponent < 0) { - throw Exception("Степень должна быть неотрицательной"); - } - return pow(base, exponent).toDouble(); -} - -// 9. Обрезка строки -String trimString(String str, int length) { - if (length > str.length) { - throw Exception("Длина обрезки больше длины строки"); - } - return str.substring(0, length); -} - -// 10. Поиск элемента в массиве -int findElementInArray(List arr, int element) { - int index = arr.indexOf(element); - if (index == -1) { - throw Exception("Элемент не найден в массиве"); - } - return index; -} - -// 11. Конвертация в двоичную систему -String toBinary(int number) { - if (number < 0) { - throw Exception("Нельзя конвертировать отрицательное число в двоичное"); - } - return number.toRadixString(2); -} - -// 12. Проверка делимости -bool isDivisible(int dividend, int divisor) { - if (divisor == 0) { - throw ArithmeticException("Деление на ноль недопустимо"); - } - return dividend % divisor == 0; -} - -// 13. Чтение элемента списка -int getElementFromList(List list, int index) { - if (index < 0 || index >= list.length) { - throw IndexOutOfBoundsException("Индекс выходит за границы списка"); - } - return list[index]; -} - -// 14. Парольная проверка -void checkPassword(String password) { - if (password.length < 8) { - throw WeakPasswordException("Пароль слишком короткий"); - } -} - -// 15. Проверка даты -void checkDate(String dateString) { - RegExp regExp = RegExp(r'^\d{2}\.\d{2}\.\d{4}$'); - if (!regExp.hasMatch(dateString)){ - throw DateTimeParseException("Неверный формат даты"); - } - try { - DateTime.parse(dateString.split('.').reversed.join('-')); - } on FormatException { - throw DateTimeParseException("Неверный формат даты"); - } -} - -// 16. Конкатенация строк -String concatenateStrings(String? str1, String? str2) { - if (str1 == null || str2 == null) { - throw NullPointerException("Одна из строк равна null"); - } - return str1 + str2; -} - -// 17. Остаток от деления -int remainder(int dividend, int divisor) { - if (divisor == 0) { - throw Exception("Деление на ноль недопустимо"); - } - return dividend % divisor; -} - -// 18. Квадратный корень -double squareRoot(double number) { - if (number < 0) { - throw Exception("Нельзя извлечь корень из отрицательного числа"); - } - return sqrt(number); -} - -// 19. Конвертер температуры -double celsiusToFahrenheit(double celsius) { - if (celsius < -273.15) { - throw Exception("Температура ниже абсолютного нуля"); - } - return (celsius * 9 / 5) + 32; -} - -// 20. Проверка строки на пустоту -void checkStringNotEmpty(String? str) { - if (str == null || str.isEmpty) { - throw Exception("Строка пустая или равна null"); - } -} - -// Пользовательский интерфейс -void main() { - while (true) { - print("\nВыберите задачу:"); - print("1. Нахождение максимума"); - print("2. Калькулятор деления"); - print("3. Конвертер строк в числа"); - print("4. Проверка возраста"); - print("5. Нахождение корня"); - print("6. Факториал"); - print("7. Проверка массива на нули"); - print("8. Калькулятор возведения в степень"); - print("9. Обрезка строки"); - print("10. Поиск элемента в массиве"); - print("11. Конвертация в двоичную систему"); - print("12. Проверка делимости"); - print("13. Чтение элемента списка"); - print("14. Парольная проверка"); - print("15. Проверка даты"); - print("16. Конкатенация строк"); - print("17. Остаток от деления"); - print("18. Квадратный корень"); - print("19. Конвертер температуры"); - print("20. Проверка строки на пустоту"); - print("0. Выход"); - - stdout.write("Введите номер задачи: "); - String? input = stdin.readLineSync(); - if(input == null){ - print("Некорректный ввод"); - continue; - } - int choice = int.tryParse(input) ?? -1; - - try { - switch (choice) { - case 1: - stdout.write("Введите первое число: "); - int? a = int.tryParse(stdin.readLineSync() ?? ""); - stdout.write("Введите второе число: "); - int? b = int.tryParse(stdin.readLineSync() ?? ""); - if (a == null || b == null) { - print("Некорректный ввод"); - break; - } - print("Максимум: ${findMax(a, b)}"); - break; - case 2: - stdout.write("Введите делимое: "); - double? a = double.tryParse(stdin.readLineSync() ?? ""); - stdout.write("Введите делитель: "); - double? b = double.tryParse(stdin.readLineSync() ?? ""); - if (a == null || b == null) { - print("Некорректный ввод"); - break; - } - print("Результат: ${divide(a, b)}"); - break; - case 3: - stdout.write("Введите строку: "); - String? str = stdin.readLineSync(); - if (str == null) { - print("Некорректный ввод"); - break; - } - print("Число: ${stringToInt(str)}"); - break; - case 4: - stdout.write("Введите возраст: "); - int? age = int.tryParse(stdin.readLineSync() ?? ""); - if (age == null) { - print("Некорректный ввод"); - break; - } - checkAge(age); - print("Возраст корректен"); - break; - case 5: - stdout.write("Введите число: "); - double? num = double.tryParse(stdin.readLineSync() ?? ""); - if (num == null) { - print("Некорректный ввод"); - break; - } - print("Корень: ${findSquareRoot(num)}"); - break; - case 6: - stdout.write("Введите число для вычисления факториала: "); - int? n = int.tryParse(stdin.readLineSync() ?? ""); - if (n == null) { - print("Некорректный ввод"); - break; - } - print("Факториал: ${factorial(n)}"); - break; - case 7: - stdout.write("Введите числа массива через пробел: "); - String? inputArr = stdin.readLineSync(); - if(inputArr == null){ - print("Некорректный ввод"); - break; - } - List arr = inputArr.split(' ').map((e) => int.tryParse(e) ?? -1).toList(); - if (arr.contains(-1)){ - print("Некорректный ввод"); - break; - } - checkArrayForZeros(arr); - print("Массив не содержит нулей"); - break; - case 8: - stdout.write("Введите основание: "); - double? base = double.tryParse(stdin.readLineSync() ?? ""); - stdout.write("Введите степень: "); - int? exponent = int.tryParse(stdin.readLineSync() ?? ""); - if (base == null || exponent == null) { - print("Некорректный ввод"); - break; - } - print("Результат: ${power(base, exponent)}"); - break; - case 9: - stdout.write("Введите строку: "); - String? str = stdin.readLineSync(); - stdout.write("Введите длину обрезки: "); - int? length = int.tryParse(stdin.readLineSync() ?? ""); - if (str == null || length == null) { - print("Некорректный ввод"); - break; - } - print("Обрезанная строка: ${trimString(str, length)}"); - break; - case 10: - stdout.write("Введите числа массива через пробел: "); - String? inputArr = stdin.readLineSync(); - if(inputArr == null){ - print("Некорректный ввод"); - break; - } - List arr = inputArr.split(' ').map((e) => int.tryParse(e) ?? -1).toList(); - if (arr.contains(-1)){ - print("Некорректный ввод"); - break; - } - stdout.write("Введите элемент для поиска: "); - int? element = int.tryParse(stdin.readLineSync() ?? ""); - if (element == null) { - print("Некорректный ввод"); - break; - } - print("Индекс элемента: ${findElementInArray(arr, element)}"); - break; - case 11: - stdout.write("Введите целое число: "); - int? num = int.tryParse(stdin.readLineSync() ?? ""); - if (num == null) { - print("Некорректный ввод"); - break; - } - print("Двоичное представление: ${toBinary(num)}"); - break; - case 12: - stdout.write("Введите делимое: "); - int? dividend = int.tryParse(stdin.readLineSync() ?? ""); - stdout.write("Введите делитель: "); - int? divisor = int.tryParse(stdin.readLineSync() ?? ""); - if (dividend == null || divisor == null) { - print("Некорректный ввод"); - break; - } - if (isDivisible(dividend, divisor)) { - print("Число делится"); - } else { - print("Число не делится"); - } - break; - case 13: - stdout.write("Введите числа списка через пробел: "); - String? inputList = stdin.readLineSync(); - if(inputList == null){ - print("Некорректный ввод"); - break; - } - List list = inputList.split(' ').map((e) => int.tryParse(e) ?? -1).toList(); - if (list.contains(-1)){ - print("Некорректный ввод"); - break; - } - stdout.write("Введите индекс элемента: "); - int? index = int.tryParse(stdin.readLineSync() ?? ""); - if (index == null) { - print("Некорректный ввод"); - break; - } - print("Элемент: ${getElementFromList(list, index)}"); - break; - case 14: - stdout.write("Введите пароль: "); - String? password = stdin.readLineSync(); - if(password == null){ - print("Некорректный ввод"); - break; - } - checkPassword(password); - print("Пароль надежный"); - break; - case 15: - stdout.write("Введите дату в формате dd.MM.yyyy: "); - String? date = stdin.readLineSync(); - if(date == null){ - print("Некорректный ввод"); - break; - } - checkDate(date); - print("Дата корректна"); - break; - case 16: - stdout.write("Введите первую строку: "); - String? str1 = stdin.readLineSync(); - stdout.write("Введите вторую строку: "); - String? str2 = stdin.readLineSync(); - print("Результат: ${concatenateStrings(str1, str2)}"); - break; - case 17: - stdout.write("Введите делимое: "); - int? dividend = int.tryParse(stdin.readLineSync() ?? ""); - stdout.write("Введите делитель: "); - int? divisor = int.tryParse(stdin.readLineSync() ?? ""); - if (dividend == null || divisor == null) { - print("Некорректный ввод"); - break; - } - print("Остаток: ${remainder(dividend, divisor)}"); - break; - case 18: - stdout.write("Введите число: "); - double? num = double.tryParse(stdin.readLineSync() ?? ""); - if (num == null) { - print("Некорректный ввод"); - break; - } - print("Квадратный корень: ${squareRoot(num)}"); - break; - case 19: - stdout.write("Введите температуру в Цельсиях: "); - double? celsius = double.tryParse(stdin.readLineSync() ?? ""); - if (celsius == null) { - print("Некорректный ввод"); - break; - } - print("Температура в Фаренгейтах: ${celsiusToFahrenheit(celsius)}"); - break; - case 20: - stdout.write("Введите строку: "); - String? str = stdin.readLineSync(); - checkStringNotEmpty(str); - print("Строка не пустая"); - break; - case 0: - print("Выход из программы."); - return; - default: - print("Некорректный выбор. Пожалуйста, выберите номер задачи из списка."); - } - } on Exception catch (e) { - print("Ошибка: ${e.toString()}"); - } - } -} - - -class ArithmeticException implements Exception { - final String message; - ArithmeticException(this.message); - - @override - String toString() { - return 'ArithmeticException: $message'; - } -} - -class NumberFormatException implements Exception { - final String message; - NumberFormatException(this.message); - @override - String toString() { - return 'NumberFormatException: $message'; - } -} - -class IllegalArgumentException implements Exception { - final String message; - IllegalArgumentException(this.message); - @override - String toString() { - return 'IllegalArgumentException: $message'; - } -} - -class IndexOutOfBoundsException implements Exception{ - final String message; - IndexOutOfBoundsException(this.message); - - @override - String toString() { - return 'IndexOutOfBoundsException: $message'; - } -} - -class WeakPasswordException implements Exception { - final String message; - WeakPasswordException(this.message); - - @override - String toString() { - return 'WeakPasswordException: $message'; - } -} - -class DateTimeParseException implements Exception { - final String message; - DateTimeParseException(this.message); - - @override - String toString() { - return 'DateTimeParseException: $message'; - } -} -class NullPointerException implements Exception { - final String message; - NullPointerException(this.message); - - @override - String toString() { - return 'NullPointerException: $message'; - } -} \ No newline at end of file From 18bca1914fd8c052bbc224ec6cb7236409f3165e Mon Sep 17 00:00:00 2001 From: HackDwenture Date: Thu, 30 Jan 2025 13:36:39 +0300 Subject: [PATCH 3/3] Delete Tasks3.kt --- Tasks3.kt | 788 ------------------------------------------------------ 1 file changed, 788 deletions(-) delete mode 100644 Tasks3.kt diff --git a/Tasks3.kt b/Tasks3.kt deleted file mode 100644 index 925154c..0000000 --- a/Tasks3.kt +++ /dev/null @@ -1,788 +0,0 @@ - -import kotlin.math.PI -import kotlin.math.pow - -fun main() { - while (true) { - println("\nВыберите задачу:") - println("1. Класс \"Человек\"") - println("2. Наследование: Класс \"Работник\" и \"Менеджер\"") - println("3. Полиморфизм: Животные") - println("4. Абстрактный класс \"Транспорт\"") - println("5. Класс \"Книга\" и \"Библиотека\"") - println("6. Инкапсуляция: Банк") - println("7. Счетчик объектов") - println("8. Площадь фигур") - println("9. Наследование: Животные и их движения") - println("10. Работа с коллекциями: Университет") - println("11. Класс \"Магазин\"") - println("12. Интерфейс \"Платежная система\"") - println("13. Генерация уникальных идентификаторов") - println("14. Класс \"Точка\" и \"Прямоугольник\"") - println("15. Комплексные числа") - println("16. Перегрузка операторов: Матрица") - println("17. Создание игры с использованием ООП") - println("18. Автоматизированная система заказов") - println("19. Наследование: Электроника") - println("20. Игра \"Крестики-нолики\"") - println("0. Выход") - - print("Введите номер задачи: ") - val choice = readLine()?.toIntOrNull() - - when (choice) { - 1 -> task1() - 2 -> task2() - 3 -> task3() - 4 -> task4() - 5 -> task5() - 6 -> task6() - 7 -> task7() - 8 -> task8() - 9 -> task9() - 10 -> task10() - 11 -> task11() - 12 -> task12() - 13 -> task13() - 14 -> task14() - 15 -> task15() - 16 -> task16() - 17 -> task17() - 18 -> task18() - 19 -> task19() - 20 -> task20() - 0 -> return - null -> println("Неверный ввод. Пожалуйста, введите номер задачи.") - else -> println("Неверный номер задачи.") - } - } -} - -// 1. Класс "Человек" -fun task1() { - println("\n----- Задача 1: Класс \"Человек\" -----") - val person = Person("Иван", 30, "Женский") - person.printInfo() - person.increaseAge() - person.printInfo() - person.changeName("Иван Иванов") - person.printInfo() -} - -open class Person(open var name: String, open var age: Int, open var gender: String) { - open fun printInfo() { - println("Имя: $name, Возраст: $age, Пол: $gender") - } - - fun increaseAge() { - age++ - } - - fun changeName(newName: String) { - name = newName - } -} - -// 2. Наследование: Класс "Работник" и "Менеджер" -fun task2() { - println("\n----- Задача 2: Наследование \"Работник\" и \"Менеджер\" -----") - val worker = Worker("Александр", 25, "Мужской", 50000) - worker.printInfo() - - val manager = Manager("Сергей", 40, "Мужской", 100000, listOf("Александр", "Сергей")) - manager.printInfo() -} - -open class Worker( - override var name: String, - override var age: Int, - override var gender: String, - var salary: Int -) : Person(name, age, gender) { - override fun printInfo() { - super.printInfo() - println("Зарплата: $salary") - } -} - -class Manager(name: String, age: Int, gender: String, salary: Int, var subordinates: List) : - Worker(name, age, gender, salary) { - override fun printInfo() { - super.printInfo() - println("Подчиненные: $subordinates") - } -} - -// 3. Полиморфизм: Животные -fun task3() { - println("\n----- Задача 3: Полиморфизм \"Животные\" -----") - val animals: Array = arrayOf(Dog(), Cat(), Cow()) - - for (animal in animals) { - animal.makeSound() - } -} - -interface Animal { - fun makeSound() -} - -class Dog : Animal { - override fun makeSound() { - println("Гав!") - } -} - -class Cat : Animal { - override fun makeSound() { - println("Мяу!") - } -} - -class Cow : Animal { - override fun makeSound() { - println("Муу!") - } -} - -// 4. Абстрактный класс "Транспорт" -fun task4() { - println("\n----- Задача 4: Абстрактный класс \"Транспорт\" -----") - val car = Car() - car.move() - val bike = Bike() - bike.move() -} - -abstract class Transport { - abstract fun move() -} - -class Car : Transport() { - override fun move() { - println("Машина едет") - } -} - -class Bike : Transport() { - override fun move() { - println("Велосипед едет") - } -} - -// 5. Класс "Книга" и "Библиотека" -fun task5() { - println("\n----- Задача 5: Класс \"Книга\" и \"Библиотека\" -----") - val library = Library() - library.addBook(Book("Властелин Колец", "Дж.Р.Р. Толкин", 1954)) - library.addBook(Book("Гордость и предубеждение", "Джейн Остин", 1813)) - library.addBook(Book("1984", "Джордж Оруэлл", 1949)) - - library.searchByAuthor("Джейн Остин") - library.searchByYear(1954) - library.searchByYear(2000) -} - -class Book(var title: String, var author: String, var year: Int) { - override fun toString(): String { - return "Название: $title, Автор: $author, Год: $year" - } -} - -class Library { - private val books = mutableListOf() - - fun addBook(book: Book) { - books.add(book) - } - - fun searchByAuthor(author: String) { - println("Книги автора $author:") - books.filter { it.author == author }.forEach { println(it) } - } - - fun searchByYear(year: Int) { - println("Книги, выпущенные в $year:") - books.filter { it.year == year }.forEach { println(it) } - } -} - -// 6. Инкапсуляция: Банк -fun task6() { - println("\n----- Задача 6: Инкапсуляция \"Банк\" -----") - val account = BankAccount(1000) - account.deposit(500) - account.withdraw(200) - account.withdraw(2000) - println("Баланс: ${account.getBalance()}") -} - -class BankAccount(private var balance: Int) { - fun deposit(amount: Int) { - if (amount > 0) { - balance += amount - println("Внесено: $amount, Новый баланс: $balance") - } - else { - println("Неверная сумма для внесения!") - } - } - - fun withdraw(amount: Int) { - if (amount > 0 && balance >= amount) { - balance -= amount - println("Снято: $amount, Новый баланс: $balance") - } - else { - println("Неверная сумма для снятия или недостаточно средств") - } - } - - fun getBalance(): Int { - return balance - } -} - -// 7. Счетчик объектов -fun task7() { - println("\n----- Задача 7: Счетчик объектов -----") - val counter1 = Counter() - val counter2 = Counter() - val counter3 = Counter() - println("Всего объектов создано: ${Counter.getObjectCount()}") -} - -class Counter { - companion object { - private var objectCount = 0 - - fun getObjectCount(): Int { - return objectCount - } - } - - init { - objectCount++ - } -} - -// 8. Площадь фигур -fun task8() { - println("\n----- Задача 8: Площадь фигур -----") - val circle = Circle(5.0) - println("Площадь круга: ${circle.getArea()}") - - val rectangle = Rectangle(4.0, 6.0) - println("Площадь прямоугольника: ${rectangle.getArea()}") -} - -abstract class Shape { - abstract fun getArea(): Double -} - -class Circle(var radius: Double) : Shape() { - override fun getArea(): Double { - return PI * radius.pow(2.0) - } -} - -class Rectangle(var width: Double, var height: Double) : Shape() { - override fun getArea(): Double { - return width * height - } -} - -// 9. Наследование: Животные и их движения -fun task9() { - println("\n----- Задача 9: Наследование \"Животные\" и их движения -----") - val fish = Fish() - fish.move() - val bird = Bird() - bird.move() - val dog2 = Dog2() - dog2.move() -} - -open class Animal2 { - open fun move() { - println("Животное двигается") - } -} - -class Fish : Animal2() { - override fun move() { - println("Рыба плывет") - } -} - -class Bird : Animal2() { - override fun move() { - println("Птица летит") - } -} - -class Dog2 : Animal2() { - override fun move() { - println("Собака бежит") - } -} - -// 10. Работа с коллекциями: Университет -fun task10() { - println("\n----- Задача 10: Работа с коллекциями: Университет -----") - val university = University() - university.addStudent(Student("Алис", "A", 90)) - university.addStudent(Student("Боб", "B", 75)) - university.addStudent(Student("Чарли", "A", 85)) - - println("Сортировка по имени:") - university.getStudentsSortedByName().forEach { println(it) } - - println("\nФильтрация по оценке > 80:") - university.getStudentsByGrade(80).forEach { println(it) } -} - -class Student(var name: String, var group: String, var grade: Int) { - override fun toString(): String { - return "Имя: $name, Группа: $group, Оценка: $grade" - } -} - -class University { - private val students = mutableListOf() - - fun addStudent(student: Student) { - students.add(student) - } - - fun getStudentsSortedByName(): List { - return students.sortedBy { it.name } - } - - fun getStudentsByGrade(grade: Int): List { - return students.filter { it.grade > grade } - } -} - -// 11. Класс "Магазин" -fun task11() { - println("\n----- Задача 11: Класс \"Магазин\" -----") - val store = Store() - store.addProduct(Product("Ноутбук", 1000.0, 5)) - store.addProduct(Product("Мышь", 25.0, 20)) - store.addProduct(Product("Клавиатура", 75.0, 10)) - - store.searchProductByName("Мышь") - store.removeProductByName("Клавиатура") - store.searchProductByName("Клавиатура") -} - -class Product(var name: String, var price: Double, var quantity: Int) { - override fun toString(): String { - return "Название: $name, Цена: $price, Количество: $quantity" - } -} - -class Store { - private val products = mutableListOf() - - fun addProduct(product: Product) { - products.add(product) - } - - fun removeProductByName(name: String) { - if (products.removeIf { it.name == name }) - println("Продукт: $name удален") - else - println("Продукт: $name не найден") - } - - fun searchProductByName(name: String) { - val product = products.find { it.name == name } - if (product != null) { - println("Продукт найден: $product") - } - else { - println("Продукт: $name не найден") - } - } -} - -// 12. Интерфейс "Платежная система" -fun task12() { - println("\n----- Задача 12: Интерфейс \"Платежная система\" -----") - val creditCard = CreditCard() - creditCard.pay(100.0) - creditCard.refund(50.0) - - val paypal = PayPal() - paypal.pay(200.0) - paypal.refund(75.0) -} - -interface PaymentSystem { - fun pay(amount: Double) - fun refund(amount: Double) -} - -class CreditCard : PaymentSystem { - override fun pay(amount: Double) { - println("Оплачено $amount с помощью кредитной карты") - } - - override fun refund(amount: Double) { - println("Возвращено $amount с помощью кредитной карты") - } -} - -class PayPal : PaymentSystem { - override fun pay(amount: Double) { - println("Оплачено $amount с помощью PayPal") - } - - override fun refund(amount: Double) { - println("Возвращено $amount с помощью PayPal") - } -} - -// 13. Генерация уникальных идентификаторов -fun task13() { - println("\n----- Задача 13: Генерация уникальных идентификаторов -----") - val uniqueID1 = UniqueID() - println("ID 1: ${uniqueID1.getID()}") - val uniqueID2 = UniqueID() - println("ID 2: ${uniqueID2.getID()}") - val uniqueID3 = UniqueID() - println("ID 3: ${uniqueID3.getID()}") -} - -class UniqueID { - companion object { - private var idCounter = 0 - } - - private var id: Int = 0 - - init { - id = ++idCounter - } - - fun getID(): Int { - return id - } -} - -// 14. Класс "Точка" и "Прямоугольник" -fun task14() { - println("\n----- Задача 14: Класс \"Точка\" и \"Прямоугольник\" -----") - val point1 = Point(1.0, 1.0) - val point2 = Point(5.0, 5.0) - - val rectangle2 = Rectangle2(point1, point2) - println("Площадь прямоугольника: ${rectangle2.getArea()}") -} - -class Point(var x: Double, var y: Double) - -class Rectangle2(var topLeft: Point, var bottomRight: Point) { - fun getArea(): Double { - val width = bottomRight.x - topLeft.x - val height = bottomRight.y - topLeft.y - return width * height - } -} - -// 15. Комплексные числа -fun task15() { - println("\n----- Задача 15: Комплексные числа -----") - val complex1 = ComplexNumber(3.0, 2.0) - val complex2 = ComplexNumber(1.0, 5.0) - - println("Комплексное число 1: $complex1") - println("Комплексное число 2: $complex2") - - println("Сумма: ${complex1.add(complex2)}") - println("Разность: ${complex1.subtract(complex2)}") - println("Произведение: ${complex1.multiply(complex2)}") - println("Частное: ${complex1.divide(complex2)}") -} - -class ComplexNumber(var real: Double, var imaginary: Double) { - fun add(other: ComplexNumber): ComplexNumber { - return ComplexNumber(real + other.real, imaginary + other.imaginary) - } - - fun subtract(other: ComplexNumber): ComplexNumber { - return ComplexNumber(real - other.real, imaginary - other.imaginary) - } - - fun multiply(other: ComplexNumber): ComplexNumber { - val newReal = real * other.real - imaginary * other.imaginary - val newImaginary = real * other.imaginary + imaginary * other.real - return ComplexNumber(newReal, newImaginary) - } - - fun divide(other: ComplexNumber): ComplexNumber { - val denominator = other.real * other.real + other.imaginary * other.imaginary - val newReal = (real * other.real + imaginary * other.imaginary) / denominator - val newImaginary = (imaginary * other.real - real * other.imaginary) / denominator - return ComplexNumber(newReal, newImaginary) - } - - override fun toString(): String { - return "$real + ${imaginary}i" - } -} - -// 16. Перегрузка операторов: Матрица -fun task16() { - println("\n----- Задача 16: Перегрузка операторов: Матрица -----") - val matrix1 = Matrix(arrayOf(intArrayOf(1, 2), intArrayOf(3, 4))) - val matrix2 = Matrix(arrayOf(intArrayOf(5, 6), intArrayOf(7, 8))) - - println("Матрица 1:\n$matrix1") - println("Матрица 2:\n$matrix2") - println("Сумма:\n${matrix1.add(matrix2)}") - println("Произведение:\n${matrix1.multiply(matrix2)}") -} - -class Matrix(var matrix: Array) { - fun add(other: Matrix): Matrix { - val result = Array(matrix.size) { IntArray(matrix[0].size) } - for (i in matrix.indices) { - for (j in matrix[i].indices) { - result[i][j] = matrix[i][j] + other.matrix[i][j] - } - } - return Matrix(result) - } - - fun multiply(other: Matrix): Matrix { - val result = Array(matrix.size) { IntArray(other.matrix[0].size) } - for (i in matrix.indices) { - for (j in other.matrix[0].indices) { - for (k in matrix[0].indices) { - result[i][j] += matrix[i][k] * other.matrix[k][j] - } - } - } - return Matrix(result) - } - - override fun toString(): String { - var str = "" - for (row in matrix) { - str += row.joinToString(" ") + "\n" - } - return str - } -} - -// 17. Создание игры с использованием ООП -fun task17() { - println("\n----- Задача 17: Создание игры с использованием ООП -----") - val player = Player("Герой", 100, Weapon("Меч", 10)) - val enemy = Enemy("Гоблин", 50, Weapon("Дубина", 5)) - println("Изначальные характеристики:") - player.printStats() - enemy.printStats() - - player.attack(enemy) - enemy.attack(player) - - println("\nПосле первой атаки:") - player.printStats() - enemy.printStats() -} - -class Player(var name: String, var health: Int, var weapon: Weapon) { - fun attack(enemy: Enemy) { - println("$name атакует ${enemy.name} с помощью ${weapon.name}") - enemy.takeDamage(weapon.damage) - } - - fun takeDamage(damage: Int) { - health -= damage - } - fun printStats(){ - println("Игрок: имя: $name, здоровье: $health, оружие: ${weapon.name}") - } -} - -class Enemy(var name: String, var health: Int, var weapon: Weapon) { - fun attack(player: Player) { - println("$name атакует ${player.name} с помощью ${weapon.name}") - player.takeDamage(weapon.damage) - } - - fun takeDamage(damage: Int) { - health -= damage - } - fun printStats(){ - println("Враг: имя: $name, здоровье: $health, оружие: ${weapon.name}") - } -} - -class Weapon(var name: String, var damage: Int) - -// 18. Автоматизированная система заказов -fun task18() { - println("\n----- Задача 18: Автоматизированная система заказов -----") - val customer = Customer("Алиса") - val product1 = Product("Ноутбук", 1200.0, 1) - val product2 = Product("Мышь", 25.0, 2) - - val order = Order(customer, listOf(product1, product2)) - println("Общая стоимость заказа: ${order.getTotalCost()}") - - val orderSystem = OrderSystem() - orderSystem.addOrder(order) - orderSystem.addOrder(Order(Customer("Боб"), listOf(Product("Клавиатура", 75.0, 1)))) - orderSystem.displayOrders() -} - -class Order(var customer: Customer, var products: List) { - fun getTotalCost(): Double { - return products.sumOf { it.price * it.quantity } - } - - override fun toString(): String { - return "Клиент: ${customer.name}, продукты: $products, Итого: ${getTotalCost()}" - } -} - -class Customer(var name: String) - -class OrderSystem { - private val orders = mutableListOf() - - fun addOrder(order: Order) { - orders.add(order) - } - - fun displayOrders() { - println("История заказов:") - orders.forEach { println(it) } - } -} - -// 19. Наследование: Электроника -fun task19() { - println("\n----- Задача 19: Наследование: Электроника -----") - val smartphone = Smartphone("Samsung") - smartphone.turnOn() - smartphone.takePhoto() - smartphone.turnOff() - - val laptop = Laptop("Apple") - laptop.turnOn() - laptop.runApplication() - laptop.turnOff() -} - -open class Device(var brand: String) { - open fun turnOn() { - println("$brand устройство включено") - } - - open fun turnOff() { - println("$brand устройство выключено") - } -} - -class Smartphone(brand: String) : Device(brand) { - fun takePhoto() { - println("Смартфон делает фото") - } -} - -class Laptop(brand: String) : Device(brand) { - fun runApplication() { - println("Ноутбук запускает приложение") - } -} - -// 20. Игра "Крестики-нолики" -fun task20() { - println("\n----- Задача 20: Игра \"Крестики-нолики\" -----") - val game = TicTacToe() - game.playGame() -} - -class TicTacToe { - private val board = Array(3) { CharArray(3) { ' ' } } - private var currentPlayer = 'X' - - fun playGame() { - while (true) { - printBoard() - println("Ход игрока $currentPlayer.") - val move = getPlayerMove() - board[move.first][move.second] = currentPlayer - - if (checkWin()) { - printBoard() - println("Игрок $currentPlayer победил!") - break - } - - if (isBoardFull()) { - printBoard() - println("Ничья!") - break - } - - currentPlayer = if (currentPlayer == 'X') 'O' else 'X' - } - } - - private fun printBoard() { - for (row in board) { - println(row.joinToString("|")) - } - println() - } - - private fun getPlayerMove(): Pair { - while (true) { - print("Введите строку (0-2) и столбец (0-2) через пробел: ") - val input = readLine()?.split(" ") - if (input != null && input.size == 2) { - val row = input[0].toIntOrNull() - val col = input[1].toIntOrNull() - - if (row != null && col != null && row in 0..2 && col in 0..2 && board[row][col] == ' ') { - return Pair(row, col) - } - } - println("Неверный ввод. Пожалуйста, введите корректную строку и столбец.") - } - } - - private fun checkWin(): Boolean { - // Check rows - for (row in board) { - if (row[0] == currentPlayer && row[1] == currentPlayer && row[2] == currentPlayer) return true - } - - // Check columns - for (col in 0..2) { - if (board[0][col] == currentPlayer && board[1][col] == currentPlayer && board[2][col] == currentPlayer) return true - } - - // Check diagonals - if (board[0][0] == currentPlayer && board[1][1] == currentPlayer && board[2][2] == currentPlayer) return true - if (board[0][2] == currentPlayer && board[1][1] == currentPlayer && board[2][0] == currentPlayer) return true - - return false - } - - private fun isBoardFull(): Boolean { - for (row in board) { - for (cell in row) { - if (cell == ' ') return false - } - } - return true - } -}