Да се напише програма, която позволява да се въведат N на брой числа и след това извежда първо само положителните, а после само отрицателните числа от въведените.
По желание: Да се реши задачата в случая на въвеждане на числа до въвеждане на 0.
Да се напише програма, която позволява да се въведат N на брой числа и след това извежда първо само положителните, а после само отрицателните числа от въведените.
По желание: Да се реши задачата в случая на въвеждане на числа до въвеждане на 0.
Трябва да влезете, за да публикувате коментар.
С частта по желание :-)
#include <cstdlib> #include <iomanip> #include <iostream> using namespace std; using namespace std; // максимален брой елементи в опашката const int N=50; // указател към върха на опашката 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; } int main ( ) { // инициализираме опашката init(); int ch, br=0; //въвеждаме числата cout<<"Vavedete chisla(0 za krai)"<<endl; do{ cin>>ch; if(ch==0) break; else { push(ch); br++; } } while(true); //извеждаме положителните cout<<"Polojitelni:"<<endl; for(int i=0; i<br; i++){ pop(ch); if(ch>0) cout<<ch<<endl; else push(ch);//ако числото е отрицателно го връщаме в опашката } //извеждаме цялата опашка(в нея са останали само отрицателните числа) cout<<"Otricatelni:"<<endl; while(!isEmpty()){ pop(ch); cout<<ch<<endl; } cout<<endl; return 0; }Изхитрил си се да го направиш с една опашка само :-)
#include <cstdlib> #include <iostream> using namespace std; // максимален брой елементи в опашката const int N=50; // указател към върха на опашката 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; } int main(int argc, char** argv) { // инициализираме опашката init(); // въвеждаме числата int N, chislo; cout<<"Vavedete broq na chislata "<<endl; cin>>N; for(int i=0;i<N;i++) { cout<<"Vavedete chislo "<<endl; cin>>chislo; push(chislo); } //извеждане на положителните числа cout<<"Polojitelnite chisla sa: "<<endl; for(int i=0; i<N; i++){ pop(chislo); if(chislo>0) cout<<chislo<<endl; else push(chislo); } //извеждане на отрицателните числа cout<<"Otricatelnite chisla sa: "<<endl; while(!isEmpty()){ pop(chislo); cout<<chislo<<endl; } cout<<endl; return 0; }Браво, много добре!