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

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

По желание: Ако числото не е въвеждано дотогава, да изведе „ново число“.

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

Един коментар по Казвано ли е такова число?

  1. Данаил каза:
    #include <cstdlib>
    #include <iomanip>
    #include <iostream>
    
    using namespace std;
    
    using namespace std;
    
    // максимален брой елементи в опашката
    const int N=20;
    
    // указател към върха на опашката
    int head = 0;
    // указател към края на опашката
    int tail = 0;
    
    // масив за съхранение на елементите на опашката
    int s[N];
    
    // инициализиране на опашката
    void init()
    {
        head=0;
        tail=0;
        for(int i=0;i<=N;i++) s[i]=0;
    }
    
    // проверка дали опашката е празна
    bool isEmpty() {
        return head==tail;
    }
    
    // проверка дали опашката е пълна
    bool isFull() {
        return ((tail+1)%N)==head;
    }
    
    // запис на стойност в опашката
    bool push(int X)
    {
        bool ok = !isFull();
        if (ok){
            s[tail] = X;
            tail++;
            tail%=N;
        }
        return ok;
    }
    
    // извличане на стойност от опашката
    bool pop(int &X)
    {
        bool ok = !isEmpty();
        if (ok) {
            X = s[head];
            head++;
            head%=N;
        }
        return ok;
    }
    
    // печат на опашката
    void print() {
        cout<<endl<<"head: |"<<head<<"| tail: |"<<tail<<"|\nqueue: | ";
        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<<endl;
    }
    
    int main ( )
    {
    // инициализираме опашката
    init();
    // да се въведат в опашката N на брой числа
    int N;
    cout<<"Vavedete N=";
    cin>>N;
    int chislo;
    for(int i=1;i<=N;i++) {
      cin>>chislo;
      push(chislo);
    }
    // пита за нови числа (до въвеждане на 0)
    int x;
    do {
      cout<<"Vavedete chislo ili 0 za krai:";
      cin>>chislo;
      // и отпечатва „казвано е вече“ за всяко число, което е въвеждано и преди това
      for(int i=1;i<=N;i++) {
        pop(x);
        push(x);
        if(x==chislo) {
          cout<<"Veche e sreshtano\n";
          break;
        }
      }
      // проверка защо е прекъснат цикъла
      if(x!=chislo) {
          cout<<"Novo chislo\n";
          push(chislo);
          N++;
        }
      print();
    }while(chislo);
     
    system("pause");
    return 0;
    }

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