Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //программа стек:
- #pragma once
- class MyStack
- {
- public:
- MyStack();
- ~MyStack();
- void push(int value);
- void pop();
- bool empty();
- int top();
- int size();
- float average();
- private:
- struct Node
- {
- Node() : info(0), next(0)
- {
- }
- int info;
- Node *next;
- };
- Node *head, *work;
- int stackSize;
- };
- #include "MyStack.h"
- #include <iostream>
- using namespace std;
- MyStack::MyStack() : head(0), work(0)
- {
- }
- MyStack::~MyStack()
- {
- }
- void MyStack::push(int value)
- {
- Node* temp = new Node;
- temp->info = value;
- if (work == 0)
- {
- work = temp;
- }
- else
- {
- temp->next = work;
- work = temp;
- }
- stackSize++;
- }
- void MyStack::pop()
- {
- if (work == 0)
- {
- cout << "Stack is empty!\n";
- }
- else
- {
- Node* temp = work;
- work = work->next;
- delete temp;
- }
- stackSize--;
- }
- bool MyStack::empty()
- {
- if (work == 0)
- return true;
- else
- return false;
- }
- int MyStack::top()
- {
- return work->info;
- }
- int MyStack::size()
- {
- return stackSize;
- }
- float MyStack::average()
- {
- Node *temp = work;
- float sum = 0, i;
- for (i = 0; temp != 0; ++i) {
- sum += temp->info;
- temp = temp->next;
- }
- return sum / i;
- }
- // 13. Из числовой последовательности найти и удалить все элементы, лежащие в промежутке[A*X; B*X],
- //где X – среднее арифметическое элементов последовательности, A и B – задаваемые пользователем коэффициенты
- #include <iostream>
- #include "MyStack.h"
- #include <cstdlib>
- #include <clocale>
- using namespace std;
- int main() {
- setlocale(LC_ALL, "russian");
- MyStack obj1, obj2;
- int temp, A, B;
- cout << "Введите A: ";
- cin >> A;
- cout << "Введите B: ";
- cin >> B;
- cout << "Вводите числовую последовательность до (ctrl+z): ";
- while (cin >> temp) {
- obj1.push(temp);
- }
- float avg = obj1.average();
- while (!obj1.empty()) {
- temp = obj1.top();
- if (temp > float(A) * avg && temp < float(B) * avg) {
- obj1.pop();
- }
- else {
- obj2.push(temp);
- obj1.pop();
- }
- }
- cout << "Стек:";
- while (!obj2.empty()) {
- cout << " " << obj2.top();
- obj2.pop();
- }
- cout << endl;
- system("pause");
- return 0;
- }
- // стек из массива
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement