DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи № 5 «Програмування. Частина III. Структури даних та алгоритми»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2019
Тип роботи:
Лабораторна робота
Предмет:
Програмування
Група:
КН-31
Коротко про документ

Про що ця робота

У звіті досліджено абстрактну структуру даних чергу та реалізовано її за допомогою двох стеків. Наведено код програми та результати виконання завдань.

У роботі розглядаються

  • Структури даних
  • Черга
  • Стек
  • Програмування на C++
  • Алгоритми
  • Динамічні структури

Зміст і розділи

  1. Мета роботи
  2. Вибір індивідуального завдання
  3. Код програми
  4. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають програмування та структури даних.
Викладачі:Кузьо М. М.

Ключові поняття

чергастекструктури данихC++алгоритмшаблон класуpushpopfrontдинамічна структура

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ " Черга" ЗВІТ до лабораторної роботи № 5 з "Програмування. Частина III. Структури даних та алгоритми" МЕТА РОБОТИ Вивчення фундаментальної абстрактної структури даних - черги. Набуття практичних навичок побудови черги, дослідження динаміки її вмісту та використання черг для розв'язання прикладних задач. ВИБІР ІНДИВІДУАЛЬНОГО ЗАВДАННЯ Змоделюйте чергу (або дек) згідно з завданням. Перепишіть основні операції для роботи з чергою (деком), і продемонструйте їх застосування для операцій додавання і вилучення елементів в чергу (дек). Для цього задайте послідовність з N цілих чисел. Всі додатні числа послідовно заносяться в чергу (дек), кожне від’ємне число вилучає з черги (деку) один елемент (при роботі з деком, парні числа працюють з одним кінцем деку, а непарні – з іншим). Показувати всі зміни, що будуть відбуватись у черзі (деку). Перша літера П (11)-> I 10 Перша літера прізвища  Номер студента в списку групи Варіант А, І, С Б, Ї, Т В, Й, У Г, К, Ф Д, Л, Х Е, М, Ц Є, Н, Ч Ж,О,Ш,Щ З, И, Ю П, Р, Я   10, 20, 30 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   9, 19, 29 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   8, 18, 28 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   7, 17, 27 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   6, 16, 26 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   5, 15, 25 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   4, 14, 24 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   3, 13, 23 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   2, 12, 22 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   1, 11, 21 І1 І2 І3 І4 І5 І6 І7 І8 І9 І10   10. Змоделюйте чергу за допомогою двух стеків. Додавання елементу до черги зводиться до додавання до одному зі стеков, а перевірка, чи черга порожня - до перевірки, чи порожні обидва стеки. При вилученні елемента з черги можливі два випадки. Якщо стек, де знаходиться початок черги, не порожній, то вилучається з нього елемент. Якщо він порожній, то попередньо в нього переписуються всі елементи другого стеку, змінюючи порядок (це відбувається саме при перекладанні зі стеку в стек) і далі задача зводиться до першого випадку. Код програми TwoStackQueue.h #pragma once #include "Stack.cpp" template<class T> class TwoStacksQueue { private: Stack<T> lifoStack, fifoStack; void fillFifoStack() { while (!lifoStack.empty()) { fifoStack.push(lifoStack.top()); lifoStack.pop(); } } public: bool empty() { return fifoStack.empty() && lifoStack.empty(); } T front() { if (fifoStack.empty()) fillFifoStack(); return fifoStack.top(); } void pop() { if (fifoStack.empty()) fillFifoStack(); fifoStack.pop(); } void push(T v) { lifoStack.push(v); } }; Stack.cpp #pragma once #include <cstdlib> #include <cassert> template <class Item> class Stack { private: typedef std::size_t size_type; static const size_type CAPACITY = 50; size_type used; Item data[CAPACITY]; public: Stack() { used = 0; } bool empty() const { return used == 0; } size_type size() const { return used; } void showInf() const; void push(const Item& entry); void pop(); Item top() const; }; template <class Item> void Stack<Item>::push(const Item& entry) { assert(size() < CAPACITY); data[used] = entry; ++used; } template <class Item> void Stack<Item>::pop() { assert(!empty()); --used; } template <class Item> Item Stack<Item>::top() const { assert(!empty()); return data[used - 1]; } template <class Item> void Stack<Item>::showInf() const { for (size_type i = 0; i < used; i++) { cout << data[i] << ' '; } } Source.cpp #include "TwoStackQueue.h" #include <iostream> using namespace std; int main() { TwoStacksQueue<int> Queue; if (Queue.empty()) cout << "Queue is empty" << endl; for (int i = 0; i < 15; i++) Queue.push(i); cout << "Front of queue is: " << Queue.front() << endl; Queue.pop(); cout << "After command pop: " << endl; cout << "Front of queue is: " << Queue.front() << endl; for (int i = 0; i < 14; i++) { cout << Queue.front() << ' '; Queue.pop(); } if (Queue.empty()) cout << "\nQueue is empty" << endl; getchar(); return 0; } Скріншот виконання Висновок На даній лабораторній роботі я набув практичних навичок побудови черги, дослідив динаміку його вмісту та використання для розв'язання прикладних задач.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!