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


#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; }