Advertisement
Josif_tepe

Untitled

Mar 24th, 2025
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.72 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. const int max_size = 1000;
  4. // implementacija na stack
  5. struct stack {
  6.     int niza[max_size];
  7.     int idx;
  8.  
  9.     void init() {
  10.         idx = -1;
  11.     }
  12.  
  13.     bool isFull() {
  14.         if(idx == max_size - 1) {
  15.             return true;
  16.         }
  17.         else {
  18.             return false;
  19.         }
  20.     }
  21.  
  22.     bool isEmpty() {
  23.         if(idx == -1) {
  24.             return true;
  25.         }
  26.         else {
  27.             return false;
  28.         }
  29.     }
  30.     void push(int x) {
  31.         if(isFull() == true) {
  32.             cout << "stekot e poln" << endl;
  33.             exit(-1);
  34.         }
  35.         idx++;
  36.         niza[idx] = x;
  37.     }
  38.  
  39.     int pop() {
  40.         if(isEmpty() == true) {
  41.             cout << "stekot e prazen" << endl;
  42.             exit(-1);
  43.         }
  44.         int res = niza[idx];
  45.         idx--;
  46.         return res;
  47.     }
  48.     int top() {
  49.         if(isEmpty() == true) {
  50.             cout << "stekot e prazen" << endl;
  51.             exit(-1);
  52.         }
  53.         return niza[idx];
  54.     }
  55.  
  56.     int size() {
  57.         return idx + 1;
  58.     }
  59. };
  60. // pravime funkcija so argument stack
  61. void promeni(stack &s) {
  62.         // go inicijalizirame
  63.     stack pom1;
  64.     pom1.init();
  65.    
  66.  
  67.     // gi vadime elementite od stackot, i gi stavame vo pom1
  68.     while(s.isEmpty() == false) {
  69.         pom1.push(s.pop());
  70.     }
  71.  
  72.     // pravime drug pomosen stack
  73.     stack pom2;
  74.     pom2.init();
  75.  
  76.     // gi vadime elementite od pom1
  77.     while(pom1.isEmpty() == false) {
  78.        
  79.         // go gledame momentalniot element sto e na vrvot
  80.         int momemtanel = pom1.pop();
  81.  
  82.         // ako ima elementi vo pom2
  83.         if(pom2.isEmpty() == false) {
  84.             int delitel = pom2.top();
  85.             // proveruvame dali e ispolnet uslovot za delivost
  86.             if(momemtanel % delitel == 0) {
  87.                 // go dodavame na s, bidejki s e ispraznet
  88.                 s.push(momemtanel / delitel);
  89.             }
  90.         }
  91.         // go zacuvuvame kako prethodnik vo pom2
  92.         pom2.push(momemtanel);
  93.  
  94.         // proveruvame dali ne sme na posledniot elemenet
  95.         if(pom1.isEmpty() == false) {
  96.             // istata proverka za delivost
  97.             int sleden = pom1.top();
  98.             if(momemtanel % sleden == 0) {
  99.                 s.push(momemtanel / sleden);
  100.             }
  101.         }
  102.     }
  103. // go pecatime krajniot rezultat
  104.     while(s.isEmpty() == false) {
  105.         cout << s.pop() << " ";
  106.     }
  107.  
  108. }
  109.  
  110. int main() {
  111.     // kod daden od samata zadaca
  112.    stack m1;
  113.  
  114.     m1.init();
  115.  
  116.     m1.push(2);
  117.     m1.push(10);
  118.     m1.push(5);
  119.     m1.push(2);
  120.     m1.push(1);
  121.  
  122.     promeni(m1);
  123.  
  124.     while (!m1.isEmpty()) {
  125.         cout << m1.pop() << endl;
  126.     }
  127.  
  128.     return 0;
  129. }
  130.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement