Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int max_size = 1000;
- // implementacija na stack
- struct stack {
- int niza[max_size];
- int idx;
- void init() {
- idx = -1;
- }
- bool isFull() {
- if(idx == max_size - 1) {
- return true;
- }
- else {
- return false;
- }
- }
- bool isEmpty() {
- if(idx == -1) {
- return true;
- }
- else {
- return false;
- }
- }
- void push(int x) {
- if(isFull() == true) {
- cout << "stekot e poln" << endl;
- exit(-1);
- }
- idx++;
- niza[idx] = x;
- }
- int pop() {
- if(isEmpty() == true) {
- cout << "stekot e prazen" << endl;
- exit(-1);
- }
- int res = niza[idx];
- idx--;
- return res;
- }
- int top() {
- if(isEmpty() == true) {
- cout << "stekot e prazen" << endl;
- exit(-1);
- }
- return niza[idx];
- }
- int size() {
- return idx + 1;
- }
- };
- // pravime funkcija so argument stack
- void promeni(stack &s) {
- // go inicijalizirame
- stack pom1;
- pom1.init();
- // gi vadime elementite od stackot, i gi stavame vo pom1
- while(s.isEmpty() == false) {
- pom1.push(s.pop());
- }
- // pravime drug pomosen stack
- stack pom2;
- pom2.init();
- // gi vadime elementite od pom1
- while(pom1.isEmpty() == false) {
- // go gledame momentalniot element sto e na vrvot
- int momemtanel = pom1.pop();
- // ako ima elementi vo pom2
- if(pom2.isEmpty() == false) {
- int delitel = pom2.top();
- // proveruvame dali e ispolnet uslovot za delivost
- if(momemtanel % delitel == 0) {
- // go dodavame na s, bidejki s e ispraznet
- s.push(momemtanel / delitel);
- }
- }
- // go zacuvuvame kako prethodnik vo pom2
- pom2.push(momemtanel);
- // proveruvame dali ne sme na posledniot elemenet
- if(pom1.isEmpty() == false) {
- // istata proverka za delivost
- int sleden = pom1.top();
- if(momemtanel % sleden == 0) {
- s.push(momemtanel / sleden);
- }
- }
- }
- // go pecatime krajniot rezultat
- while(s.isEmpty() == false) {
- cout << s.pop() << " ";
- }
- }
- int main() {
- // kod daden od samata zadaca
- stack m1;
- m1.init();
- m1.push(2);
- m1.push(10);
- m1.push(5);
- m1.push(2);
- m1.push(1);
- promeni(m1);
- while (!m1.isEmpty()) {
- cout << m1.pop() << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement