Skip to main content

Задачи за линейни структури и хеш-функции

Прочети преди да започнеш

Задазите по-долу са предназначени за упражнение на уменията за работа с линейни структури и хеш-функции. За да ги решите, трябва да имате поне базови познания по ООП и да сте запознати със синтаксиса на Java. Някои от задачите изискват използването на допълнителни библиотеки, търсенето на информация в Интернет и използването на документация. Не се притеснявайте, ако не можете да решите всички задачи. Важното е да се опитате и да се забавлявате!

Линейни Структури

Задача 1: 🚂 Влакче на Стек

Цел: Създайте клас Train, който имитира стек от вагони. Добавете методи за добавяне на вагон (push) и премахване на последния вагон (pop). Пример:

var myTrain = new Train();
myTrain.addWagon("Вагон 1");
myTrain.removeWagon(); // Премахва "Вагон 1"

Задача 2: 📚 Книжна Библиотека

Цел: Имплементирайте клас BookShelf, който управлява опашка от книги. Добавете методи за добавяне на книга в края и взимане на книга от началото. Пример:

var shelf = new BookShelf();
shelf.addBook("Книга 1");
var book = shelf.takeBook(); // Връща "Книга 1"

Хеш-Функции

Задача 3: 🔑 Хеш-Таблица с Потребители

Цел: Създайте проста хеш-таблица, която съхранява потребителски имена и техните email адреси. Използвайте прост хеш алгоритъм (например, сума от ASCII стойностите на символите). Пример:

var userTable = new HashTable();
userTable.add("user1", "user1@example.com");
var email = userTable.get("user1"); // Връща "user1@example.com"

Вложени Класове

Задача 4: 🛍️ Количка за Пазаруване

Цел: Създайте клас ShoppingCart, който съдържа вложен клас Item. Item съхранява информация за продукт и цена. ShoppingCart управлява списък от Item обекти. Пример:

var cart = new ShoppingCart();
cart.addItem(new ShoppingCart.Item("Мляко", 2.99));
var total = cart.getTotal(); // Сумира цените на всички продукти

Линейни Структури

Задача 5: 📊 Хронологичен Журнал

Цел: Имплементирайте клас EventLog, който управлява списък от събития в хронологичен ред. Всеки елемент в списъка трябва да съдържа времева марка и описание на събитието. Добавете методи за добавяне на събития и извличане на събития в даден времеви интервал. Пример:

var log = new EventLog();
log.addEvent("2023-01-01", "Нова година");
log.getEventsBetween("2023-01-01", "2023-06-01");

Задача 6: 🧑‍🎓 Студентска Тетрадка

Цел: Разработете клас Notebook, който представлява списък от бележки на студент. Всяка бележка има заглавие и съдържание. Добавете методи за добавяне, изтриване и търсене на бележки по заглавие. Пример:

var notebook = new Notebook();
notebook.addNote("ООП", "Основи на обектно-ориентираното програмиране");
notebook.findNote("ООП");

Хеш-Функции

Задача 7: 🔍 Хеш-Таблица за Документи

Цел: Създайте клас DocumentHashTable, който използва хеш-таблица за бързо търсене на документи по ключови думи. Всеки документ е представен с уникален идентификатор и списък от ключови думи. Пример:

var docs = new DocumentHashTable();
docs.addDocument(1, ["ООП", "Програмиране"]);
docs.search("ООП");

Вложени Класове

Задача 8: 🌐 Уеб Сървър Монитор

Цел: Разработете клас WebServer, който съдържа вложен клас Request. Класът Request трябва да управлява информация за заявки към сървъра, включително URL и статус код. WebServer трябва да управлява списък от заявки и да предоставя статистика за тях. Пример:

var server = new WebServer();
server.addRequest(new WebServer.Request("/home", 200));
server.getRequestStats();

Линейни Структури

Задача 9: 📈 Борсов Тикер

Цел: Създайте клас StockTicker, който управлява опашка от информация за цените на акции. Добавете методи за обновяване на цените и извличане на последната цена за дадена акция. Пример:

var ticker = new StockTicker();
ticker.updatePrice("AAPL", 150);
ticker.getLastPrice("AAPL");

Задача 10: 🚌 Маршрут на Автобус

Цел: Разработете клас BusRoute, който управлява списък от спирки (опашка). Добавете методи за добавяне на спирки и извличане на следваща спирка. Пример:

var route = new BusRoute();
route.addStop("Спирка 1");
route.getNextStop();

Хеш-Функции

Задача 11: 🔐 Уникален Потребителски Идентификатор

Цел: Създайте функция, която генерира уникален идентификатор за потребители, използвайки хеш-функция от имейл адреса. Пример:

function generateUserId(email) {
// Имплементация на хеш функция
}

Задача 12: 📚 Каталог на Книги

Цел: Реализирайте хеш-таблица, която съхранява информация за книги с техните ISBN номера като ключ. Пример:

var bookCatalog = new HashTable();
bookCatalog.add("978-3-16-148410-0", "Примерна книга");
bookCatalog.get("978-3-16-148410-0");

Вложени Класове

Задача 13: 🖥️ Компютърен Конфигуратор

Цел: Създайте клас Computer с вложени класове за компоненти като CPU, RAM, и Storage. Конфигурирайте компютър с различни компоненти. Пример:

var myComputer = new Computer();
myComputer.setCPU(new Computer.CPU("Intel", 3.5));
myComputer.setRAM(new Computer.RAM(16));
myComputer.setStorage(new Computer.Storage(512));

Задача 14: 🏢 Сграден Мениджър

Цел: Разработете клас Building с вложен клас Apartment. Building управлява списък от апартаменти и предоставя информация за тях. Пример:

var building = new Building();
building.addApartment(new Building.Apartment(101, 3));
building.getApartmentInfo(101);

Разширени Задачи за Усъвършенстване

Задача 15: 📜 Имплементация на Свързан Списък

Цел: Създайте собствена имплементация на свързан списък и методи за добавяне, изтриване и търсене в списъка. Пример:

var linkedList = new LinkedList();
linkedList.add("елемент 1");
linkedList.remove("елемент 1");

Задача 16: 🗃️ Хеш-Функция за Файлове

Цел: Реализирайте хеш-функция, която генерира хеш на съдържанието на файл, за да се използва за бързо сравнение на файлове. Пример:

function hashFileContent(filePath) {
// Четене и хеширане на съдържанието на файла
}

Задача 17: 🕸️ Мрежа от Контакти

Цел: Имплементирайте структура, която управлява мрежа от контакти, като използвате вложени класове за индивидуални контакти и техните връзки. Пример:

var contactNetwork = new ContactNetwork();
contactNetwork.addContact("Иван", "ivan@example.com");
contactNetwork.addConnection("Иван", "Мария");

Задача 18: 🧳 Организатор на Пътуване

Цел: Създайте клас TripPlanner с вложен клас Destination. Класът Destination трябва да съхранява информация за различни дестинации и планирани дейности. Пример:

var trip = new TripPlanner();
trip.addDestination(new TripPlanner.Destination("Париж", ["Ейфеловата кула", "Лувъра"]));
trip.getItinerary();

Задача 19: 🔢 Математическа Игра

Цел: Разработете игра, в която участниците решават математически задачи. Използвайте вложен клас за представяне на всяка задача и нейния отговор. Пример:

var mathGame = new MathGame();
mathGame.addQuestion(new MathGame.Question("2 + 2", 4));
mathGame.startGame();

Задача 20: 📖 Електронен Речник

Цел: Създайте клас ElectronicDictionary, който използва хеш-таблица за съхранение и бързо търсене на думи и техните дефиниции. Пример:

var dictionary = new ElectronicDictionary();
dictionary.addWord("ООП", "Обектно-ориентирано програмиране");
dictionary.getDefinition("ООП");