Броят на числата, по-малки от последното

Да се въведат в стек n числа и да се отпечатат броят на тези, които са по-малки от последното.

Публикувано в 12а с етикети . Постоянна връзка.

6 Responses to Броят на числата, по-малки от последното

  1. Данаил каза:

    А ето и решение на подобна задача, което включва и кода за примерна реализация на стек.

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    // максимален брой елементи в стека
    const int N=50;
    
    // указател към върха на стека
    int br = 0;
    
    // масив за съхранение на елементите на стека
    int s[N];
    
    // инициализиране на стека
    void init()
    {
        br=0;
    }
    
    // проверка дали стека е празен
    bool isEmpty() {
        return br==0;
    }
    
    // проверка дали стека е пълен
    bool isFull() {
        return br==N;
    }
    
    // запис на стойност в стека
    bool push(int X)
    {
        bool ok = !isFull();
        if (ok){
            s[br] = X;
            br++;
        }
        return ok;
    }
    
    // извличане на стойност от стека
    bool pop(int &X)
    {
        bool ok = !isEmpty();
        if (ok) {
            br--;
            X = s[br];
        }
        return ok;
    }
    
    // печат на стека
    void print() {
        cout<<"top: |"<<br<<"|  stack: |";
        for(int i=0;i<br;i++) cout<<s[i]<<'|';
        cout<<endl;
    }
    
    // да се въведат в стек n числа и да се отпечатат тези, 
    // които са по-големи от последното
    int main ( )
    {
      int n;
      cout<<"vavedete n:";
      cin>>n;
      // инициализираме стека
      init(); 
      print();
      // въвеждаме числата
      int chislo;
      for(int i=1; i<=n; i++) {
        cin>>chislo;
        push(chislo);
      }
      print();
      // прочитаме последното
      int posledno;
      pop(posledno);
      cout<<"Po-golemite ot "<<posledno<<" sa:\n";
      // прочитаме останалите
      for(int i=1; i<n; i++) {
        pop(chislo);
        if(chislo>posledno)
          cout<<chislo<<endl;
      }
      print();
    
      system("pause");
      return 0;
    }
  2. maleboldjia каза:
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
    // максимален брой елементи в стека
    const int N=50;
     
    // указател към върха на стека
    int br=0;
     
    // масив за съхранение на елементите на стека
    int s[N];
     
    // инициализиране на стека
    void init()
    {
        br=0;
    }
     
    // проверка дали стека е празен
    bool isEmpty() {
        return br==0;
    }
     
    // проверка дали стека е пълен
    bool isFull() {
        return br==N;
    }
     
    // запис на стойност в стека
    bool push(int X)
    {
        bool ok=!isFull();
        if (ok){
            s[br]=X;
            br++;
        }
        return ok;
    }
     
    // извличане на стойност от стека
    bool pop(int &X)
    {
        bool ok=!isEmpty();
        if (ok) {
            br--;
            X=s[br];
        }
        return ok;
    }
     
    // печат на стека
    void print() {
        cout<<"top: |"<<br<<"|  stack: |";
        for(int i=0;i<br;i++) 
           cout<<s[i]<<'|';
        cout<<endl;
    }
    
    int main ( )
    {
      int n;
      cout<<"Vuvedete n:";
      cin>>n;
      // инициализираме стека
      init();
      print();
      // въвеждаме числата
      int chislo;
      for(int i=1; i<=n; i++) {
        cin>>chislo;
        push(chislo);
      }
      print();
      // прочитаме последното
      int posledno;
      pop(posledno);
      cout<<"Po-malkite ot "<<posledno<<" sa:\n";
      // прочитаме останалите
      for(int i=n; i>1; i--) {
        pop(chislo);
        if(chislo<posledno)
          cout<<chislo<<endl;
      }
      print();
     
      system("pause");
      return 0;
    }
    
  3. marant каза:
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
    const int N=50;
        int br = 0;
        int s[N];
            void init()
    {
        br=0;
    }
    
    bool isEmpty() {
        return br==0;
    }
    bool isFull() {
        return br==N;
    }
    
    bool push(int X)
    {
        bool ok = !isFull();
        if (ok){
            s[br] = X;
            br++;
        }
        return ok;
    }
    
    bool pop(int &X)
    {
        bool ok = !isEmpty();
        if (ok) {
            br--;
            X = s[br];
        }
        return ok;
    }
    
    void print() {
        cout<<"top: |"<<br<<"|  stack: |";
        for(int i=0;i<br;i++) cout<<s[i]<<'|';
        cout<<endl;
    }
    
    int main ( )
    {
      int n;
      cout<<"vavedete n:";
      cin>>n;
    
      init();
      print();
    
      int chislo;
      for(int i=1; i<=n; i++) {
        cin>>chislo;
        push(chislo);
      }
      print();
      
      int posledno;
      pop(posledno);
      cout<<"Po-malkite ot "<<posledno<<" sa:\n";
      
      for( int i=n-1 ; i>0; i--) {
        pop(chislo);
        if(chislo<posledno)
          cout<<chislo<<endl;
      }
      print();
     
      system("pause");
      return 0;
    }
    
  4. dreanor каза:
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
    
      // максимален брой елементи в стека
        const int N=50;
     
    class Stack
    {
        public:
        // указател към върха на стека
        int br;
        // масив за съхранение на елементите на стека
        int s[N];
        Stack();
        bool isEmpty() const;
        bool isFull() const;
        bool push(int X);
        bool pop(int &x);
        void print() const;
    };
    // инициализиране на стека
    Stack::Stack()
    {
        br=0;
    }
     
    // проверка дали стека е празен
    bool Stack::isEmpty() const {
        return br==0;
    }
     
    // проверка дали стека е пълен
    bool Stack::isFull() const {
        return br==N;
    }
     
    // запис на стойност в стека
    bool Stack::push(int X)
    {
        bool ok = !isFull();
        if (ok){
            s[br] = X;
            br++;
        }
        return ok;
    }
     
    // извличане на стойност от стека
    bool Stack::pop(int &X)
    {
        bool ok = !isEmpty();
        if (ok) {
            br--;
            X = s[br];
        }
        return ok;
    }
     
    // печат на стека
    void Stack::print() const {
        cout<<"top: |"<<br<<"|  stack: |";
        for(int i=0;i<br;i++) cout<<s[i]<<'|';
        cout<<endl;
    }
     
    // да се въведат в стек n числа и да се отпечатат тези, 
    // които са по-големи от последното
    int main ( )
    {
      int n;
      cout<<"vavedete n:";
      cin>>n;
      // инициализираме стека
      Stack stk; 
      stk.print();
      // въвеждаме числата
      int chislo;
      for(int i=1; i<=n; i++) {
        cin>>chislo;
        stk.push(chislo);
      }
      stk.print();
      // прочитаме последното
      int posledno, br=0;
      stk.pop(posledno);
      cout<<"Broqt na po-malkite ot "<<posledno<<" e:\n";
      // прочитаме останалите
      for(int i=1; i<n; i++) {
        stk.pop(chislo);
        if(chislo<posledno)
          br++;
      }
      cout<<br<<endl;
      stk.print();
     
      system("pause");
      return 0;
    }
    
  5. Emily каза:
     int main(int argc, char *argv[])
    {
        int n; //деклариране на променлива с име  n
        cout<<"Vuvedete n: "; // извеждане на текст на екрана
        cin>>n; //въвеждане на стойността на n от клавиатурата
        cout<<"Vuvedete chisla:"; // извеждане на текст на екрана 
        Stack stk, stk1; // деклариране на променливи от тип стек
        int chislo; // деклариране на променлива с име chislo
      for(int i=1; i<=n; i++) { // цикъл фор  
        cin>>chislo; // въвеждане на стойността на chislo от клавиатурата 
        stk.push(chislo);// запис на стойността на chislo в стека
      }
      stk.copy(stk1); // копиране на стека stk1
      stk1.print(); // печат на стека
      stk1.copy(stk);// копиране на стека stk
      stk.print(); // печат на стека
    

Вашият коментар