Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<cstring>
- using namespace std;
- int const MAX = 100;
- class Stack
- {
- private:
- double *arr;
- int top;
- int Size;
- bool full() const;
- public:
- Stack();
- Stack(Stack const&);
- ~Stack();
- Stack& operator=(Stack const &);
- bool Empty() const;
- double peek() const;
- void push(double);
- double pop();
- };
- Stack::Stack()
- {
- Size = MAX;
- arr = new double[Size];
- top = -1;
- }
- Stack::Stack(Stack const& s) : Size(s.Size), top(s.top)
- {
- arr = new double[Size];
- for (int i = 0; i <= top; i++)
- arr[i] = s.arr[i];
- }
- Stack& Stack::operator=(Stack const& s) {
- if (this != &s) {
- Size = s.Size;
- top = s.top;
- delete[] arr;
- arr = new double[Size];
- for (int i = 0; i <= top; i++)
- arr[i] = s.arr[i];
- }
- return *this;
- }
- Stack::~Stack()
- {
- delete[] arr;
- }
- bool Stack::Empty() const
- {
- return top == -1;
- }
- double Stack::peek() const
- {
- if (Empty()) {
- cout << "You try to read from empty stack!\n";
- return 0;
- }
- return arr[top];
- }
- void Stack::push(double x) {
- if (full()) {
- cout << "The stack is full. You can push only 100 doubles!/n";
- }
- arr[++top] = x;
- }
- bool Stack::full() const {
- return top == Size - 1;
- }
- double Stack::pop() {
- if (Empty()) {
- cout << "You try to delete form empty stack!\n";
- return 0;
- }
- return arr[top--];
- }
- //#include<iostream>
- #include <stdlib.h>
- #include <stdio.h>
- #include <ctype.h>
- int MaxSize = 100;
- double PRNcalc(char arr[])
- {
- //std::cout<<"Niza e :"<<arr<<std::endl;
- char* buffer;
- double n;
- double d;
- int k=0;
- int Size = 100;
- //arr = new char[size];
- buffer = new char[Size];
- Stack NewSteak;
- char in;
- n = atof(buffer);
- for (int i = 0; i < strlen(arr); i++)
- {
- in = arr[i];
- //std::cout<<arr[i];
- buffer[k] = arr[i];
- k++;
- if (in == '+') {
- double a = NewSteak.peek();
- NewSteak.pop();
- double b = NewSteak.peek();
- NewSteak.pop();
- NewSteak.push(a + b);
- }
- else if (in == '-') {
- double a = NewSteak.peek();
- NewSteak.pop();
- double b = NewSteak.peek();
- NewSteak.pop();
- NewSteak.push(a - b);
- }
- else if (in == '*') {
- double a = NewSteak.peek();
- NewSteak.pop();
- double b = NewSteak.peek();
- NewSteak.pop();
- NewSteak.push(a * b);
- }
- else if (in == '/') {
- double a = NewSteak.peek();
- NewSteak.pop();
- double b = NewSteak.peek();
- NewSteak.pop();
- NewSteak.push(a / b);}
- if (isspace(in))
- {
- if (in == '+') {
- double a = NewSteak.peek();
- NewSteak.pop();
- double b = NewSteak.peek();
- NewSteak.pop();
- NewSteak.push(a + b);
- }
- else if (in == '-') {
- double a = NewSteak.peek();
- NewSteak.pop();
- double b = NewSteak.peek();
- NewSteak.pop();
- NewSteak.push(a - b);
- }
- else if (in == '*') {
- double a = NewSteak.peek();
- NewSteak.pop();
- double b = NewSteak.peek();
- NewSteak.pop();
- NewSteak.push(a * b);
- }
- else if (in == '/') {
- double a = NewSteak.peek();
- NewSteak.pop();
- double b = NewSteak.peek();
- NewSteak.pop();
- NewSteak.push(a / b);
- }
- else {
- n = atof(buffer);
- NewSteak.push(n);
- delete[] buffer;
- k=0;
- buffer = new char[Size];
- }}
- }
- d = NewSteak.peek();
- return d;
- }
- int main()
- {
- double PRNcalc(char arr[]);
- char arr[MAX];
- std::cout << "Enter the notation"<<std::endl;
- std::cin.getline(arr,100);
- std::cout<<"\nRESULT:"<<PRNcalc(arr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement