DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ  Лабораторна робота № 3 Структура даних СТЕК 1 Мета роботи: Вивчення фундаментальної абстрактної структури даних стек. Набуття практичних навичок побудови стека, дослідження динаміки його вмісту та використання стеків для розв'язання прикладних задач. 2 Постановка задачі: Написати програму для послiдовного зберiгання трьох стекiв в масивi з N елементiв (стеки розміщуються в масиві рівномірно один за одним). На вході задаються пари цiлих чисел (i,j), де 1 ( і ( 3 , j ( 0. Число j>0 пари (i,j) додається в i-ий стек; число j<0 пари (i,j) не використовується, але один елемент вилучається зі стеку. Після обробки всієї заданої вхідної послідовності знайти в якому стеку сума всіх парних чисел буде найменьшою. 3 Алгоритм роз’вязку задачі: Спочатку по черзі вносимо в масив з N елементів 3 стеки. На вході задаю пари цiлих чисел (i,j), де 1 ( і ( 3 , j ( 0. Число j>0 пари (i,j) додаю в i-ий стек; число j<0 пари (i,j) не використовується, але один елемент вилучаю зі стеку. Після обробки всієї заданої вхідної послідовності знахожу в якому стеку сума всіх парних чисел буде найменьшою. 4 Динаміка вмісту стеку: 5 Результати виконання програми:  Висновки: На цій лабораторній роботі я ознайомився з cтруктурою даних стек. Дослідив принципи і методи роботи зі стеком. Додатки: #include<stdio.h> #include<conio.h> #include<math.h> #include<string> using namespace std; #define n 10 int stk[n]={0}; int k=0,l=n/2,m=(n/3)*2; void push(int b,int a) { if (b==1) { if (k<n/3) { stk[k]=a; k++; } else printf("\nStack l overload\n"); } else if (b==2) { if (l<(n/3)*2) { stk[l]=a; l++; } else printf("\nStack 2 overload\n"); } else if (b==3) { if (m<n) { stk[m]=a; m++; } else printf("\nStack 3 overload\n"); } } void pop(int b) { if (b==1) { if (k>0) k--; else printf("\nStack 1 underflow\n"); } else if (b==2) { if (l>(n/3)) l--; else printf("\nStack 2 underflow\n"); } else if (b==3) { if (m>(n/3)*2) m--; else printf("\nStack 3 underflow\n"); } } int top(int b) { if (b==1) return stk[k-1]; else if (b==2) return stk[l-1]; else if (b==3) return stk[m-1]; } bool empty(int b) { if (b==1) { return (!(bool)k); } else if (b==2) { return (!(bool)(l>((10/3)))); } else if (b==3) { return (!((bool)(m>(n/3)*2))); } } bool full(int b) { return !empty(b); } void print() { for(int i=0;i<n;i++) printf("%d ",stk[i]); printf("\nk=%d l=%d m=%d\n",k,l,m); } void main() { int g[2][7]={{1,3,2,1,2,3,2},{2,8,3,6,8,7,1}}; for (int i=0;i<7;i++) { if (g[1][i]>0) push(g[0][i],g[1][i]); else pop(g[0][i]); print();} int sum1=0,sum2=0,sum3=0; while (!(empty(1))){ if (top(1)%2==0) sum1+=top(1); pop(1);} while (!(empty(2))){ if (top(2)%2==0) sum2+=top(2); pop(2);} while (!(empty(3))){ if (top(3)%2==0) sum3+=top(3); pop(3);} if (sum1>sum2 && sum1>sum3) printf("\nmax1=%d",sum1); else if (sum2>sum1 && sum2>sum3) printf("\nmax2=%d",sum2); else printf("\nmax3=%d",sum3); getch(); }
Антиботан аватар за замовчуванням

25.11.2012 18:41

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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