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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ  Лабораторна робота № 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:52

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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