Структура даних СТЕК

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

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

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КІ

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ  Лабораторна робота № 3 Структура даних СТЕК № варіанта = [(день народження) + (ASCII–код першої літери прізвища – велика латинська літера) ] % 21 + 1= (26+75)%21+1=18 1 Мета роботи: Вивчення фундаментальної абстрактної структури даних стек. Набуття практичних навичок побудови стека, дослідження динаміки його вмісту та використання стеків для розв'язання прикладних задач. 2 Постановка задачі: Написати програму, у якій числа вхідної послідовності циклічно розподіляються по трьом стекам. Всі додатні числа додаються в стек, а кожне від'ємне число вилучає зі стеку один елемент. Показати динаміку вмісту кожного стека. Після обробки всієї заданої вхідної послідовності визначити у якому стеку сума всіх чисел буде найбільшою. 3 Алгоритм роз’вязку задачі: Стек організовуємо у вигляді шаблонного класу. Це дає можливість працювати з усіма стандартними типами даних. Спочатку по черзі вносимо перший елемент в перший стек, другий елемент в другий стек, третій елемент в третій стек, і так робимо по порядку. 4 Динаміка вмісту стеку:  5 Результати виконання програми:  Висновки: На цій лабораторній роботі я ознайомився з cтруктурою даних стек. Дослідив принципи і методи роботи зі стеком. Додатки: #include <iostream> #include <conio.h> using namespace std; class stack { int i, st1[10],st2[10],st3[10], max1,max2,max3; int k, k1,k2,k3; public: void start() {k=1,k1=1,k2=1,k3=1,max1=max2=max3=0;} void push(int j) { i=j; if (k%3==1){ max1=i+max1; st1[k1]=i; k1++ ;} else if (k%3==2) { max2=i+max2; st2[k2]=i; k2++ ;} else if (k%3==0) { max3=i+max3; st3[k3]=i; k3++;} k++; } void pop() { if (k%3==1) { max1=max1-i; st1[k1]=0; k1--; } else if (k%3==2) { max2=max2-i; st2[k2]=0;k2--;} else if (k%3==0){ max2=max2-i; st3[k3]=0; k3--; } } void show_dynam() { if (k1>1) { cout<<" 1 stek :"; for (int i=1;i<k1;i++) cout<< st1[i]; cout<<endl; } if (k2>1) { cout<<" 2 stek :"; for (int i=1;i<k2;i++) cout<< st2[i]; cout<<endl; } if (k3>1) { cout<<" 3 stek :"; for (int i=1;i<k3;i++) cout<< st3[i]; cout<<endl; } cout<<"__________"<<endl; } int max_suma() { int temp=-10000; if (temp<max1) temp=max1; if(temp<max2) temp=max2; if (temp<max3) temp=max3; return temp; } int empty() { if (k==0) return 1; else return 0;} int show() { return st1[k-1]; } int size() { return k; } int top() { return st1[k-1]; } } ; int main() { int ar[10]={2, 5, 7, 2, 3, 4, -6, 7, 2,9}, dubl, temp=0, temp2; stack ob; ob.start(); for (int i=0;i<10;i++) { if (ar[i]>=0) ob.push(ar[i]); else ob.pop(); ob.show_dynam(); } cout<<"max znachennja ="<<ob.max_suma(); getch(); return 0; }
Антиботан аватар за замовчуванням

18.11.2012 16:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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