Казвано ли е такова число?

Да се напише програма, която позволява да се въведат N на брой числа и после пита за число и отпечатва „казвано е вече“, ако вече е въвеждано преди това.

По желание:

  1. Ако числото не е въвеждано дотогава, да изведе „ново число“
  2. Да позволи проверката да се прави за повече от едно числа (тоест например да въвеждаме числа до въвеждане на 0 и за всяко от тях да казваме имало ли го е в опашката или не).
Публикувано в 12а с етикети . Постоянна връзка.

One Response to Казвано ли е такова число?

  1. Данаил каза:
    #include <iostream>
    #include <iomanip>
    #include <windows.h>
      
    using namespace std;
      
    // максимален брой елементи в опашката
    const int N=5;
     
    class Queue
     {
       private:
         // указател към върха на опашката
         int head;
         // указател към края на опашката
         int tail;
         // масив за съхранение на елементите на опашката
         int s[N];
         // инициализиране на опашката
         void init();
       public:
         Queue();
         // проверка дали опашката е празна
         bool isEmpty(); 
         // проверка дали опашката е пълна
         bool isFull();
         // запис на стойност в опашката
         bool push(int X);
         // извличане на стойност от опашката
         bool pop(int &X);
         // печат на опашката
         void print();
    };
     
    Queue::Queue()
    {
      init();
    }
     
    // инициализиране на опашката
    void Queue::init()
    {
      head=0;
      tail=0;
      for(int i=0;i<=N;i++) s[i]=0;
    }
      
    // проверка дали опашката е празна
    bool Queue::isEmpty() {
      return head==tail;
    }
      
    // проверка дали опашката е пълна
    bool Queue ::isFull() {
      return ((tail+1)%N)==head;
    }
      
    // запис на стойност в опашката
    bool Queue::push(int X)
    {
      bool ok = !isFull();
      if (ok){
        s[tail] = X;
        tail++;
        tail%=N;
      }
      return ok;
    }
      
    // извличане на стойност от опашката
    bool Queue::pop(int &X)
    {
      bool ok = !isEmpty();
      if (ok) {
        X = s[head];
        head++;
        head%=N;
      }
      return ok;
    }
      
    // печат на опашката
    void Queue::print() {
      cout<<endl<<"head : "<<head<<" tail: "<<tail<<"\nqueue: | ";
      if(!isEmpty())
        if (head<=tail)
          for(int i=head;i<tail;i++) cout<<setw(3)<<s[i]<<" | ";
        else {
          for(int i=head;i<N;i++) cout<<setw(3)<<s[i]<<" | ";
          for(int i=0;i<tail;i++) cout<<setw(3)<<s[i]<<" | ";
        }
      cout<<endl<<"array: | ";
      for(int i=0;i<N;i++) cout<<setw(3)<<s[i]<<" | ";
      cout<<endl<<"index: | ";
      for(int i=0;i<N;i++) cout<<setw(3)<<i<<" | ";
      cout<<endl<<endl;
    }
      
    int main ( )
    {
      int n, x;
      Queue chisla;
      // въвеждаме числата
      cout<<"Vavedete broi elementi:";
      cin>>n;
      for(int i=0;i<n;i++) {
        cin>>x;
        chisla.push(x);
      }
      cout<<"Vavedete X:";
      cin>>x;
      // проверяваме дали го има Х
      int y;
      bool namereno=false;
      for(int i=0;i<n;i++) {
        chisla.pop(y);    
        if(x==y) {
          namereno=true;
          break;
        }
      }
      // отпечатваме резултата
      if(namereno) cout<<"Namereno e!\n";
      else cout<<"Ne e namereno!\n";
      
      system("pause");
      
    return 0;
    }

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