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

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

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

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

Лабораторна робота № 3. Структура даних Стек

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

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

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

Рік:
2010
Тип роботи:
Лабораторна робота
Предмет:
Структури даних та алгоритми
Група:
КІ
Коротко про документ

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

У роботі досліджено абстрактну структуру даних стек на базі шаблонного класу C++. Реалізовано додаткові функції модифікації вершини стека та перевірки умов для елементів.

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

  • Структури даних
  • Стек
  • Шаблонні класи C++
  • Динаміка пам'яті
  • Алгоритмічна обробка даних

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

  1. Мета роботи
  2. Постановка задачі
  3. Алгоритм розв'язку задачі
  4. Динаміка вмісту стеку
  5. Результати виконання програми
  6. Висновки
  7. Додатки
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають програмування та структури даних.
Викладачі:Лисак Т.А.

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

стекшаблонний класструктура данихвершина стекаpushpopchange_topC++алгоритм

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ  Лабораторна робота № 3 Структура даних СТЕК 1 Мета роботи: Вивчення фундаментальної абстрактної структури даних стек. Набуття практичних навичок побудови стека, дослідження динаміки його вмісту та використання стеків для розв'язання прикладних задач. 2 Постановка задачі: Реалізувати стек, у якому до опису стека додано функцію change_top, яка заміняє елемент, що знаходиться у вершині стека, заданим елементом. Кожний раз, коли після операції вилучення у вершині стека опиняється непарне число, то треба замінити його наступним парним числом. Після обробки всієї заданої вхідної послідовності перевірити, чи всі числа у стеку будуть більшими за 10, чи ні. 3 Алгоритм роз’вязку задачі: Стек організовуємо у вигляді шаблонного класу. Це дає можливість працювати з усіма стандартними типами даних. Спочатку по черзі вносимо 15 елементів. Дані вносяться чи не вносяться в стек. Перевіряючи чи вершина стеку парна при вилученні, якщо ні замінюємо наступним парним числом, заносячи дані в основний стек. Перевіряємо чи всі числа в стеку більші десяти по черзі вилучаючи їх зі стеку і заносячи в додатковий стек. Перевіривши всі елементи заносимо їх назад в основний стек і виводимо повідомлення. 4 Динаміка вмісту стеку: 5 Результати виконання програми:  Висновки: На цій лабораторній роботі я ознайомився з cтруктурою даних стек. Дослідив принципи і методи роботи зі стеком. Додатки: //----------------------------main.cpp-------------------------------- #include "Stack.h" #include <iostream> #include <stdio.h> #define N 20 // Ємність стеку #define C 5 // Кількість єлементів стеку using namespace std; void main(void) { bool flg=1; int a,i; stack<int> stc(N); stack<int> tmp(N); // Заповнюємо перший стек for(i = 0; i < C; i++){ cout << "a="; cin >> a; if (a < 0){ stc.pop(); if(stc.top() % 2 == 1) stc.change_top(stc.top()+1); } else stc.push(a); stc.print(); } a=stc.size(); for(i=0; i < a; i++){ // Підраховуємо чи всі елементи стеку більші десяти // вилучаємо елементи заносячи їх в додатковий стек flg = flg && (stc.top() > 10); tmp.push(stc.top()); stc.pop(); stc.print(); } for(i = 0; i < a; i++){ stc.push(tmp.top()); tmp.pop(); stc.print(); } if (flg)cout << "Chysla > 10: TAK"; else cout << "Chysla > 10: HI"; getchar();getchar(); } //----------------------------stack.h-------------------------------- template<class item> class stack{ private: //Вказівник на вершину стеку int used; //Масив елементів стеку item *items; //Capacity - ємність стеку int Capacity; public: //Конструктор з заданою ємністю stack(int n){ Capacity = n; items = new item[Capacity]; used = 0; } //Конструктор заповняє стек масивом stack(item a[],int arrsize){ int i; Capacity = arrsize; items = new item[Capacity]; used = 0; for (i = 0; i < arrsize; i++) push(a[i]); } //Деструктор ~stack(){delete[] items;} //Методи стеку //Заміна вершини void change_top(item it){ if (empty()!=1) items[used-1] = it; } //Очищення стеку void clear(){used=0;} //Перевірка чи стек порожній bool empty(){ if (used==0) return true; else return false; } //Розмір стеку int size(){return used;} //Вершина стеку item top(){ if(empty()!=1) return items[used - 1]; } //Занесення до стеку void push(item it){ if(size() < Capacity){ items[used] = it; used++; } } //Вилучення зі стеку void pop(){ if(empty()!=1) used--; } //Вивести вміст стеку void print(){ cout << "stack:"; if(empty()!=1) for(int i = 0; i < size(); i++) cout << items[i] << " " << "size:" << size()<<endl; else cout << " empty" << endl; } };
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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